diff --git a/src/BinDeps.jl b/src/BinDeps.jl index 57392c4..1e67038 100644 --- a/src/BinDeps.jl +++ b/src/BinDeps.jl @@ -558,4 +558,10 @@ include("show.jl") @Base.deprecate_binding shlib_ext Libdl.dlext + +# Definitions that should be evaluated upon initialization, not stored in the cache +function __init__() + global const has_sudo = try success(`sudo -V`) catch err false end +end + end diff --git a/src/dependencies.jl b/src/dependencies.jl index 8cf1feb..7e0dc95 100644 --- a/src/dependencies.jl +++ b/src/dependencies.jl @@ -356,6 +356,7 @@ function provides{T}(::Type{T},providers::Dict; opts...) end end +sudoname(c::Cmd) = c == `` ? "" : "sudo " generate_steps(h::DependencyProvider,dep::LibraryDependency) = error("Must also pass provider options") generate_steps(h::BuildProcess,dep::LibraryDependency,opts) = h.steps @@ -364,9 +365,10 @@ function generate_steps(dep::LibraryDependency,h::AptGet,opts) error("Will not force apt-get to rebuild dependency \"$(dep.name)\".\n"* "Please make any necessary adjustments manually (This might just be a version upgrade)") end + sudo = get(opts, :sudo, has_sudo) ? `sudo` : `` @build_steps begin - println("Installing dependency $(h.package) via `sudo apt-get install $(h.package)`:") - `sudo apt-get install $(h.package)` + println("Installing dependency $(h.package) via `$(sudoname(sudo))apt-get install $(h.package)`:") + `$sudo apt-get install $(h.package)` ()->(ccall(:jl_read_sonames,Void,())) end end @@ -375,10 +377,10 @@ function generate_steps(dep::LibraryDependency,h::Yum,opts) error("Will not force yum to rebuild dependency \"$(dep.name)\".\n"* "Please make any necessary adjustments manually (This might just be a version upgrade)") end - + sudo = get(opts, :sudo, has_sudo) ? `sudo` : `` @build_steps begin - println("Installing dependency $(h.package) via `sudo yum install $(h.package)`:") - `sudo yum install $(h.package)` + println("Installing dependency $(h.package) via `$(sudoname(sudo))yum install $(h.package)`:") + `$sudo yum install $(h.package)` ()->(ccall(:jl_read_sonames,Void,())) end end @@ -387,9 +389,10 @@ function generate_steps(dep::LibraryDependency,h::Pacman,opts) error("Will not force pacman to rebuild dependency \"$(dep.name)\".\n"* "Please make any necessary adjustments manually (This might just be a version upgrade)") end + sudo = get(opts, :sudo, has_sudo) ? `sudo` : `` @build_steps begin - println("Installing dependency $(h.package) via `sudo pacman -S --needed $(h.package)`:") - `sudo pacman -S --needed $(h.package)` + println("Installing dependency $(h.package) via `$(sudoname(sudo))pacman -S --needed $(h.package)`:") + `$sudo pacman -S --needed $(h.package)` ()->(ccall(:jl_read_sonames,Void,())) end end @@ -398,9 +401,10 @@ function generate_steps(dep::LibraryDependency,h::Zypper,opts) error("Will not force zypper to rebuild dependency \"$(dep.name)\".\n"* "Please make any necessary adjustments manually (This might just be a version upgrade)") end + sudo = get(opts, :sudo, has_sudo) ? `sudo` : `` @build_steps begin - println("Installing dependency $(h.package) via `sudo zypper install $(h.package)`:") - `sudo zypper install $(h.package)` + println("Installing dependency $(h.package) via `$(sudoname(sudo))zypper install $(h.package)`:") + `$sudo zypper install $(h.package)` ()->(ccall(:jl_read_sonames,Void,())) end end @@ -409,9 +413,10 @@ function generate_steps(dep::LibraryDependency, p::BSDPkg, opts) error("Will not force pkg to rebuild dependency \"$(dep.name)\".\n" * "Please make any necessary adjustments manually. (This might just be a version upgrade.)") end + sudo = get(opts, :sudo, has_sudo) ? `sudo` : `` @build_steps begin - println("Installing dependency $(p.package) via `sudo pkg install -y $(p.package)`:`") - `sudo pkg install -y $(p.package)` + println("Installing dependency $(p.package) via `$(sudoname(sudo))pkg install -y $(p.package)`:`") + `$sudo pkg install -y $(p.package)` ()->(ccall(:jl_read_sonames, Void, ())) end end