commit ca8042154ff039ec253461933717efdf58861ffe
parent 324aa864105fc04eaa87ce44d662a1881fbe2e67
Author: Szymon Mikulicz <szymon.mikulicz@posteo.net>
Date: Wed, 18 Mar 2026 18:34:06 +0100
Rename to instow
Diffstat:
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)