Skip to content

Commit 5a5ca03

Browse files
committed
[Uno] Release 2.7.1
1 parent ecf848f commit 5a5ca03

4 files changed

Lines changed: 100 additions & 56 deletions

File tree

.github/julia/build_tarballs_release.jl

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,18 @@ version = VersionNumber(ENV["UNO_RELEASE"])
1010
# Collection of sources required to complete build
1111
sources = [
1212
GitSource(ENV["UNO_URL"], ENV["UNO_COMMIT"]),
13-
# v2025.9.18
13+
# SPRAL v2025.9.18
1414
GitSource("https://github.com/ralna/spral.git",
15-
"e68988612dbd920323cee44c9cb8c6134847a990"),
16-
# v5.8.2
15+
"80bc843ac3847d4a783a0e11213715a70175aee6"),
16+
# MUMPS v5.8.2
1717
ArchiveSource("https://mumps-solver.org/MUMPS_5.8.2.tar.gz",
1818
"eb515aa688e6dbab414bb6e889ff4c8b23f1691a843c68da5230a33ac4db7039"),
19+
# HiGHS v1.14.0 with symbol mangling
20+
GitSource("https://github.com/ERGO-Code/HiGHS.git",
21+
"f65a6838e3daa4fa23f06ffffc7c895370dbd3dc"),
22+
# Hwloc v2.13.0
23+
ArchiveSource("https://download.open-mpi.org/release/hwloc/v2.13/hwloc-2.13.0.tar.bz2",
24+
"52e936afb6ebd80f171f763fcf14f7b1f5ce98b125af5dd2f328b873b1fd0dab"),
1925
]
2026

