mirror of https://github.com/ANL-CEEESA/RELOG.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.2 KiB
76 lines
2.2 KiB
#!/bin/bash
|
|
# UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment
|
|
# Copyright (C) 2020-2021, UChicago Argonne, LLC. All rights reserved.
|
|
# Released under the modified BSD license. See COPYING.md for more details.
|
|
|
|
if [ ! -e Project.toml ]; then
|
|
echo "juliaw: Project.toml not found"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -e Manifest.toml ]; then
|
|
julia --project=. -e 'using Pkg; Pkg.instantiate()' || exit 1
|
|
fi
|
|
|
|
if [ ! -e build/sysimage.so -o Project.toml -nt build/sysimage.so ]; then
|
|
echo "juliaw: rebuilding system image..."
|
|
|
|
# Generate temporary project folder
|
|
rm -rf $HOME/.juliaw
|
|
mkdir -p $HOME/.juliaw/src
|
|
cp Project.toml Manifest.toml $HOME/.juliaw
|
|
NAME=$(julia -e 'using TOML; toml = TOML.parsefile("Project.toml"); "name" in keys(toml) && print(toml["name"])')
|
|
if [ ! -z $NAME ]; then
|
|
cat > $HOME/.juliaw/src/$NAME.jl << EOF
|
|
module $NAME
|
|
end
|
|
EOF
|
|
fi
|
|
|
|
# Add PackageCompiler dependencies to temporary project
|
|
julia --project=$HOME/.juliaw -e 'using Pkg; Pkg.add(["PackageCompiler", "TOML", "Logging"])'
|
|
|
|
# Generate system image scripts
|
|
cat > $HOME/.juliaw/sysimage.jl << EOF
|
|
using PackageCompiler
|
|
using TOML
|
|
using Logging
|
|
|
|
Logging.disable_logging(Logging.Info)
|
|
mkpath("$PWD/build")
|
|
|
|
println("juliaw: generating precompilation statements...")
|
|
run(\`julia --project="$PWD" --trace-compile="$PWD"/build/precompile.jl \$(ARGS)\`)
|
|
|
|
println("juliaw: finding dependencies...")
|
|
project = TOML.parsefile("Project.toml")
|
|
manifest = TOML.parsefile("Manifest.toml")
|
|
deps = Symbol[]
|
|
for dep in keys(project["deps"])
|
|
if dep in keys(manifest)
|
|
# Up to Julia 1.6
|
|
dep_entry = manifest[dep][1]
|
|
else
|
|
# Julia 1.7+
|
|
dep_entry = manifest["deps"][dep][1]
|
|
end
|
|
if "path" in keys(dep_entry)
|
|
println(" - \$(dep) [skip]")
|
|
else
|
|
println(" - \$(dep)")
|
|
push!(deps, Symbol(dep))
|
|
end
|
|
end
|
|
|
|
println("juliaw: building system image...")
|
|
create_sysimage(
|
|
deps,
|
|
precompile_statements_file = "$PWD/build/precompile.jl",
|
|
sysimage_path = "$PWD/build/sysimage.so",
|
|
)
|
|
EOF
|
|
julia --project=$HOME/.juliaw $HOME/.juliaw/sysimage.jl $*
|
|
else
|
|
julia --project=. --sysimage build/sysimage.so $*
|
|
fi
|