95 lines
3.9 KiB
Julia
95 lines
3.9 KiB
Julia
|
|
using BinaryProvider # requires BinaryProvider 0.3.0 or later
|
|
|
|
# If the environmental variable is set, obey that.
|
|
# Otherwise, use BinaryProvider `ffmpeg` if we cannot find
|
|
# a system version.
|
|
if get(ENV, "PLOTS_INSTALL_FFMPEG", "auto") == "true"
|
|
use_bp = true
|
|
elseif get(ENV, "PLOTS_INSTALL_FFMPEG", "auto") == "false"
|
|
use_bp = false
|
|
elseif get(ENV, "PLOTS_INSTALL_FFMPEG", "auto") == "auto"
|
|
if Sys.which("ffmpeg") === nothing
|
|
use_bp = true
|
|
else
|
|
use_bp = false
|
|
end
|
|
end
|
|
|
|
|
|
if use_bp
|
|
@info("Using BinaryProvider `ffmpeg`")
|
|
|
|
# Parse some basic command-line arguments
|
|
const verbose = "--verbose" in ARGS
|
|
const prefix = Prefix(get([a for a in ARGS if a != "--verbose"], 1, joinpath(@__DIR__, "usr")))
|
|
|
|
products = Product[
|
|
ExecutableProduct(prefix, "ffmpeg", :ffmpeg),
|
|
]
|
|
|
|
dependencies = [
|
|
"https://github.com/JuliaPackaging/Yggdrasil/releases/download/Bzip2-v1.0.6-2/build_Bzip2.v1.0.6.jl",
|
|
|
|
"https://github.com/ianshmean/ZlibBuilder/releases/download/v1.2.11/build_Zlib.v1.2.11.jl",
|
|
"https://github.com/SimonDanisch/FDKBuilder/releases/download/0.1.6/build_libfdk.v0.1.6.jl",
|
|
"https://github.com/SimonDanisch/FribidiBuilder/releases/download/0.14.0/build_fribidi.v0.14.0.jl",
|
|
"https://github.com/JuliaGraphics/FreeTypeBuilder/releases/download/v2.9.1-4/build_FreeType2.v2.10.0.jl",
|
|
"https://github.com/JuliaIO/LibassBuilder/releases/download/v0.14.0-2/build_libass.v0.14.0.jl",
|
|
|
|
"https://github.com/JuliaIO/LAMEBuilder/releases/download/v3.100.0-2/build_liblame.v3.100.0.jl",
|
|
|
|
"https://github.com/JuliaIO/OggBuilder/releases/download/v1.3.3-7/build_Ogg.v1.3.3.jl",
|
|
"https://github.com/JuliaIO/LibVorbisBuilder/releases/download/v1.3.6-2/build_libvorbis.v1.3.6.jl",
|
|
|
|
"https://github.com/JuliaIO/LibVPXBuilder/releases/download/v1.8.0/build_LibVPX.v1.8.0.jl",
|
|
"https://github.com/JuliaIO/x264Builder/releases/download/v2019.5.25-static/build_x264Builder.v2019.5.25.jl",
|
|
"https://github.com/JuliaIO/x265Builder/releases/download/v3.0.0-static/build_x265Builder.v3.0.0.jl",
|
|
|
|
"https://github.com/JuliaIO/FFMPEGBuilder/releases/download/v4.1.0/build_FFMPEG.v4.1.0.jl"
|
|
]
|
|
|
|
for dependency in dependencies
|
|
file = joinpath(@__DIR__, basename(dependency))
|
|
isfile(file) || download(dependency, file)
|
|
# it's a bit faster to run the build in an anonymous module instead of
|
|
# starting a new julia process
|
|
|
|
# Build the dependencies
|
|
Mod = @eval module Anon end
|
|
Mod.include(file)
|
|
end
|
|
|
|
write_deps_file(joinpath(@__DIR__, "binary_provider_deps.jl"), products)
|
|
|
|
else
|
|
@info("Using system `ffmpeg`. If you run into `ffmpeg`-related trouble, trying running `ENV[\"PLOTS_INSTALL_FFMPEG\"]=\"true\"; using Pkg; Pkg.build(\"Plots\")` to use `BinaryProvider`-provided `ffmpeg` instead.")
|
|
|
|
# if we're using the system `ffmpeg`, remove `binary_provider_deps.jl`,
|
|
# so the existence of that file is equivalent to using BinaryProvider.
|
|
# This lets us check if the file exists to know whether or not to
|
|
# call `check_deps` in `__init__()`, and to set the system fallback
|
|
# `const ffmpeg = "ffmpeg"` in Plots.jl.
|
|
if isfile("binary_provider_deps.jl")
|
|
rm("binary_provider_deps.jl")
|
|
end
|
|
end
|
|
|
|
#TODO: download https://cdn.plot.ly/plotly-latest.min.js to deps/ if it doesn't exist
|
|
file_path = ""
|
|
if get(ENV, "PLOTS_HOST_DEPENDENCY_LOCAL", "false") == "true"
|
|
global file_path
|
|
local_fn = joinpath(dirname(@__FILE__), "plotly-latest.min.js")
|
|
if !isfile(local_fn)
|
|
@info("Cannot find deps/plotly-latest.min.js... downloading latest version.")
|
|
download("https://cdn.plot.ly/plotly-latest.min.js", local_fn)
|
|
isfile(local_fn) && (file_path = local_fn)
|
|
else
|
|
file_path = local_fn
|
|
end
|
|
end
|
|
|
|
open("deps.jl", "w") do io
|
|
println(io, "const plotly_local_file_path = $(repr(file_path))")
|
|
end
|