2127
# Bash recipe for building across all platforms
@@ -33,6 +39,10 @@ for file in $(ls .); do
3339
fi
3440
done
3541
42+
if [[ "${target}" == *-mingw* ]]; then
43+
cp ${prefix}/lib/libbqpd.a ${prefix}/lib/libbqpd.a
44+
fi
45+
3646
cd ${prefix}
3747
cp -rL share/licenses deps/licenses
3848
mkdir deps/licenses/MUMPS
@@ -92,6 +102,12 @@ cp include/*.h ${includedir}
92102
cp libseq/*.h ${includedir}/libseq
93103
cp lib/*.${dlext} ${libdir}
94104
105+
# Compile Hwloc
106+
cd $WORKSPACE/srcdir/hwloc-*
107+
./configure --prefix=${prefix} --build=${MACHTYPE} --host=${target} --disable-static --enable-shared
108+
make -j${nproc}
109+
make install
110+
95111
# Compile SPRAL
96112
cd $WORKSPACE/srcdir/spral
97113
@@ -106,12 +122,42 @@ meson setup builddir --cross-file="${MESON_TARGET_TOOLCHAIN}" \
106122
-Dlibhwloc=$HWLOC \
107123
-Dlibblas=openblas \
108124
-Dliblapack=openblas \
125+
-Dbinaries=false \
109126
-Dtests=false \
110127
-Dexamples=false
111128
112129
meson compile -C builddir
113130
meson install -C builddir
114131
132+
# Compile HiGHS
133+
cd $WORKSPACE/srcdir/HiGHS
134+
135+
mkdir build
136+
cd build
137+
cmake .. \
138+
-DCMAKE_INSTALL_PREFIX=${prefix} \
139+
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
140+
-DCMAKE_BUILD_TYPE=Release \
141+
-DBUILD_SHARED_LIBS=ON \
142+
-DZLIB=OFF \
143+
-DHIPO=ON \
144+
-DBUILD_EXAMPLES=OFF \
145+
-DBUILD_TESTING=OFF \
146+
-DBUILD_CXX_EXE=OFF \
147+
-DBLAS_LIBRARIES=${libdir}/libopenblas.${dlext} \
148+
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
149+
150+
if [[ "${target}" == *-linux* ]]; then
151+
make -j ${nproc}
152+
else
153+
if [[ "${target}" == *-mingw* ]]; then
154+
cmake --build . --config Release
155+
else
156+
cmake --build . --config Release --parallel
157+
fi
158+
fi
159+
make install
160+
115161
# Compile Uno
116162
cd $WORKSPACE/srcdir/Uno
117163
mkdir -p build
@@ -159,23 +205,23 @@ platforms = expand_gfortran_versions(platforms)
159205

160206
# The products that we will ensure are always built
161207
products = [
162-
LibraryProduct("libspral", :libspral),
163-
LibraryProduct("libdmumps", :libdmumps),
164-
ExecutableProduct("uno_ampl", :amplexe),
165-
LibraryProduct("libuno", :libuno),
166-
FileProduct("lib/libuno.a", :libuno_a),
208+
LibraryProduct("libhwloc", :libhwloc),
209+
LibraryProduct("libspral", :libspral),
210+
LibraryProduct("libdmumps", :libdmumps),
211+
LibraryProduct("libhighs", :libhighs),
212+
ExecutableProduct("uno_ampl", :amplexe),
213+
LibraryProduct("libuno", :libuno),
214+
FileProduct("lib/libuno.a", :libuno_a),
167215
]
168216

169217
# Dependencies that must be installed before this package can be built
170218
dependencies = [
171219
HostBuildDependency(PackageSpec(name="Ninja_jll", uuid="76642167-d241-5cee-8c94-7a494e8cb7b7")),
172220
BuildDependency(PackageSpec(name="BQPD_jll", uuid="1325ac01-0a49-589f-8355-43321054aaab")),
173-
Dependency(PackageSpec(name="HiGHS_jll", uuid="8fd58aa0-07eb-5a78-9b36-339c94fd15ea"), compat="=1.14.0"),
174221
Dependency(PackageSpec(name="HSL_jll", uuid="017b0a0e-03f4-516a-9b91-836bbd1904dd")),
175222
Dependency(PackageSpec(name="METIS_jll", uuid="d00139f3-1899-568f-a2f0-47f597d42d70")),
176223
Dependency(PackageSpec(name="ASL_jll", uuid="ae81ac8f-d209-56e5-92de-9978fef736f9"), compat="0.1.3"),
177224
Dependency(PackageSpec(name="OpenBLAS32_jll", uuid="656ef2d0-ae68-5445-9ca0-591084a874a2")),
178-
Dependency(PackageSpec(name="Hwloc_jll", uuid="e33a78d0-f292-5ffc-b300-72abe9b543c8")),
179225
# For OpenMP we use libomp from `LLVMOpenMP_jll` where we use LLVM as compiler (BSD systems),
180226
# and libgomp from `CompilerSupportLibraries_jll` everywhere else.
181227
Dependency(PackageSpec(name="CompilerSupportLibraries_jll", uuid="e66e0078-7015-5450-92f7-15fbd957f2ae"); platforms=filter(!Sys.isbsd, platforms)),

.github/julia/build_tarballs_utils.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ sources = [
3636
"f65a6838e3daa4fa23f06ffffc7c895370dbd3dc"),
3737
# SPRAL v2025.9.18
3838
GitSource("https://github.com/ralna/spral.git",
39-
"e68988612dbd920323cee44c9cb8c6134847a990"),
39+
"80bc843ac3847d4a783a0e11213715a70175aee6"),
4040
# Hwloc v2.13.0
4141
ArchiveSource("https://download.open-mpi.org/release/hwloc/v2.13/hwloc-2.13.0.tar.bz2",
4242
"52e936afb6ebd80f171f763fcf14f7b1f5ce98b125af5dd2f328b873b1fd0dab"),
@@ -186,6 +186,7 @@ meson setup builddir --cross-file="${MESON_TARGET_TOOLCHAIN}" \
186186
-Dlibhwloc=hwloc \
187187
-Dlibblas=blas \
188188
-Dliblapack=lapack \
189+
-Dbinaries=false \
189190
-Dtests=false \
190191
-Dexamples=false
191192
@@ -206,7 +207,6 @@ cmake .. \
206207
-DBUILD_EXAMPLES=OFF \
207208
-DBUILD_TESTING=OFF \
208209
-DBUILD_CXX_EXE=OFF \
209-
-DMETIS_ROOT=${prefix} \
210210
-DBLAS_LIBRARIES=${prefix}/lib/libblas.a \
211211
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
212212

.github/julia/generate_binaries.jl

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ version2 = ENV["UNO_RELEASE"]
55
package = "Uno"
66

77
platforms = [
8-
("aarch64-apple-darwin-cxx11" , "lib", "dylib", "" ),
9-
("aarch64-linux-gnu-cxx11" , "lib", "so" , "" ),
10-
# ("aarch64-linux-musl-cxx11" , "lib", "so" , "" ),
11-
# ("powerpc64le-linux-gnu-cxx11" , "lib", "so" , "" ),
12-
("x86_64-apple-darwin-cxx11" , "lib", "dylib", "" ),
13-
("x86_64-linux-gnu-cxx11" , "lib", "so" , "" ),
14-
# ("x86_64-linux-musl-cxx11" , "lib", "so" , "" ),
15-
# ("x86_64-unknown-freebsd-cxx11", "lib", "so" , "" ),
16-
("x86_64-w64-mingw32-cxx11" , "bin", "dll" , ".exe"),
8+
("aarch64-apple-darwin-cxx11" , "lib", "dylib"),
9+
("aarch64-linux-gnu-cxx11" , "lib", "so" ),
10+
# ("aarch64-linux-musl-cxx11" , "lib", "so" ),
11+
# ("powerpc64le-linux-gnu-cxx11" , "lib", "so" ),
12+
("x86_64-apple-darwin-cxx11" , "lib", "dylib"),
13+
("x86_64-linux-gnu-cxx11" , "lib", "so" ),
14+
# ("x86_64-linux-musl-cxx11" , "lib", "so" ),
15+
# ("x86_64-unknown-freebsd-cxx11", "lib", "so" ),
16+
("x86_64-w64-mingw32-cxx11" , "bin", "dll" ),
1717
]
1818

19-
for (platform, libdir, ext, exeext) in platforms
19+
for (platform, libdir, ext) in platforms
2020

2121
tarball_name = "$package.v$version.$platform.tar.gz"
2222

@@ -36,77 +36,75 @@ for (platform, libdir, ext, exeext) in platforms
3636
end
3737
rm("products/$platform/deps/licenses", recursive=true)
3838

39+
# Copy the shared library of each dependency
40+
for file in readdir("products/$platform/deps")
41+
cp("products/$platform/deps/$file", "products/$platform/$libdir/$file")
42+
end
43+
44+
# Remove the folder used to unzip the tarball of the dependencies
45+
rm("products/$platform/deps", recursive=true)
46+
rm("products/$platform/deps.tar.gz", recursive=true)
47+
3948
# Remove the headers that are not related to Uno
4049
rm("products/$platform/include/libseq", recursive=true)
50+
rm("products/$platform/include/hwloc", recursive=true)
51+
rm("products/$platform/include/highs", recursive=true)
4152
for file in readdir("products/$platform/include")
4253
if endswith(file, ".h")
43-
rm("products/$platform/include/$file", recursive=true)
54+
rm("products/$platform/include/$file")
4455
end
4556
end
4657

4758
# Remove the binaries that are not related to Uno
4859
for file in readdir("products/$platform/bin")
49-
if endswith(file, exeext) && !startswith(file, "uno_ampl")
50-
rm("products/$platform/bin/$file", recursive=true)
51-
end
52-
if platform == "x86_64-w64-mingw32-cxx11"
53-
if !endswith(file, ".dll") && !startswith(file, "uno_ampl")
54-
rm("products/$platform/bin/$file", recursive=true)
55-
end
60+
if !startswith(file, "uno_ampl") && !startswith(file, "libuno") && !endswith(file, ".dll")
61+
rm("products/$platform/bin/$file")
5662
end
5763
end
5864

5965
# Remove the libraries that are not dependencies of Uno
60-
rm("products/$platform/$libdir/libhsl_subset.$ext", recursive=true)
61-
rm("products/$platform/$libdir/libhsl_subset_64.$ext", recursive=true)
62-
rm("products/$platform/$libdir/libbqpd_dense.a", recursive=true)
63-
rm("products/$platform/$libdir/libcharset.a", recursive=true)
64-
rm("products/$platform/$libdir/libz.a", recursive=true)
65-
rm("products/$platform/$libdir/libiconv.a", recursive=true)
66+
rm("products/$platform/lib/pkgconfig", recursive=true)
67+
rm("products/$platform/lib/cmake", recursive=true)
68+
isfile("products/$platform/$libdir/libhsl_subset.$ext") && rm("products/$platform/$libdir/libhsl_subset.$ext")
69+
isfile("products/$platform/$libdir/libhsl_subset_64.$ext") && rm("products/$platform/$libdir/libhsl_subset_64.$ext")
70+
isfile("products/$platform/lib/libbqpd_dense.a") && rm("products/$platform/lib/libbqpd_dense.a")
71+
isfile("products/$platform/lib/libcharset.a") && rm("products/$platform/lib/libcharset.a")
72+
isfile("products/$platform/lib/libz.a") && rm("products/$platform/lib/libz.a")
73+
isfile("products/$platform/lib/libiconv.a") && rm("products/$platform/lib/libiconv.a")
74+
isfile("products/$platform/lib/libspral.dll.a") && rm("products/$platform/lib/libspral.dll.a")
75+
isfile("products/$platform/lib/libhwloc.dll.a") && rm("products/$platform/lib/libhwloc.dll.a")
76+
isfile("products/$platform/lib/libhighs.dll.a") && rm("products/$platform/lib/libhighs.dll.a")
77+
isfile("products/$platform/lib/libhwloc.def") && rm("products/$platform/lib/libhwloc.def")
6678
for file in readdir("products/$platform/$libdir")
6779
if startswith(file, "libasan") || startswith(file, "libubsan") || startswith(file, "libtsan") || startswith(file, "libhwasan") || startswith(file, "liblsan")
68-
rm("products/$platform/$libdir/$file", recursive=true)
80+
rm("products/$platform/$libdir/$file")
6981
end
7082
end
7183

7284
# Create a folder with only the libraries of the dependencies
7385
mkdir("products/$platform/deps")
7486
for file in readdir("products/$platform/$libdir")
75-
if !startswith(file, "libuno")
87+
if !startswith(file, "uno_ampl") && !startswith(file, "libuno")
7688
mv("products/$platform/$libdir/$file", "products/$platform/deps/$file")
7789
end
7890
end
7991

80-
# Remove the import library libspral.dll.a on Windows
81-
if platform == "x86_64-w64-mingw32-cxx11"
82-
rm("products/$platform/lib/libspral.dll.a", recursive=true)
83-
end
84-
85-
# Copy the shared library of each dependency
86-
for file in readdir("products/$platform/deps")
87-
cp("products/$platform/deps/$file", "products/$platform/$libdir/$file")
88-
end
89-
90-
# Remove the folder used to unzip the tarball of the dependencies
91-
rm("products/$platform/deps", recursive=true)
92-
rm("products/$platform/deps.tar.gz", recursive=true)
93-
9492
# Create the archives *_binaries
9593
isfile("$(package)_binaries.$version2.$platform.tar.gz") && rm("$(package)_binaries.$version2.$platform.tar.gz")
9694
isfile("$(package)_binaries.$version2.$platform.zip") && rm("$(package)_binaries.$version2.$platform.zip")
9795
cd("products/$platform")
9896

9997
# Create a folder with the version number of the package
10098
mkdir("$(package)_binaries.$version2")
101-
for folder in ("lib", "bin", "share", "include")
99+
for folder in ("lib", "bin", "share", "include", "deps")
102100
cp(folder, "$(package)_binaries.$version2/$folder")
103101
end
104102

105103
cd("$(package)_binaries.$version2")
106104
if ext == "dll"
107-
run(`zip -r --symlinks ../../../$(package)_binaries.$version2.$platform.zip lib bin share include`)
105+
run(`zip -r --symlinks ../../../$(package)_binaries.$version2.$platform.zip lib bin share include deps`)
108106
else
109-
run(`tar -czf ../../../$(package)_binaries.$version2.$platform.tar.gz lib bin share include`)
107+
run(`tar -czf ../../../$(package)_binaries.$version2.$platform.tar.gz lib bin share include deps`)
110108
end
111109
cd("../../..")
112110

interfaces/Julia/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ NLPModels = "0.21.10"
2424
OpenBLAS32_jll = "0.3.24"
2525
SolverCore = "0.3.10"
2626
Test = "1.10"
27-
Uno_jll = "=2.7.0"
27+
Uno_jll = "=2.7.0, =2.7.1"
2828
julia = "1.10"
2929

3030
[extras]

0 commit comments

Comments
 (0)