]> git.sev.monster Git - dotfiles.git/commitdiff
zshenv: better perl setup, dont require local::lib
authorsev <git@sev.monster>
Mon, 14 Oct 2024 23:35:51 +0000 (18:35 -0500)
committersev <git@sev.monster>
Mon, 14 Oct 2024 23:35:51 +0000 (18:35 -0500)
etc/zsh/.zshenv

index 29f59e7375f8dc28af7b9fc1f866ba88f154d568..16bf106883dc25b52cc020e033bc646b077d1cc0 100644 (file)
@@ -294,11 +294,22 @@ if [[ ! -v GNUPGHOME ]] {
 }
 
 ## perl local lib
-[[ ! -v PERL_LOCAL_LIB_ROOT && -v commands[perl] &&
-   -d ${XDG_DATA_HOME:-~/.local/share}/perl5/lib/perl5 ]] &&
-  eval $(perl -I${XDG_DATA_HOME:-~/.local/share}/perl5/lib/perl5 \
-              -Mlocal::lib=${XDG_DATA_HOME:-~/.local/share}/perl5 2>/dev/null)
-
+if [[ ! -v PERL_LOCAL_LIB_ROOT && -v commands[perl] ]] {
+    _p5=${XDG_DATA_HOME:-~/.local/share}/perl5
+    [[ -d $_p5 ]] || mkdir -p $_p5
+    if [[ -f $_p5/lib/perl5/local/lib.pm ]] {
+        eval $(perl -I$_p5/lib/perl5 -Mlocal::lib=$_p5 2>/dev/null)
+    } else {
+        # emulate local::lib if not installed
+        path=($_p5/bin "${path[@]}")
+        export \
+          PERL_MB_OPT="--install_base '$_p5'" \
+          PERL_MM_OPT=INSTALL_BASE=$_p5 \
+          PERL5LIB=$_p5/lib/perl5 \
+          PERL_LOCAL_LIB_ROOT=$_p5${$PERL_LOCAL_LIB_ROOT:+:$PERL_LOCAL_LIB_ROOT}
+    }
+    unset _p5
+}
 ## go
 if [[ -v commands[go] ]] {
     [[ ! -v GOPATH ]] && export GOPATH=${XDG_DATA_HOME:-~/.local/share}/go:~/go
This page took 0.041078 seconds and 4 git commands to generate.