From 0e9e08b6ad38775d8e9585e51aa8631c4202d69a Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 17:07:40 -0400 Subject: [PATCH 01/13] Update build_tarballs.jl --- build_tarballs.jl | 302 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 238 insertions(+), 64 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index 69cccd2..ffbc100 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -2,14 +2,83 @@ # `julia build_tarballs.jl --help` to see a usage message. using BinaryBuilder -name = "ClpBuilder" -version = v"1.16.11" +# To propose an update to the Clp binaries please follow these steps: +# 1) Fork this ClpBuilder repository and create a new branch +# 2) Modify the build script (e.g., changing the portion marked by START/END-EASY-CHANGE-BLOCK) and test that it compiles +# for all architectures by running `julia --color=yes build_tarballs.jl --verbose`. (Note that this build make take a +# long time. Also, adding the --debug argument to the command will drop you into the build environment for debugging) +# 3) Create a github release in your fork of ClpBuilder with the generated tarballs and build_ClpBuilder.vX.X.X.jl +# (https://github.com/tcnksm/ghr is usefull to automate this release creation) +# 4) Fork the Clp.jl repository (https://github.com/JuliaOpt/Clp.jl) and create a new branch +# 5) Update the portion marked by ## START-VERSION-UPDATE-BLOCK / ## END-VERSION-UPDATE-BLOCK in Clp.jl/deps/build.jl +# on your branch of Clp.jl with the corresponding lines in the build_ClpBuilder.vX.X.X.jl file you generated in steps 2)/3) +# 6) Check that tests pass on your branch of Clp (e.g. `]test Clp`) +# 7) Create a PR for ClpBuilder.jl (No need to create a PR for Clp.jl) -# Collection of sources required to build ClpBuilder -sources = [ - "https://github.com/coin-or/Clp/archive/releases/1.16.11.tar.gz" => - "ac42c00ba95e1e034ae75ba0e3a5ff03b452191e0c9b2f5e2d5e65bf652fb0a1", +# Ideally, any update would need changes only on the EASY-CHANGE-BLOCK below +# Note that if two sources have the same version then they need to have +# different extension so that the corresponding filenames are different. +# For instance, consider the following case where COINMumps and COINLapack +# both use versio 1.6.0: +# COINMumps_version = v"1.6.0" +# COINMumps_extension = "tar.gz" +# COINLapack_version = v"1.6.0" +# COINLapack_extension = "zip" +# In this case, we need one of the libraries to use the "tar.gz" extension and +# the other to use the "zip" extension. The reason for this is that the file names +# for github releases for COINMumps and COINLapack for the configuration above will +# be respectively `1.6.0.tar.gz` and `1.6.0.zip`. If we instead had used the same +# extensions, one of the files would have been overwritten. + + +##START-EASY-CHANGE-BLOCK +Clp_version = v"1.17.3" +Clp_extension = "tar.gz" +Clp_hash = "25f0692fe1daa492e7801770af6991506ae9a8c34a4cae358d017400a02dfcf8" +Osi_version = v"0.108.5" +Osi_extension = "tar.gz" +Osi_hash = "c9a6f098e2824883bb3ec1f12df5987b7a8da0f1241988a5dd4663ac362e6381" +CoinUtils_version = v"2.11.3" +CoinUtils_extension = "tar.gz" +CoinUtils_hash = "7c4753816e765974941db75ec89f8855e56b86959f3a5f068fdf95b0003be61c" +COINMumps_version = v"1.6.0" +COINMumps_extension = "tar.gz" +COINMumps_hash = "3f2bb7d13333e85a29cd2dadc78a38bbf469bc3920c4c0933a90b7d8b8dc798a" +COINMetis_version = v"1.3.5" +COINMetis_extension = "tar.gz" +COINMetis_hash = "98a6110d5d004a16ad42ee26cfac508477f44aa6fe296b90a6413fe0273ebe24" +COINLapack_version = v"1.6.0" +COINLapack_extension = "zip" +COINLapack_hash = "227969f240176c8e1f391548f8f854bf81ac13c9c3f9803b345eaa052a399b3a" +COINBLAS_version = v"1.4.6" +COINBLAS_extension = "tar.gz" +COINBLAS_hash = "f9601efb98f04fdba220d49d5bda98d2a5a5e2ed7564df339bc7149b0c303f0c" +ASL_version = v"3.1.0" +ASL_extension = "tar.gz" +ASL_hash = "587c1a88f4c8f57bef95b58a8586956145417c8039f59b1758365ccc5a309ae9" +##END-EASY-CHANGE-BLOCK + +name = "ClpBuilder" +# Collection of sources required to build CbcBuilder +sources = [ + "./bundled", + "https://github.com/coin-or/Clp/archive/releases/$(Clp_version).$(Clp_extension)" => + Clp_hash, + "https://github.com/coin-or/Osi/archive/releases/$(Osi_version).$(Osi_extension)" => + Osi_hash, + "https://github.com/coin-or/CoinUtils/archive/releases/$(CoinUtils_version).$(CoinUtils_extension)" => + CoinUtils_hash, + "https://github.com/coin-or-tools/ThirdParty-Mumps/archive/releases/$(COINMumps_version).$(COINMumps_extension)" => + COINMumps_hash, + "https://github.com/coin-or-tools/ThirdParty-Metis/archive/releases/$(COINMetis_version).$(COINMetis_extension)" => + COINMetis_hash, + "https://github.com/coin-or-tools/ThirdParty-Lapack/archive/releases/$(COINLapack_version).$(COINLapack_extension)" => + COINLapack_hash, + "https://github.com/coin-or-tools/ThirdParty-Blas/archive/releases/$(COINBLAS_version).$(COINBLAS_extension)" => + COINBLAS_hash, + "https://github.com/ampl/mp/archive/$(ASL_version).tar.gz" => + ASL_hash, ] # Bash recipe for building across all platforms @@ -17,11 +86,12 @@ script = raw""" # separated by | and they are regex export finalsyms="Clp" - cd $WORKSPACE/srcdir -cd Clp-releases-1.16.11/ +set -e +### Preliminaries +# Standard BB updates update_configure_scripts -# temporary fix +# Fix some paths for path in ${LD_LIBRARY_PATH//:/ }; do for file in $(ls $path/*.la); do echo "$file" @@ -29,31 +99,147 @@ for path in ${LD_LIBRARY_PATH//:/ }; do sed -i~ -e "s|$baddir|'$path'|g" $file done done +# Osi, Cgl, Clp, CoinUtils, mumps, metis, lapack, blas, asl +if [ $target = "x86_64-apple-darwin14" ]; then + export AR=/opt/x86_64-apple-darwin14/bin/x86_64-apple-darwin14-ar +fi +### Compile ASL +# Use staticfloat's cross-compile trick for ASL https://github.com/ampl/mp/issues/115 +cd $WORKSPACE/srcdir/mp-* +rm -rf thirdparty/benchmark +patch -p1 < $WORKSPACE/srcdir/asl-extra/no_benchmark.patch +# Build ASL +mkdir build +cd build +if [ $target = "x86_64-w64-mingw32" ] || [ $target = "i686-w64-mingw32" ]; then + cmake -DCMAKE_C_FLAGS='-fPIC -DPIC' -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=$prefix -DCMAKE_TOOLCHAIN_FILE=/opt/$target/$target.toolchain -DRUN_HAVE_STD_REGEX=0 -DRUN_HAVE_STEADY_CLOCK=0 -DHAVE_ACCESS_DRIVER_EXITCODE=0 -DHAVE_EXCEL_DRIVER_EXITCODE=0 -DHAVE_ODBC_TEXT_DRIVER_EXITCODE=0 ../ +else + cmake -DCMAKE_C_FLAGS='-fPIC -DPIC' -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=$prefix -DCMAKE_TOOLCHAIN_FILE=/opt/$target/$target.toolchain -DRUN_HAVE_STD_REGEX=0 -DRUN_HAVE_STEADY_CLOCK=0 ../ +fi +# Copy over pregenerated files after building arithchk, so as to fake out cmake, +# because cmake will delete our arith.h +## If this fails it is ok, we just want to prevend cmake deleting arith.h +set +e +make arith-h VERBOSE=1 +set -e +mkdir -p src/asl +cp -v $WORKSPACE/srcdir/asl-extra/expr-info.cc ../src/expr-info.cc +cp -v $WORKSPACE/srcdir/asl-extra/arith.h.${target} src/asl/arith.h +# Build and install ASL +make -j${nproc} VERBOSE=1 +make install VERBOSE=1 +### Compile Lapack +cd $WORKSPACE/srcdir +cd ThirdParty-Blas-releases-*/ +./get.Blas +mkdir build +cd build/ +# configure, make and install +../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --disable-shared --enable-static --enable-dependency-linking lt_cv_deplibs_check_method=pass_all +make -j${nproc} +make install +### Compile Lapack +cd $WORKSPACE/srcdir +cd ThirdParty-Lapack-releases-*/ +./get.Lapack +mkdir build +cd build/ +# configure, make and install +../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --disable-shared --enable-static --enable-dependency-linking lt_cv_deplibs_check_method=pass_all \ +--with-blas-lib="-L$prefix/lib -lcoinblas" +make -j${nproc} +make install +### Compile Metis +cd $WORKSPACE/srcdir +cd ThirdParty-Metis-releases-*/ +./get.Metis +mkdir build +cd build/ +# configure, make and install +../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --disable-shared --enable-static --enable-dependency-linking lt_cv_deplibs_check_method=pass_all +make -j${nproc} +make install +### Compile Mumps +cd $WORKSPACE/srcdir +cd ThirdParty-Mumps-releases-*/ +./get.Mumps +patch -p1 < $WORKSPACE/srcdir/mumps-extra/quiet.diff +mkdir build +cd build/ +# configure, make and install +../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --disable-shared --enable-static --enable-dependency-linking lt_cv_deplibs_check_method=pass_all \ +--with-metis-lib="-L${prefix}/lib -lcoinmetis" --with-metis-incdir="$prefix/include/coin/ThirdParty" \ +--with-blas-lib="-L$prefix/lib -lcoinblas" +make -j${nproc} +make install +### Compile CoinUtils +cd $WORKSPACE/srcdir +cd CoinUtils-releases-*/ +mkdir build +cd build/ +# Set env vars: CPPFLAGS +if [ $target = "aarch64-linux-gnu" ] || [ $target = "arm-linux-gnueabihf" ]; then + export CPPFLAGS="-std=c++11 -D_GLIBCXX_USE_CXX11_ABI=1" +fi +# configure, make and install +../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --disable-shared --enable-static --enable-dependency-linking lt_cv_deplibs_check_method=pass_all \ +--with-blas-lib="-L${prefix}/lib -lcoinblas" \ +--with-lapack-lib="-L${prefix}/lib -lcoinlapack" +make -j${nproc} +make install +# Clear env vars: CPPFLAGS +export CPPFLAGS="" +### Compile Osi +cd $WORKSPACE/srcdir +cd Osi-releases-*/ mkdir build cd build/ -export CPPFLAGS="-DNDEBUG -w -DCOIN_USE_MUMPS_MPI_H" +# Set env vars: CXXFLAGS and CPPFLAGS +export CXXFLAGS="-std=c++11" +if [ $target = "aarch64-linux-gnu" ] || [ $target = "arm-linux-gnueabihf" ]; then + export CPPFLAGS="-std=c++11" +fi +# configure, make and install +../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --disable-shared --enable-static --enable-dependency-linking lt_cv_deplibs_check_method=pass_all \ +--with-coinutils-lib="-L${prefix}/lib -lCoinUtils" --with-coinutils-incdir="$prefix/include/coin" \ +--with-lapack-lib="-L${prefix}/lib -lcoinlapack" \ +--with-blas-lib="-L${prefix}/lib -lcoinblas" +make -j${nproc} +make install +# Clear env vars: CXXFLAGS and CPPFLAGS +export CXXFLAGS="" +export CPPFLAGS="" -## STATIC BUILD START -# Staticly link all dependencies and export only Clp symbols +## Compile Clp + +cd $WORKSPACE/srcdir +cd Clp-releases-*/ +mkdir build +cd build/ + +# Set env vars: CPPFLAGS +if [ $target = "aarch64-linux-gnu" ]; then + export CPPFLAGS="-DNDEBUG -w -DCOIN_USE_MUMPS_MPI_H -D__arm__ -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=1" +elif [ $target = "arm-linux-gnueabihf" ]; then + export CPPFLAGS="-DNDEBUG -w -DCOIN_USE_MUMPS_MPI_H -D__arm__ -mfpu=neon -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=1" +else + export CPPFLAGS="-DNDEBUG -w -DCOIN_USE_MUMPS_MPI_H" +fi +# Staticly link all dependencies and export only Clp symbols # force only exporting symbols related to Clp sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"mysymbols\\""|g' ../configure sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"mysymbols\\""|g' ../Clp/configure sed -i~ -e "s|mysymbols|$finalsyms|g" ../configure sed -i~ -e "s|mysymbols|$finalsyms|g" ../Clp/configure +# configure, make and install if [ $target = "x86_64-apple-darwin14" ]; then - - # seems static linking requires apple's ar - export AR=/opt/x86_64-apple-darwin14/bin/x86_64-apple-darwin14-ar - # Ignore the "# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds" # seems to work for the current version and otherwise a long list of non-Clp symbols are exported sed -i~ -e "s|~nmedit -s \$output_objdir/\${libname}-symbols.expsym \${lib}| -exported_symbols_list \$output_objdir/\${libname}-symbols.expsym|g" ../configure - # fix linking issue export OSICLPLIB_LIBS=" -lbz2 -lz ${prefix}/lib/libcoinlapack.a ${prefix}/lib/libCoinUtils.a ${prefix}/lib/libOsi.a ${prefix}/lib/libcoinblas.a" - ../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --enable-shared --enable-static \ --with-asl-lib="${prefix}/lib/libasl.a" --with-asl-incdir="$prefix/include/asl" \ --with-blas-lib="${prefix}/lib/libcoinblas.a -lgfortran" \ @@ -63,25 +249,20 @@ if [ $target = "x86_64-apple-darwin14" ]; then --with-coinutils-lib="${prefix}/lib/libcoinlapack.a ${prefix}/lib/libcoinblas.a ${prefix}/lib/libCoinUtils.a -lbz2 -lz" --with-coinutils-incdir="$prefix/include/coin" \ --with-osi-lib="${prefix}/lib/libOsi.a" --with-osi-incdir="$prefix/include/coin" \ lt_cv_deplibs_check_method=pass_all - elif [ $target = "x86_64-w64-mingw32" ] || [ $target = "i686-w64-mingw32" ]; then - - # fix linking issue - export OSICLPLIB_LIBS="${prefix}/lib/libOsi.a ${prefix}/lib/libCoinUtils.a ${prefix}/lib/libcoinlapack.a ${prefix}/lib/libcoinblas.a -lgfortran" - - ../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --enable-shared --enable-static \ - --with-asl-lib="${prefix}/lib/libasl.a" --with-asl-incdir="$prefix/include/asl" \ - --with-lapack-lib="${prefix}/lib/libcoinlapack.a" \ - --with-mumps-lib="${prefix}/lib/libcoinmumps.a -lgfortran ${prefix}/lib/libcoinmetis.a" --with-mumps-incdir="$prefix/include/coin/ThirdParty" \ - --with-metis-lib="${prefix}/lib/libcoinmetis.a" --with-metis-incdir="$prefix/include/coin/ThirdParty" \ - --with-coinutils-lib="${prefix}/lib/libCoinUtils.a ${prefix}/lib/libcoinblas.a ${prefix}/lib/libcoinlapack.a" --with-coinutils-incdir="$prefix/include/coin" \ - --with-osi-lib="${prefix}/lib/libOsi.a" --with-osi-incdir="$prefix/include/coin" \ - --with-blas-lib="${prefix}/lib/libcoinblas.a -lgfortran" \ - lt_cv_deplibs_check_method=pass_all - - # fix linking issue - sed -i~ -e 's|libClpSolver_la_LIBADD = \$(CLPLIB_LIBS) libClp\.la|libClpSolver_la_LIBADD = $(CLPLIB_LIBS) libClp.la ${prefix}/lib/libcoinblas.a -lgfortran|g' Clp/src/Makefile - + # fix linking issue + export OSICLPLIB_LIBS="${prefix}/lib/libOsi.a ${prefix}/lib/libCoinUtils.a ${prefix}/lib/libcoinlapack.a ${prefix}/lib/libcoinblas.a -lgfortran" + ../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --enable-shared --enable-static \ + --with-asl-lib="${prefix}/lib/libasl.a" --with-asl-incdir="$prefix/include/asl" \ + --with-lapack-lib="${prefix}/lib/libcoinlapack.a" \ + --with-mumps-lib="${prefix}/lib/libcoinmumps.a -lgfortran ${prefix}/lib/libcoinmetis.a" --with-mumps-incdir="$prefix/include/coin/ThirdParty" \ + --with-metis-lib="${prefix}/lib/libcoinmetis.a" --with-metis-incdir="$prefix/include/coin/ThirdParty" \ + --with-coinutils-lib="${prefix}/lib/libCoinUtils.a ${prefix}/lib/libcoinblas.a ${prefix}/lib/libcoinlapack.a" --with-coinutils-incdir="$prefix/include/coin" \ + --with-osi-lib="${prefix}/lib/libOsi.a" --with-osi-incdir="$prefix/include/coin" \ + --with-blas-lib="${prefix}/lib/libcoinblas.a -lgfortran" \ + lt_cv_deplibs_check_method=pass_all + # fix linking issue + sed -i~ -e 's|libClpSolver_la_LIBADD = \$(CLPLIB_LIBS) libClp\.la|libClpSolver_la_LIBADD = $(CLPLIB_LIBS) libClp.la ${prefix}/lib/libcoinblas.a -lgfortran|g' Clp/src/Makefile else ../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --enable-shared --enable-static \ --with-asl-lib="${prefix}/lib/libasl.a" --with-asl-incdir="$prefix/include/asl" \ @@ -93,26 +274,8 @@ else --with-blas-lib="${prefix}/lib/libcoinblas.a -lgfortran" \ lt_cv_deplibs_check_method=pass_all LDFLAGS=-ldl; fi -## STATIC BUILD END - -## DYNAMIC BUILD START - -#if [ $target = "x86_64-w64-mingw32" ] || [ $target = "i686-w64-mingw32" ]; then -#export LDFLAGS="-L${prefix}/lib -lCoinUtils" -#fi - -#../configure --prefix=$prefix --with-pic --disable-pkg-config --host=${target} --enable-shared --disable-static \ -#--enable-dependency-linking lt_cv_deplibs_check_method=pass_all \ -#--with-asl-lib="-L${prefix}/lib -lasl" --with-asl-incdir="$prefix/include/asl" \ -#--with-blas="-L${prefix}/lib -lcoinblas" \ -#--with-lapack="-L${prefix}/lib -lcoinlapack" \ -#--with-metis-lib="-L${prefix}/lib -lcoinmetis" --with-metis-incdir="$prefix/include/coin/ThirdParty" \ -#--with-mumps-lib="-L${prefix}/lib -lcoinmumps" --with-mumps-incdir="$prefix/include/coin/ThirdParty" \ -#--with-coinutils-lib="-L${prefix}/lib -lCoinUtils" --with-coinutils-incdir="$prefix/include/coin" \ -#--with-osi-lib="-L${prefix}/lib -lOsi" --with-osi-incdir="$prefix/include/coin" -## DYNAMIC BUILD END - -# COIN makefiles uses -retain-symbols-file for symbol filtering, which does not seem to filter the dynamic table so + +# COIN makefiles uses -retain-symbols-file in linux for symbol filtering, which does not seem to filter the dynamic table so # we switch to -version-script if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver @@ -122,7 +285,15 @@ if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then fi make -j${nproc} + +# Clean-up bin directory before installing +rm ${prefix}/bin/* + +# Install make install + +# Clean-up lib directory +rm ${prefix}/lib/*.a """ # These are the platforms we will build for by default, unless further @@ -142,22 +313,25 @@ platforms = setdiff(platforms, [Windows(:x86_64, compiler_abi=CompilerABI(:gcc4) push!(platforms, Windows(:i686,compiler_abi=CompilerABI(:gcc6))) push!(platforms, Windows(:x86_64,compiler_abi=CompilerABI(:gcc6))) +# It seems Clp in ARM now needs C++11, so gcc4 is not working. +# A possible fix is to switch to gcc6 as for windows, but this will require updating all dependencies below too. +platforms = setdiff(platforms, [Linux(:armv7l, libc=:glibc, call_abi=:eabihf, compiler_abi=CompilerABI(:gcc4)), Linux(:aarch64, libc=:glibc, compiler_abi=CompilerABI(:gcc4))]) + # The products that we will ensure are always built products(prefix) = [ - # LibraryProduct(prefix, "libOsiClp", :libOsiClp), LibraryProduct(prefix, "libClp", :libClp), LibraryProduct(prefix, "libClpSolver", :libClpSolver) ] # Dependencies that must be installed before this package can be built dependencies = [ - "https://github.com/JuliaOpt/OsiBuilder/releases/download/v0.107.9-1-static/build_OsiBuilder.v0.107.9.jl", - "https://github.com/JuliaOpt/CoinUtilsBuilder/releases/download/v2.10.14-1-static/build_CoinUtilsBuilder.v2.10.14.jl", - "https://github.com/JuliaOpt/COINMumpsBuilder/releases/download/v1.6.0-1-static/build_COINMumpsBuilder.v1.6.0.jl", - "https://github.com/JuliaOpt/COINMetisBuilder/releases/download/v1.3.5-1-static/build_COINMetisBuilder.v1.3.5.jl", - "https://github.com/JuliaOpt/COINLapackBuilder/releases/download/v1.5.6-1-static/build_COINLapackBuilder.v1.5.6.jl", - "https://github.com/JuliaOpt/COINBLASBuilder/releases/download/v1.4.6-1-static/build_COINBLASBuilder.v1.4.6.jl", - "https://github.com/JuliaOpt/ASLBuilder/releases/download/v3.1.0-1-static/build_ASLBuilder.v3.1.0.jl" + # "https://github.com/JuliaOpt/OsiBuilder/releases/download/v0.107.9-1-static/build_OsiBuilder.v0.107.9.jl", + # "https://github.com/JuliaOpt/CoinUtilsBuilder/releases/download/v2.10.14-1-static/build_CoinUtilsBuilder.v2.10.14.jl", + # "https://github.com/JuliaOpt/COINMumpsBuilder/releases/download/v1.6.0-1-static/build_COINMumpsBuilder.v1.6.0.jl", + # "https://github.com/JuliaOpt/COINMetisBuilder/releases/download/v1.3.5-1-static/build_COINMetisBuilder.v1.3.5.jl", + # "https://github.com/JuliaOpt/COINLapackBuilder/releases/download/v1.5.6-1-static/build_COINLapackBuilder.v1.5.6.jl", + # "https://github.com/JuliaOpt/COINBLASBuilder/releases/download/v1.4.6-1-static/build_COINBLASBuilder.v1.4.6.jl", + # "https://github.com/JuliaOpt/ASLBuilder/releases/download/v3.1.0-1-static/build_ASLBuilder.v3.1.0.jl" ] # Build the tarballs, and possibly a `build.jl` as well. From 7a4fddd4c0556cdd42c0ff481b8c471f534b4e41 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 17:10:10 -0400 Subject: [PATCH 02/13] Update build_tarballs.jl --- build_tarballs.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index ffbc100..d93ae26 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -335,4 +335,4 @@ dependencies = [ ] # Build the tarballs, and possibly a `build.jl` as well. -build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies) +build_tarballs(ARGS, name, Clp_version, sources, script, platforms, products, dependencies) From 5fbb8d0fffb069e392311c2b0e82b9a5018d605b Mon Sep 17 00:00:00 2001 From: jvielma Date: Sun, 27 Oct 2019 17:12:12 -0400 Subject: [PATCH 03/13] bundles --- bundled/asl-extra/arith.h.aarch64-linux-gnu | 8 + bundled/asl-extra/arith.h.arm-linux-gnueabihf | 5 + bundled/asl-extra/arith.h.i686-linux-gnu | 4 + bundled/asl-extra/arith.h.i686-w64-mingw32 | 5 + .../asl-extra/arith.h.powerpc64le-linux-gnu | 8 + .../asl-extra/arith.h.x86_64-apple-darwin14 | 8 + bundled/asl-extra/arith.h.x86_64-linux-gnu | 8 + bundled/asl-extra/arith.h.x86_64-w64-mingw32 | 8 + bundled/asl-extra/expr-info.cc | 240 ++++++++++++++++++ bundled/asl-extra/no_benchmark.patch | 18 ++ bundled/mumps-extra/quiet.diff | 20 ++ 11 files changed, 332 insertions(+) create mode 100644 bundled/asl-extra/arith.h.aarch64-linux-gnu create mode 100644 bundled/asl-extra/arith.h.arm-linux-gnueabihf create mode 100644 bundled/asl-extra/arith.h.i686-linux-gnu create mode 100644 bundled/asl-extra/arith.h.i686-w64-mingw32 create mode 100644 bundled/asl-extra/arith.h.powerpc64le-linux-gnu create mode 100644 bundled/asl-extra/arith.h.x86_64-apple-darwin14 create mode 100644 bundled/asl-extra/arith.h.x86_64-linux-gnu create mode 100644 bundled/asl-extra/arith.h.x86_64-w64-mingw32 create mode 100644 bundled/asl-extra/expr-info.cc create mode 100644 bundled/asl-extra/no_benchmark.patch create mode 100644 bundled/mumps-extra/quiet.diff diff --git a/bundled/asl-extra/arith.h.aarch64-linux-gnu b/bundled/asl-extra/arith.h.aarch64-linux-gnu new file mode 100644 index 0000000..123f1ad --- /dev/null +++ b/bundled/asl-extra/arith.h.aarch64-linux-gnu @@ -0,0 +1,8 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Long int +#define Intcast (int)(long) +#define Double_Align +#define X64_bit_pointers +#define QNaN0 0x0 +#define QNaN1 0x7ff80000 diff --git a/bundled/asl-extra/arith.h.arm-linux-gnueabihf b/bundled/asl-extra/arith.h.arm-linux-gnueabihf new file mode 100644 index 0000000..592df84 --- /dev/null +++ b/bundled/asl-extra/arith.h.arm-linux-gnueabihf @@ -0,0 +1,5 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Double_Align +#define QNaN0 0x0 +#define QNaN1 0x7ff80000 diff --git a/bundled/asl-extra/arith.h.i686-linux-gnu b/bundled/asl-extra/arith.h.i686-linux-gnu new file mode 100644 index 0000000..8bfa08c --- /dev/null +++ b/bundled/asl-extra/arith.h.i686-linux-gnu @@ -0,0 +1,4 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define QNaN0 0x0 +#define QNaN1 0xfff80000 diff --git a/bundled/asl-extra/arith.h.i686-w64-mingw32 b/bundled/asl-extra/arith.h.i686-w64-mingw32 new file mode 100644 index 0000000..6233f79 --- /dev/null +++ b/bundled/asl-extra/arith.h.i686-w64-mingw32 @@ -0,0 +1,5 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Double_Align +#define QNaN0 0x0 +#define QNaN1 0xfff80000 diff --git a/bundled/asl-extra/arith.h.powerpc64le-linux-gnu b/bundled/asl-extra/arith.h.powerpc64le-linux-gnu new file mode 100644 index 0000000..123f1ad --- /dev/null +++ b/bundled/asl-extra/arith.h.powerpc64le-linux-gnu @@ -0,0 +1,8 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Long int +#define Intcast (int)(long) +#define Double_Align +#define X64_bit_pointers +#define QNaN0 0x0 +#define QNaN1 0x7ff80000 diff --git a/bundled/asl-extra/arith.h.x86_64-apple-darwin14 b/bundled/asl-extra/arith.h.x86_64-apple-darwin14 new file mode 100644 index 0000000..123f1ad --- /dev/null +++ b/bundled/asl-extra/arith.h.x86_64-apple-darwin14 @@ -0,0 +1,8 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Long int +#define Intcast (int)(long) +#define Double_Align +#define X64_bit_pointers +#define QNaN0 0x0 +#define QNaN1 0x7ff80000 diff --git a/bundled/asl-extra/arith.h.x86_64-linux-gnu b/bundled/asl-extra/arith.h.x86_64-linux-gnu new file mode 100644 index 0000000..356d34f --- /dev/null +++ b/bundled/asl-extra/arith.h.x86_64-linux-gnu @@ -0,0 +1,8 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Long int +#define Intcast (int)(long) +#define Double_Align +#define X64_bit_pointers +#define QNaN0 0x0 +#define QNaN1 0xfff80000 diff --git a/bundled/asl-extra/arith.h.x86_64-w64-mingw32 b/bundled/asl-extra/arith.h.x86_64-w64-mingw32 new file mode 100644 index 0000000..356d34f --- /dev/null +++ b/bundled/asl-extra/arith.h.x86_64-w64-mingw32 @@ -0,0 +1,8 @@ +#define IEEE_8087 +#define Arith_Kind_ASL 1 +#define Long int +#define Intcast (int)(long) +#define Double_Align +#define X64_bit_pointers +#define QNaN0 0x0 +#define QNaN1 0xfff80000 diff --git a/bundled/asl-extra/expr-info.cc b/bundled/asl-extra/expr-info.cc new file mode 100644 index 0000000..0e6eda0 --- /dev/null +++ b/bundled/asl-extra/expr-info.cc @@ -0,0 +1,240 @@ +// This file is automatically generated. Do not edit! + +#include "mp/common.h" +#include "expr-writer.h" + +const mp::internal::OpCodeInfo mp::internal::OpCodeInfo::INFO[] = { + {expr::ADD, expr::FIRST_BINARY}, + {expr::SUB, expr::FIRST_BINARY}, + {expr::MUL, expr::FIRST_BINARY}, + {expr::DIV, expr::FIRST_BINARY}, + {expr::MOD, expr::FIRST_BINARY}, + {expr::POW, expr::FIRST_BINARY}, + {expr::LESS, expr::FIRST_BINARY}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::MIN, expr::FIRST_VARARG}, + {expr::MAX, expr::FIRST_VARARG}, + {expr::FLOOR, expr::FIRST_UNARY}, + {expr::CEIL, expr::FIRST_UNARY}, + {expr::ABS, expr::FIRST_UNARY}, + {expr::MINUS, expr::FIRST_UNARY}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::OR, expr::FIRST_BINARY_LOGICAL}, + {expr::AND, expr::FIRST_BINARY_LOGICAL}, + {expr::LT, expr::FIRST_RELATIONAL}, + {expr::LE, expr::FIRST_RELATIONAL}, + {expr::EQ, expr::FIRST_RELATIONAL}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::GE, expr::FIRST_RELATIONAL}, + {expr::GT, expr::FIRST_RELATIONAL}, + {expr::NE, expr::FIRST_RELATIONAL}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::NOT, expr::NOT}, + {expr::IF, expr::IF}, + {expr::UNKNOWN, expr::UNKNOWN}, + {expr::TANH, expr::FIRST_UNARY}, + {expr::TAN, expr::FIRST_UNARY}, + {expr::SQRT, expr::FIRST_UNARY}, + {expr::SINH, expr::FIRST_UNARY}, + {expr::SIN, expr::FIRST_UNARY}, + {expr::LOG10, expr::FIRST_UNARY}, + {expr::LOG, expr::FIRST_UNARY}, + {expr::EXP, expr::FIRST_UNARY}, + {expr::COSH, expr::FIRST_UNARY}, + {expr::COS, expr::FIRST_UNARY}, + {expr::ATANH, expr::FIRST_UNARY}, + {expr::ATAN2, expr::FIRST_BINARY}, + {expr::ATAN, expr::FIRST_UNARY}, + {expr::ASINH, expr::FIRST_UNARY}, + {expr::ASIN, expr::FIRST_UNARY}, + {expr::ACOSH, expr::FIRST_UNARY}, + {expr::ACOS, expr::FIRST_UNARY}, + {expr::SUM, expr::SUM}, + {expr::TRUNC_DIV, expr::FIRST_BINARY}, + {expr::PRECISION, expr::FIRST_BINARY}, + {expr::ROUND, expr::FIRST_BINARY}, + {expr::TRUNC, expr::FIRST_BINARY}, + {expr::COUNT, expr::COUNT}, + {expr::NUMBEROF, expr::NUMBEROF}, + {expr::NUMBEROF_SYM, expr::NUMBEROF_SYM}, + {expr::ATLEAST, expr::FIRST_LOGICAL_COUNT}, + {expr::ATMOST, expr::FIRST_LOGICAL_COUNT}, + {expr::PLTERM, expr::PLTERM}, + {expr::IFSYM, expr::IFSYM}, + {expr::EXACTLY, expr::FIRST_LOGICAL_COUNT}, + {expr::NOT_ATLEAST, expr::FIRST_LOGICAL_COUNT}, + {expr::NOT_ATMOST, expr::FIRST_LOGICAL_COUNT}, + {expr::NOT_EXACTLY, expr::FIRST_LOGICAL_COUNT}, + {expr::FORALL, expr::FIRST_ITERATED_LOGICAL}, + {expr::EXISTS, expr::FIRST_ITERATED_LOGICAL}, + {expr::IMPLICATION, expr::IMPLICATION}, + {expr::IFF, expr::FIRST_BINARY_LOGICAL}, + {expr::ALLDIFF, expr::FIRST_PAIRWISE}, + {expr::NOT_ALLDIFF, expr::FIRST_PAIRWISE}, + {expr::POW_CONST_EXP, expr::FIRST_BINARY}, + {expr::POW2, expr::FIRST_UNARY}, + {expr::POW_CONST_BASE, expr::FIRST_BINARY}, + {expr::CALL, expr::CALL}, + {expr::NUMBER, expr::NUMBER}, + {expr::STRING, expr::STRING}, + {expr::VARIABLE, expr::VARIABLE} +}; + +const mp::internal::ExprInfo mp::internal::ExprInfo::INFO[] = { + {-1, "unknown"}, + {80, "number"}, + {82, "variable"}, + {-1, "common expression"}, + {16, "unary -"}, + {15, "abs"}, + {13, "floor"}, + {14, "ceil"}, + {39, "sqrt"}, + {77, "^2"}, + {44, "exp"}, + {43, "log"}, + {42, "log10"}, + {41, "sin"}, + {40, "sinh"}, + {46, "cos"}, + {45, "cosh"}, + {38, "tan"}, + {37, "tanh"}, + {51, "asin"}, + {50, "asinh"}, + {53, "acos"}, + {52, "acosh"}, + {49, "atan"}, + {47, "atanh"}, + {0, "+"}, + {1, "-"}, + {6, "less"}, + {2, "*"}, + {3, "/"}, + {55, "div"}, + {4, "mod"}, + {5, "^"}, + {78, "^"}, + {76, "^"}, + {48, "atan2"}, + {56, "precision"}, + {57, "round"}, + {58, "trunc"}, + {35, "if"}, + {64, "piecewise-linear term"}, + {79, "function call"}, + {11, "min"}, + {12, "max"}, + {54, "sum"}, + {60, "numberof"}, + {61, "symbolic numberof"}, + {59, "count"}, + {80, "bool"}, + {34, "!"}, + {20, "||"}, + {21, "&&"}, + {73, "<==>"}, + {22, "<"}, + {23, "<="}, + {24, "="}, + {28, ">="}, + {29, ">"}, + {30, "!="}, + {62, "atleast"}, + {63, "atmost"}, + {66, "exactly"}, + {67, "!atleast"}, + {68, "!atmost"}, + {69, "!exactly"}, + {72, "==>"}, + {71, "exists"}, + {70, "forall"}, + {74, "alldiff"}, + {75, "!alldiff"}, + {81, "string"}, + {65, "symbolic if"} +}; + +const mp::prec::Precedence mp::expr::PrecInfo::INFO[] = { + prec::UNKNOWN, + prec::PRIMARY, + prec::PRIMARY, + prec::PRIMARY, + prec::UNARY, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::EXPONENTIATION, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::ADDITIVE, + prec::ADDITIVE, + prec::ADDITIVE, + prec::MULTIPLICATIVE, + prec::MULTIPLICATIVE, + prec::MULTIPLICATIVE, + prec::MULTIPLICATIVE, + prec::EXPONENTIATION, + prec::EXPONENTIATION, + prec::EXPONENTIATION, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CONDITIONAL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::ITERATIVE, + prec::CALL, + prec::CALL, + prec::CALL, + prec::PRIMARY, + prec::NOT, + prec::LOGICAL_OR, + prec::LOGICAL_AND, + prec::IFF, + prec::RELATIONAL, + prec::RELATIONAL, + prec::RELATIONAL, + prec::RELATIONAL, + prec::RELATIONAL, + prec::RELATIONAL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::IMPLICATION, + prec::CALL, + prec::CALL, + prec::CALL, + prec::CALL, + prec::PRIMARY, + prec::CONDITIONAL +}; diff --git a/bundled/asl-extra/no_benchmark.patch b/bundled/asl-extra/no_benchmark.patch new file mode 100644 index 0000000..800ac74 --- /dev/null +++ b/bundled/asl-extra/no_benchmark.patch @@ -0,0 +1,18 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 523faa7f..be88636d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -381,13 +381,6 @@ foreach (module ${MP_MODULES}) + endif () + endforeach () + +-if (MP_VARIADIC_TEMPLATES AND HAVE_ATOMIC) +- option(BENCHMARK_ENABLE_TESTING +- "Enable testing of the benchmark library." OFF) +- add_subdirectory(thirdparty/benchmark) +- enable_cxx11(benchmark) +-endif () +- + enable_testing() + add_subdirectory(test) + diff --git a/bundled/mumps-extra/quiet.diff b/bundled/mumps-extra/quiet.diff new file mode 100644 index 0000000..299311a --- /dev/null +++ b/bundled/mumps-extra/quiet.diff @@ -0,0 +1,20 @@ +index af0b62a..55e372e 100644 +--- a/MUMPS/src/dmumps_part1.F ++++ b/MUMPS/src/dmumps_part1.F +@@ -104,16 +104,6 @@ C matrix in assembled format (ICNTL(5)=0, and ICNTL(18) $\neq$ 3), + MPG = id%ICNTL(3) + PROK = ((MP.GT.0).AND.(id%ICNTL(4).GE.3)) + PROKG = ( MPG .GT. 0 .and. id%MYID .eq. MASTER ) +- IF (PROKG) THEN +- IF (id%ICNTL(5) .NE. 1) THEN +- WRITE(MPG,'(A,I4,I12,I15)') +- & 'Entering DMUMPS driver with JOB, N, NZ =', JOB,N,NZ +- ELSE +- WRITE(MPG,'(A,I4,I12,I15)') +- & 'Entering DMUMPS driver with JOB, N, NELT =', JOB,N +- & ,NELT +- ENDIF +- ENDIF + ELSE + MPG = 0 + PROK = .FALSE. From d266a1372c3b9ada81d91be8cd3d9edf9f985bb6 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 17:32:49 -0400 Subject: [PATCH 04/13] Update build_tarballs.jl --- build_tarballs.jl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index d93ae26..a7370ca 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -57,10 +57,15 @@ COINBLAS_hash = "f9601efb98f04fdba220d49d5bda98d2a5a5e2ed7564df339bc7149b0c303f0 ASL_version = v"3.1.0" ASL_extension = "tar.gz" ASL_hash = "587c1a88f4c8f57bef95b58a8586956145417c8039f59b1758365ccc5a309ae9" + +# List of symbols that will be externally visible in the Clp library +# List of symbols is separated by | and the true symbol names are matched +# with a * pre- and post-appended (e.g. Clp matches *Clp*) +BB_PRESERVE_SYMBOLS = "Clp|maximumIterations" ##END-EASY-CHANGE-BLOCK name = "ClpBuilder" -# Collection of sources required to build CbcBuilder +# Collection of sources required to build ClpBuilder sources = [ "./bundled", "https://github.com/coin-or/Clp/archive/releases/$(Clp_version).$(Clp_extension)" => @@ -83,9 +88,6 @@ sources = [ # Bash recipe for building across all platforms script = raw""" -# separated by | and they are regex -export finalsyms="Clp" - cd $WORKSPACE/srcdir set -e ### Preliminaries @@ -228,10 +230,8 @@ fi # Staticly link all dependencies and export only Clp symbols # force only exporting symbols related to Clp -sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"mysymbols\\""|g' ../configure -sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"mysymbols\\""|g' ../Clp/configure -sed -i~ -e "s|mysymbols|$finalsyms|g" ../configure -sed -i~ -e "s|mysymbols|$finalsyms|g" ../Clp/configure +sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""|g' ../configure +sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""|g' ../Clp/configure # configure, make and install if [ $target = "x86_64-apple-darwin14" ]; then @@ -295,6 +295,7 @@ make install # Clean-up lib directory rm ${prefix}/lib/*.a """ +script = replace(script, "BB_PRESERVE_SYMBOLS" => BB_PRESERVE_SYMBOLS) # These are the platforms we will build for by default, unless further # platforms are passed in on the command line From 7759045d416ee05c4fa16aa4e98385f2e223fcfc Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 17:37:14 -0400 Subject: [PATCH 05/13] Update build_tarballs.jl --- build_tarballs.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index a7370ca..f584197 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -230,8 +230,8 @@ fi # Staticly link all dependencies and export only Clp symbols # force only exporting symbols related to Clp -sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""|g' ../configure -sed -i~ -e 's|LT_LDFLAGS="-no-undefined"|LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""|g' ../Clp/configure +sed -i~ -e 's/LT_LDFLAGS="-no-undefined"/LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""/g' ../configure +sed -i~ -e 's/LT_LDFLAGS="-no-undefined"/LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""/g' ../Clp/configure # configure, make and install if [ $target = "x86_64-apple-darwin14" ]; then From cacf89b1962ba487b1850367ccf5f1fa182ef22a Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 17:45:59 -0400 Subject: [PATCH 06/13] Update build_tarballs.jl --- build_tarballs.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index f584197..00be8e6 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -279,7 +279,7 @@ fi # we switch to -version-script if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver - echo *$finalsyms*\; | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver + echo *BB_PRESERVE_SYMBOLS*\; | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi From 2d951cab56cb8c55929f8fb53527cc4a06c6781c Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 18:04:43 -0400 Subject: [PATCH 07/13] Update build_tarballs.jl --- build_tarballs.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index 00be8e6..c253d85 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -279,7 +279,7 @@ fi # we switch to -version-script if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver - echo *BB_PRESERVE_SYMBOLS*\; | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver + echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi From c89c3d01146c2bd8c88a01d582f4e3b566689f9d Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 19:18:51 -0400 Subject: [PATCH 08/13] Update build_tarballs.jl --- build_tarballs.jl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index c253d85..216e151 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -61,7 +61,7 @@ ASL_hash = "587c1a88f4c8f57bef95b58a8586956145417c8039f59b1758365ccc5a309ae9" # List of symbols that will be externally visible in the Clp library # List of symbols is separated by | and the true symbol names are matched # with a * pre- and post-appended (e.g. Clp matches *Clp*) -BB_PRESERVE_SYMBOLS = "Clp|maximumIterations" +PRESERVE_SYMBOLS = ["Clp","maximumIterations"] ##END-EASY-CHANGE-BLOCK name = "ClpBuilder" @@ -230,8 +230,8 @@ fi # Staticly link all dependencies and export only Clp symbols # force only exporting symbols related to Clp -sed -i~ -e 's/LT_LDFLAGS="-no-undefined"/LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""/g' ../configure -sed -i~ -e 's/LT_LDFLAGS="-no-undefined"/LT_LDFLAGS="-no-undefined -export-symbols-regex \\"BB_PRESERVE_SYMBOLS\\""/g' ../Clp/configure +sed -i~ -e 's/LT_LDFLAGS="-no-undefined"/LT_LDFLAGS="-no-undefined -export-symbols-regex \\\\"BB_PRESERVE_SYMBOLS\\\\""/g' ../configure +sed -i~ -e 's/LT_LDFLAGS="-no-undefined"/LT_LDFLAGS="-no-undefined -export-symbols-regex \\\\"BB_PRESERVE_SYMBOLS\\\\""/g' ../Clp/configure # configure, make and install if [ $target = "x86_64-apple-darwin14" ]; then @@ -279,7 +279,7 @@ fi # we switch to -version-script if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver - echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver + echo "*BB_PRESERVE_SYMBOLS_LINUX*;" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi @@ -295,7 +295,10 @@ make install # Clean-up lib directory rm ${prefix}/lib/*.a """ +BB_PRESERVE_SYMBOLS = join(PRESERVE_SYMBOLS, raw"""\\|""") script = replace(script, "BB_PRESERVE_SYMBOLS" => BB_PRESERVE_SYMBOLS) +BB_PRESERVE_SYMBOLS_LINUX = join(PRESERVE_SYMBOLS, "*;*") +script = replace(script, "BB_PRESERVE_SYMBOLS_LINUX" => BB_PRESERVE_SYMBOLS_LINUX) # These are the platforms we will build for by default, unless further # platforms are passed in on the command line From 8bea90431f97bcd1a9f8ab8068ecb27d40ae904a Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 19:19:28 -0400 Subject: [PATCH 09/13] Update build_tarballs.jl --- build_tarballs.jl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index 216e151..8da6e1a 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -59,8 +59,7 @@ ASL_extension = "tar.gz" ASL_hash = "587c1a88f4c8f57bef95b58a8586956145417c8039f59b1758365ccc5a309ae9" # List of symbols that will be externally visible in the Clp library -# List of symbols is separated by | and the true symbol names are matched -# with a * pre- and post-appended (e.g. Clp matches *Clp*) +# The true symbol names are matched with a * pre- and post-appended (e.g. Clp matches *Clp*) PRESERVE_SYMBOLS = ["Clp","maximumIterations"] ##END-EASY-CHANGE-BLOCK From 125432974dab39b5737f7dec90c33a7dd156c545 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Sun, 27 Oct 2019 19:29:33 -0400 Subject: [PATCH 10/13] Update build_tarballs.jl --- build_tarballs.jl | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index 8da6e1a..81cc11f 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -278,7 +278,7 @@ fi # we switch to -version-script if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver - echo "*BB_PRESERVE_SYMBOLS_LINUX*;" >> $WORKSPACE/srcdir/names.ver + echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/\\\|/*;*/g" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi @@ -296,8 +296,6 @@ rm ${prefix}/lib/*.a """ BB_PRESERVE_SYMBOLS = join(PRESERVE_SYMBOLS, raw"""\\|""") script = replace(script, "BB_PRESERVE_SYMBOLS" => BB_PRESERVE_SYMBOLS) -BB_PRESERVE_SYMBOLS_LINUX = join(PRESERVE_SYMBOLS, "*;*") -script = replace(script, "BB_PRESERVE_SYMBOLS_LINUX" => BB_PRESERVE_SYMBOLS_LINUX) # These are the platforms we will build for by default, unless further # platforms are passed in on the command line From d05542805b36fc9dcd5938955cf77da4bcb96273 Mon Sep 17 00:00:00 2001 From: jvielma Date: Mon, 28 Oct 2019 15:17:54 -0400 Subject: [PATCH 11/13] fix | --- build_tarballs.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index 81cc11f..e420796 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -278,7 +278,7 @@ fi # we switch to -version-script if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver - echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/\\\|/*;*/g" >> $WORKSPACE/srcdir/names.ver + echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi @@ -294,7 +294,7 @@ make install # Clean-up lib directory rm ${prefix}/lib/*.a """ -BB_PRESERVE_SYMBOLS = join(PRESERVE_SYMBOLS, raw"""\\|""") +BB_PRESERVE_SYMBOLS = join(PRESERVE_SYMBOLS, raw"""|""") script = replace(script, "BB_PRESERVE_SYMBOLS" => BB_PRESERVE_SYMBOLS) # These are the platforms we will build for by default, unless further From 25386c423ba0a4eab8f3e8d1deb56289744d06a8 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Mon, 28 Oct 2019 17:47:11 -0400 Subject: [PATCH 12/13] Update build_tarballs.jl --- build_tarballs.jl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index e420796..9e2cd5b 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -33,24 +33,24 @@ using BinaryBuilder ##START-EASY-CHANGE-BLOCK -Clp_version = v"1.17.3" +Clp_version = v"1.16.11" Clp_extension = "tar.gz" -Clp_hash = "25f0692fe1daa492e7801770af6991506ae9a8c34a4cae358d017400a02dfcf8" -Osi_version = v"0.108.5" +Clp_hash = "ac42c00ba95e1e034ae75ba0e3a5ff03b452191e0c9b2f5e2d5e65bf652fb0a1" +Osi_version = v"0.107.9" Osi_extension = "tar.gz" -Osi_hash = "c9a6f098e2824883bb3ec1f12df5987b7a8da0f1241988a5dd4663ac362e6381" -CoinUtils_version = v"2.11.3" +Osi_hash = "e2c8a0ee4a2a0abe7475d67f7f98230e8bfbbcb6e74487877e757c996bfd6d30" +CoinUtils_version = v"2.10.14" CoinUtils_extension = "tar.gz" -CoinUtils_hash = "7c4753816e765974941db75ec89f8855e56b86959f3a5f068fdf95b0003be61c" +CoinUtils_hash = "929b6eae0aaf62cf4467e506f24dfab1df7ab8d2e5a1ea71e9bab5480e872d84" COINMumps_version = v"1.6.0" COINMumps_extension = "tar.gz" COINMumps_hash = "3f2bb7d13333e85a29cd2dadc78a38bbf469bc3920c4c0933a90b7d8b8dc798a" COINMetis_version = v"1.3.5" COINMetis_extension = "tar.gz" COINMetis_hash = "98a6110d5d004a16ad42ee26cfac508477f44aa6fe296b90a6413fe0273ebe24" -COINLapack_version = v"1.6.0" -COINLapack_extension = "zip" -COINLapack_hash = "227969f240176c8e1f391548f8f854bf81ac13c9c3f9803b345eaa052a399b3a" +COINLapack_version = v"1.5.6" +COINLapack_extension = "tar.gz" +COINLapack_hash = "c625dbb227e54e496430ffa708ddf23df5dbf173a0fcf570e1c249e13e411ba1" COINBLAS_version = v"1.4.6" COINBLAS_extension = "tar.gz" COINBLAS_hash = "f9601efb98f04fdba220d49d5bda98d2a5a5e2ed7564df339bc7149b0c303f0c" @@ -280,7 +280,7 @@ if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver - sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool +# sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi make -j${nproc} From 0cb342c1a48cdb97cb78f7f9cb81fc8faf4c9deb Mon Sep 17 00:00:00 2001 From: Juan Pablo Vielma Date: Mon, 28 Oct 2019 19:30:28 -0400 Subject: [PATCH 13/13] Update build_tarballs.jl --- build_tarballs.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_tarballs.jl b/build_tarballs.jl index 9e2cd5b..f1cf0ba 100755 --- a/build_tarballs.jl +++ b/build_tarballs.jl @@ -280,7 +280,7 @@ if [ $target = "x86_64-linux-gnu" ] || [ $target = "i686-linux-gnu" ]; then echo "{ global:" > $WORKSPACE/srcdir/names.ver echo "*BB_PRESERVE_SYMBOLS*;" | sed -e "s/|/*;*/g" >> $WORKSPACE/srcdir/names.ver echo "local: *; };" >> $WORKSPACE/srcdir/names.ver -# sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool + sed -i~ -e 's/archive_expsym_cmds=.*CC.*/archive_expsym_cmds="\\$CC -shared -nostdlib \\$predep_objects \\$libobjs \\$deplibs \\$postdep_objects \\$compiler_flags \\${wl}-soname \\$wl\\$soname \\${wl}-version-script \\${wl}\\$WORKSPACE\/srcdir\/names.ver -o \\$lib"/g' libtool fi make -j${nproc}