-
Notifications
You must be signed in to change notification settings - Fork 539
/
build_tarballs.jl
78 lines (67 loc) · 2.67 KB
/
build_tarballs.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg
name = "NetCDF"
version = v"4.7.4"
# Collection of sources required to build NetCDF
sources = [
ArchiveSource("https://github.com/Unidata/netcdf-c/archive/v$(version).zip",
"170c9c9020f8909811b06e1034d5ea9288b3d5bd90793e3dd27490191faa7566")
]
# HDF5.h in /workspace/artifacts/805ccba77cd286c1afc127d1e45aae324b507973/include
# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir/netcdf-c-*
export CPPFLAGS="-I${includedir}"
export LDFLAGS="-L${libdir}"
export LDFLAGS_MAKE="${LDFLAGS}"
if [[ ${target} == *-mingw* ]]; then
export LIBS="-lhdf5-0 -lhdf5_hl-0 -lcurl-4 -lz"
# linking fails with: "libtool: error: can't build x86_64-w64-mingw32 shared library unless -no-undefined is specified"
# unless -no-undefined is added to LDFLAGS
LDFLAGS_MAKE="${LDFLAGS} ${LIBS} -no-undefined"
elif [[ "${target}" == *-apple-* ]]; then
# this file is referenced by hdf.h by not installed
touch ${includedir}/features.h
fi
./configure --prefix=${prefix} \
--build=${MACHTYPE} \
--host=${target} \
--disable-utilities \
--enable-shared \
--disable-static
make LDFLAGS="${LDFLAGS_MAKE}" -j${nproc}
make install
nc-config --all
"""
# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
# Set equal to the supported platforms in HDF5
platforms = [
Platform("x86_64", "linux"),
# HDF5_jll on armv7l should use the same glibc as the root filesystem
# before it can be used
# https://github.com/JuliaPackaging/Yggdrasil/pull/1090#discussion_r432683488
# Platform("armv7l", "linux"; libc="glibc"),
Platform("aarch64", "linux"; libc="glibc"),
Platform("x86_64", "macos"),
Platform("x86_64", "windows"),
Platform("i686", "windows"),
]
# The products that we will ensure are always built
products = [
LibraryProduct("libnetcdf", :libnetcdf)
]
# Dependencies that must be installed before this package can be built
dependencies = [
Dependency(PackageSpec(name="HDF5_jll", version="1.12.0")),
Dependency("Zlib_jll"),
Dependency("LibCURL_jll", v"7.71.1"),
# The following libraries are dependencies of LibCURL_jll which is now a
# stdlib, but the stdlib doesn't explicitly list its dependencies
Dependency("LibSSH2_jll", v"1.9.0"),
Dependency("MbedTLS_jll", v"2.16.8"),
Dependency("nghttp2_jll", v"1.40.0"),
]
# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies)