lkjsadljkdsalkjdsa

This commit is contained in:
2025-03-24 17:42:28 +01:00
parent f415ec2a02
commit 2935a6e15f

107
justfile
View File

@@ -183,6 +183,55 @@ _build_packages $outdir +$attrpaths:
chmod +x "$outdir"/_rerun.sh
fd . "$outdir" -l
# TODO: use in 'bump'
[no-cd]
build-package-sources +packages:
#!/usr/bin/env -S bash -euo pipefail -x
[[ -e .git && -f flake.nix ]] || { printf >&2 "%s\n" "ERROR: not in repo root!"; false; }
declare packages=("$@")
# TODO: allow selecting different names than result-src and results-src-writeable
just _build_packages results-src "${packages[@]/%/.src}"
[[ -d results-src-writeable ]] && rm -rf results-src-writeable ||:
mkdir -p results-src-writeable
for result in results-src/* ; do
[[ -L "$result" ]] || continue
result_writeable=results-src-writeable/"$(basename "$result")"
mkdir -p "$result_writeable"
if [[ -d "$(readlink "$result")" ]]; then
rsync -rxL "$result/" "$result_writeable/" &&
chmod -R +w "$result_writeable/" ||:
elif [[ -f "$(readlink "$result")" ]]; then
atool "$(readlink "$result")" --extract-to="$result_writeable/" ||:
if [[ $(ls --almost-all "$result_writeable" | wc -l ) -eq 1 ]] && test -d "$result_writeable"/*; then
mv "$result_writeable"{,-old}
mv "$result_writeable"-old/* "$result_writeable"
rmdir "$result_writeable"-old
fi
fi
(
# todo: should i eval nix and query for upstream remote and ref?
cd "$result_writeable"
$GIT init
$GIT add .
$GIT commit -m "Base" >/dev/null
) ||:
done
{
# printf "#!/usr/bin/env -S nom-build\n"
printf "#!/usr/bin/env -S nom build -f\n"
printf "let pkgs = import ./. { }; in {\n"
for package in "${packages[@]}"; do
# printf " # ./build.nix -A %q" "$package"
printf " # ./build.nix %q\n" "$package"
printf " %s = pkgs.%s.overrideAttrs { src = ./results-src-writeable/%s.src; };\n" "$package" "$package" "$package"
done
printf "}\n"
# printf "# ./build.nix$(printf " -A %q" "${packages[@]}")\n"
printf "# ./build.nix$(printf " %q" "${packages[@]}")\n"
printf "# ./build.nix\n"
} >build.nix
chmod +x build.nix
@build-pr-packages $pr=`just _a_pr` $merge=`gum choose --header="which refs/pull/<id>/xxx ?" merge head` $attrpaths=`just _some_packages` $args=`gum choose --no-limit -- -j0 "--system "{aarch64,x86_64}-{darwin,linux} --rebuild`:
-printf "github:nixos/nixpkgs/refs/pull/"$(just _sanitize_pr_url "$pr")"/$merge#%s" $attrpaths | xargs echo + nom build $args
-(printf "github:nixos/nixpkgs/refs/pull/"$(just _sanitize_pr_url "$pr")"/$merge#%s" $attrpaths | xargs nom build $args) || true
@@ -280,55 +329,27 @@ _bump +$packages:
$GIT diff
printf "delta results-src-{old,new}/%s/.\n" "$@"
@fix +packages:
[[ $# -gt 0 ]] || set -- $(just _some_packages); \
cd "$(just _new_worktree fix "$(echo "$package" | rev | cut -d. -f1 | rev)")"; \
just _fix "$package" && $SHELL
fix *packages:
#!/usr/bin/env -S bash -euo pipefail
declare packages=("$@")
[[ "${#packages[@]}" -gt 0 ]] || packages=($(just _some_packages))
[[ "${#packages[@]}" -gt 0 ]] || { printf >&2 "%s\n" "ERROR: no packages chosen..."; false; }
cd "$(just _new_worktree fix "$(echo "${packages[0]}" | rev | cut -d. -f1 | rev)")"
just _fix "${packages[@]}" ||:
$SHELL
[no-cd]
_fix +packages:
#!/usr/bin/env -S bash -euo pipefail
[[ -e .git && flake.nix ]]
local packages=("$@")
just _build_packages results-src "${packages[@]/%/.src}" ||:
# TODO: make this rutine reuseable?
mkdir -p result-src-writeable
for result in results-src/*; do;
result_writeable=result-src-writeable/$(basename "$result")
mkdir -p "$result_writeable"
if [[ -d $(readlink "$result") ]]; then
rsync -rxL "$result/" "$result_writeable/" &&
chmod -R +w "$result_writeable/" ||:
elif [[ -f $(readlink "$result") ]]; then
atool "$(readlink result-src)" --extract-to="$result_writeable/" ||:
if [[ $(ls "$result_writeable" | wc -l ) -eq 1 && test -d "$result_writeable"/* ]]; then
mv "$result_writeable"{,-old}
mv "$result_writeable"-old/* "$result_writeable"
rmdir "$result_writeable"-old
fi
fi
(
cd "$result_writeable"
$GIT init
$GIT add .
$GIT commit -m "Base" >/dev/null
) ||:
done
printf >build.nix "#!/usr/bin/env -S nom build -f\n"
printf >build.nix "let pkgs = import ./. { }; in {\n%s\n}\n" "$(
for package in "${packages[@]}"; do
printf " %s = pkgs.%s.overrideAttrs { src = ./result-src-writeable/%s-src; };" "$package" "$package" "$package"
done
)"
chmod +x build.nix
[[ -e .git && -f flake.nix ]] || { printf >&2 "%s\n" "ERROR: not in repo root!"; false; }
declare packages=("$@")
just build-package-sources "${packages[@]}"
NIXPKGS_ALLOW_UNFREE=1 just build-packages "${packages[@]}" ||:
if command -v bat >/dev/null;
then bat build.nix
then bat build.nix --style header-filename
else cat build.nix
fi
NIXPKGS_ALLOW_UNFREE=1 just build-packages "${packages[@]}" ||:
echo "# $package"
echo " ./build.nix "${packages[*]/#/-A }"
echo " ./results/_rerun.sh"
echo "./results/_rerun.sh --system $(nix config show system)"
pr $number=`just _a_pr`:
#!/usr/bin/env -S bash -euo pipefail
@@ -587,7 +608,7 @@ _mk_clean_list:
cd "$path"
! $GIT diff HEAD --quiet --exit-code >&/dev/null ||
$GIT ls-files --others --exclude-standard |
grep -qEv '^(update-executables\.txt|results|build\.nix|(asd|do|foo|test|spismeg|packages)[2-9]?.(sh|txt|json)|eval.json|[^/]*\.log)$'
grep -qEv '^(update-executables\.txt|results(-.*)?|build\.nix|(asd|do|foo|test|spismeg|packages)[2-9]?\.(sh|txt|json)|(eval|packages)\.json|[^/]*\.log)$'
) ; then
continue
fi