So I wanted to move all my common Julia code to a support dir. My filesystem has for 30+ years contained:
$HOME/
Code/
CodeC/
foo/
src/
bar.c
CodeJava/
foo/
src/
com/
mdh/
bar/
Quux.java
et fucking cetera
Build scripts for most languages expect something very like this, and it's easy to import one package's source into another, so I could put common code in a "Marklib" project, and get work done.
Making this happen in Julia was a lot more difficult. With a little help from Slack I made sense of the terrible package documentation for Julia and the incomprehensible errors, and wrote a script juliaMakePackage.zsh
:
#!/bin/zsh
if [[ $# -ne 1 ]]; then
echo "Usage: juliaMakePackage.zsh NAME"
exit 1
fi
name=$1
devdir=$HOME/Code/CodeJulia
cd $devdir
julia -E "using Pkg; Pkg.activate(\".\"); Pkg.generate(\"${name}\")"
cd $name
git init
git add .
git commit -m "Initial commit"
cd ..
julia -E "using Pkg; Pkg.develop(PackageSpec(url=\"${devdir}/${name}\"))"
And then added the main dir and all packages I make to ~/.julia/config/startup.jl
:
# startup.jl
push!(LOAD_PATH, pwd())
push!(LOAD_PATH, "$(homedir())/Code/CodeJulia")
push!(LOAD_PATH, "$(homedir())/Code/CodeJulia/Marklib")
println("READY $(pwd())")
Now finally I can:
% julia
READY /Users/mdh
julia> using Marklib
julia> Marklib.greet()
Hello World!
julia>
And from there start putting in my libs. Each one needs a package and a startup entry; I may have to automate that by walking my code dir. Waste of several hours figuring that out.
Comments are closed.
Mentions