diff --git a/Makefile b/Makefile index 95a030b..76dd636 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/src/utils/sysimage.jl b/src/utils/sysimage.jl index a82b64f..b64d0ff 100644 --- a/src/utils/sysimage.jl +++ b/src/utils/sysimage.jl @@ -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") + +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 -@info "Building system image..." +println("Building system image...") create_sysimage( - pkg, + deps, precompile_statements_file = "build/precompile.jl", sysimage_path = "build/sysimage.so", )