instow

:)
git clone https://git.sr.ht/~ashymad/instow
Log | Files | Refs | LICENSE

commit ca8042154ff039ec253461933717efdf58861ffe
parent 324aa864105fc04eaa87ce44d662a1881fbe2e67
Author: Szymon Mikulicz <szymon.mikulicz@posteo.net>
Date:   Wed, 18 Mar 2026 18:34:06 +0100

Rename to instow

Diffstat:
M.gitignore | 2+-
Mbootstrap.sh | 20++++++++++----------
Ainstow | 8++++++++
Dinstowl | 6------
Dinstowl.local | 6------
Dinstowl.sh | 179-------------------------------------------------------------------------------
Mproject.janet | 10+++++-----
Asrc/instowl.log | 3+++
Msrc/main.janet | 16++++++++--------
9 files changed, 35 insertions(+), 215 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,4 +1,4 @@ -instowl.log +instow.log build/ src/native/nftw.so -I/home/szymon/.local/include diff --git a/bootstrap.sh b/bootstrap.sh @@ -4,10 +4,10 @@ set -e BOOTDIR="$PWD" -PREFIX="${PREFIX:-$HOME/.local}" +PREFIX="${PREFIX:-$HOME/.instow}" -SRCDIR="${SRCDIR:-$PREFIX/src}" -PKGDIR="${PKGDIR:-$PREFIX/pkg}" +SRCDIR="${SRCDIR:-$PREFIX/var/src}" +PKGDIR="${PKGDIR:-$PREFIX/var/pkg}" mkdir -p "$SRCDIR" mkdir -p "$PKGDIR" @@ -32,23 +32,23 @@ cp -r "$ROOTDIR/$ROOTDIR/"* "$ROOTDIR/" popd popd -echo "[5/9] Building instowl" +echo "[5/9] Building instow" "$ROOTDIR/bin/jpm" build pushd "$SRCDIR/janet" -echo "[6/9] Instowling janet" -JPM="$ROOTDIR/bin/jpm" "$ROOTDIR/bin/janet" "$BOOTDIR/instowl.local" +echo "[6/9] Instowing janet" +JPM="$ROOTDIR/bin/jpm" "$ROOTDIR/bin/janet" "$BOOTDIR/instow" popd pushd "$SRCDIR/jpm" -echo "[7/9] Instowling jpm" -JPM="$ROOTDIR/bin/jpm" "$BOOTDIR/instowl.local" +echo "[7/9] Instowing jpm" +JPM="$ROOTDIR/bin/jpm" "$BOOTDIR/instow" popd -echo "[8/9] Instowling instowl" -./instowl.local +echo "[8/9] Instowing instow" +./instow echo "[9/9] Cleanup" rm -rf "$ROOTDIR" diff --git a/instow b/instow @@ -0,0 +1,8 @@ +#!/usr/bin/env janet + +(try + (import instow/main) + ([a b] (import ./src/main))) + +(defn main [& args] + (main/main ;args)) diff --git a/instowl b/instowl @@ -1,6 +0,0 @@ -#!/usr/bin/env janet - -(import instowl/main) - -(defn main [& args] - (main/main ;args)) diff --git a/instowl.local b/instowl.local @@ -1,6 +0,0 @@ -#!/usr/bin/env janet - -(import ./src/main) - -(defn main [& args] - (main/main ;args)) diff --git a/instowl.sh b/instowl.sh @@ -1,179 +0,0 @@ -#!/usr/bin/bash - -shopt -s dotglob - -export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig/ -export CFLAGS="-idirafter $HOME/.local/include" -export PERL5LIB="$HOME/.local/lib/perl5/" - -state="init" -install_state="make_install" - -main() { - local dir="$HOME/.local" - local target="$dir" - local stowdir="$dir/pkg" - local pkg="${pkg:-$(basename "$PWD")}" - local prefix="" - local pkgdir="$dir/pkg/$pkg" - local destdir="$pkgdir" - local builddir="$PWD" - local makeflags=("-j$(nproc)") - - while [[ "$state" != "exit" ]]; do - echo "STATE $state" - - case "$state" in - init) - if [ -f configure ]; then - state="configure" - elif [ -f "$builddir/Makefile" ]; then - state="make" - elif [ -x autogen.sh ]; then - state="autogen" - elif [ -f CMakeLists.txt ]; then - state="cmake" - elif [ -f Cargo.toml ]; then - state="cargo" - elif [ -f Build.PL ]; then - state="perl" - elif [ -f go.mod ]; then - state="go" - elif [ -f requirements.txt ]; then - state="python" - fi - ;; - autogen) - ./autogen.sh - state="configure" - ;; - configure) - prefix="$dir" - ./configure --prefix="$prefix" || return 1 - state="make" - ;; - cmake) - mkdir -pv build - builddir="$PWD/build" - prefix="$dir" - cmake -S "$PWD" -B "$builddir" -DCMAKE_INSTALL_PREFIX="$prefix" -DCMAKE_BUILD_TYPE=RelWithDebInfo || return 1 - state="make" - ;; - make) - if grep -q "CMAKE_INSTALL_PREFIX" "$builddir/Makefile"; then - prefix="$dir" - makeflags+=("CMAKE_INSTALL_PREFIX=$prefix") - fi - - make -C "$builddir" "${makeflags[@]}" || return 2 - state="pre_install" - ;; - pre_install) - mkdir -vp "$pkgdir" - if [ -n "$prefix" ]; then - destdir="$(mktemp -d)" - trap "rm -rf $destdir" RETURN - fi - state="${install_state}" - ;; - make_install) - PREFIX="$prefix" make -C "$builddir" install DESTDIR="$destdir" || return 3 - state="post_install" - ;; - perl) - perl ./Build.PL || return 2 - prefix="$dir" - install_state="perl_install" - state="pre_install" - ;; - go) - go build || return 2 - install_state="go_install" - state="pre_install" - ;; - perl_install) - ./Build install --install_base "$prefix" --destdir "$destdir" || return 3 - state="post_install" - ;; - python) - prefix="$dir" - python3 -m build --wheel --no-isolation - install_state="python_install" - state="pre_install" - ;; - post_install) - if [ -n "$prefix" ]; then - [ -d "$destdir$prefix" ] || { - echo "Didn't find the right prefix" - find "$destdir" - exit 1 - } - find "$destdir$prefix$postfix" \( -type f -o -type l \) -printf "%P\n" | xargs -I{} install -Dpv "$destdir$prefix$postfix/{}" "$pkgdir/{}" - fi - state="stow" - ;; - cargo) - install_state="cargo_install" - state="pre_install" - ;; - cargo_install) - cargo install --force --locked --no-track --root "$pkgdir" --path . || return 3 - state="post_install" - ;; - python_install) - python3 -m installer --destdir="$destdir" --prefix="$prefix" dist/*.whl - postfix="/local" - state="post_install" - ;; - go_install) - GOPATH="$pkgdir" go install - state="post_install" - ;; - stow) - stow -vv -d "$stowdir" -t "$target" "$pkg" - state="exit" - ;; - esac - done -} - -printer() { - local chr="\\" - while read line; do - case "$chr" in - "\\") chr="|" ;; - "|") chr="/" ;; - "/") chr="-" ;; - "-") chr="\\" ;; - esac - - if [[ $(awk '{print $1}' <<< "$line") == "STATE" ]]; then - state="$(awk '{print $2}' <<< "$line")" - else - pretext="\33[2K\r[$chr] [$state] " - printf "$pretext%s" "$(cut -c -"$(( $(tput cols) - $(wc -c <<< "$pretext") - 3 ))" <<< "$line")" - fi - echo "$line" >> instowl.log - done -} - -fifo="/tmp/fifo-$RANDOM" -mkfifo "$fifo" && trap "rm $fifo" EXIT - -echo "" > instowl.log - -printer < "$fifo" & -pid="$!" -main &> "$fifo" -ret="$?" - -wait "$pid" - -if [[ $ret == 0 ]]; then - printf "\33[2K\r[x] Done\n" -else - printf "\33[2K\r" - tail instowl.log - echo "[!] Error" - exit 4 -fi diff --git a/project.janet b/project.janet @@ -1,18 +1,18 @@ (declare-project - :name "instowl") + :name "instow") (declare-binscript - :main "instowl" + :main "instow" :hardcode-syspath true :is-janet true) (declare-native - :name "instowl/native/nftw" + :name "instow/native/nftw" :source ["src/native/nftw.c" "src/native/os.c"]) (declare-source - :prefix "instowl" + :prefix "instow" :source ["src/file.janet" "src/main.janet" "src/libc.janet" @@ -20,7 +20,7 @@ "src/utils.janet"]) (def linkpath "src/native/nftw.so") -(def buildpath (string/join [(os/getenv "PWD") "/build/instowl/native/nftw.so"])) +(def buildpath (string/join [(os/getenv "PWD") "/build/instow/native/nftw.so"])) (def linkto (try (os/readlink linkpath) ([e f] nil))) (if (not= linkto buildpath ) diff --git a/src/instowl.log b/src/instowl.log @@ -0,0 +1,3 @@ +STATE: init +STATE: error +STATE: cleanup diff --git a/src/main.janet b/src/main.janet @@ -41,7 +41,7 @@ (set state :error))) (defn runp [state env & args] - (def log_file (file/open "./instowl.log" :a)) + (def log_file (file/open "./instow.log" :a)) (file/write log_file (string/join ["RUN:" ;args "\n"] " ")) (def proc (os/spawn args :e env)) (ev/gather @@ -75,11 +75,11 @@ (defn main [& args] (def home (os/getenv "HOME")) - (def target (path/join home ".local")) - (def stowdir (path/join target "pkg")) + (def target (path/join home ".instow")) + (def stowdir (path/join target "var" "pkg")) (def pkg (libc/basename (os/getenv "PWD"))) (def pkgdir (path/join stowdir pkg)) - (def destdir (libc/mkdtemp "/tmp/instowl.XXXXXX")) + (def destdir (libc/mkdtemp "/tmp/instow.XXXXXX")) (def env (os/environ)) (merge-into env {:err :pipe @@ -99,10 +99,10 @@ (var prefix target) (var builddir ".") - (if (file/file-exists? "./instowl.log") (os/rm "./instowl.log")) + (if (file/file-exists? "./instow.log") (os/rm "./instow.log")) (while (not= state :exit) - (let [log_file (file/open "./instowl.log" :a)] + (let [log_file (file/open "./instow.log" :a)] (file/write log_file (string/join ["STATE:" state "\n"] " ")) (file/close log_file)) (case state @@ -200,7 +200,7 @@ (stropt "--manpath" (path/join prefix "share" "man" "man1")) (stropt "--modpath" (path/join prefix "lib" "janet")) (stropt "--libpath" (path/join prefix "lib")) - (stropt "--headerpath" (path/join prefix "include")) + (stropt "--headerpath" (path/join prefix "include" "janet")) "install") :install/cargo @@ -225,7 +225,7 @@ (set state :move)) :move - (let [log_file (file/open "./instowl.log" :a) + (let [log_file (file/open "./instow.log" :a) installdir (path/join destdir prefix)] (set state :stow) (if (file/dir-exists? installdir)