Improve sysimage.jl

This commit is contained in:
2021-08-20 06:32:27 -05:00
parent 5418a40a7d
commit 987f410520
2 changed files with 31 additions and 43 deletions

View File

@@ -1,17 +1,16 @@
# UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details.
# MIPLearn: Extensible Framework for Learning-Enhanced Mixed-Integer Optimization
# Copyright (C) 2020-2021, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details.
JULIA := julia --color=yes --project=@.
VERSION := 0.2
build/sysimage.so: src/utils/sysimage.jl Project.toml Manifest.toml
mkdir -p build
$(JULIA) --trace-compile=build/precompile.jl test/runtests.jl
$(JULIA) src/utils/sysimage.jl
build/sysimage.so: src/utils/sysimage.jl Project.toml
julia --project=. -e "using Pkg; Pkg.instantiate()"
$(JULIA) src/utils/sysimage.jl test/runtests.jl
clean:
rm -rf build/*
rm -rfv build/*
test: build/sysimage.so
$(JULIA) --sysimage build/sysimage.so test/runtests.jl

View File

@@ -1,44 +1,33 @@
# MIPLearn: Extensible Framework for Learning-Enhanced Mixed-Integer Optimization
# Copyright (C) 2020-2021, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details.
# UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details.
using PackageCompiler
using Cbc
using Clp
using Conda
using CSV
using DataFrames
using Distributed
using JLD2
using JSON
using JuMP
using TOML
using Logging
using MathOptInterface
using Printf
using PyCall
using TimerOutputs
pkg = [
:Cbc
:Clp
:Conda
:CSV
:DataFrames
:Distributed
:JLD2
:JSON
:JuMP
:Logging
:MathOptInterface
:Printf
:PyCall
:TimerOutputs
]
Logging.disable_logging(Logging.Info)
mkpath("build")
@info "Building system image..."
println("Generating precompilation statements...")
run(`julia --project=. --trace-compile=build/precompile.jl $(ARGS)`)
println("Finding dependencies...")
project = TOML.parsefile("Project.toml")
manifest = TOML.parsefile("Manifest.toml")
deps = Symbol[]
for dep in keys(project["deps"])
if "path" in keys(manifest[dep][1])
println(" - $(dep) [skip]")
else
println(" - $(dep)")
push!(deps, Symbol(dep))
end
end
println("Building system image...")
create_sysimage(
pkg,
deps,
precompile_statements_file = "build/precompile.jl",
sysimage_path = "build/sysimage.so",
)