Skip to content

Commit

Permalink
Mitigate S3 test interference + Unlimited Dimensions in NCZarr
Browse files Browse the repository at this point in the history
This PR started as an attempt to add unlimited dimensions to NCZarr.
It did that, but this exposed significant problems with test interference.
So this PR is mostly about fixing -- well mitigating anyway -- test
interference.

The problem of test interference is now documented in the document docs/internal.md.
The solutions implemented here are also describe in that document.
The solution is somewhat fragile but multiple cleanup mechanisms
are provided. Note that this feature requires that the
AWS command line utility must be installed.

## Unlimited Dimensions.
The existing NCZarr extensions to Zarr are modified to support unlimited dimensions.
NCzarr extends the Zarr meta-data for the ".zgroup" object to include netcdf-4 model extensions. This information is stored in ".zgroup" as dictionary named "_nczarr_group".
Inside "_nczarr_group", there is a key named "dims" that stores information about netcdf-4 named dimensions. The value of "dims" is a dictionary whose keys are the named dimensions. The value associated with each dimension name has one of two forms
Form 1 is a special case of form 2, and is kept for backward compatibility. Whenever a new file is written, it uses format 1 if possible, otherwise format 2.
* Form 1: An integer representing the size of the dimension, which is used for simple named dimensions.
* Form 2: A dictionary with the following keys and values"
   - "size" with an integer value representing the (current) size of the dimension.
   - "unlimited" with a value of either "1" or "0" to indicate if this dimension is an unlimited dimension.

For Unlimited dimensions, the size is initially zero, and as variables extend the length of that dimension, the size value for the dimension increases.
That dimension size is shared by all arrays referencing that dimension, so if one array extends an unlimited dimension, it is implicitly extended for all other arrays that reference that dimension.
This is the standard semantics for unlimited dimensions.

Adding unlimited dimensions required a number of other changes to the NCZarr code-base. These included the following.
* Did a partial refactor of the slice handling code in zwalk.c to clean it up.
* Added a number of tests for unlimited dimensions derived from the same test in nc_test4.
* Added several NCZarr specific unlimited tests; more are needed.
* Add test of endianness.

## Misc. Other Changes
* Modify libdispatch/ncs3sdk_aws.cpp to optionally support use of the
   AWS Transfer Utility mechanism. This is controlled by the
   ```#define TRANSFER```` command in that file. It defaults to being disabled.
* Parameterize both the standard Unidata S3 bucket (S3TESTBUCKET) and the netcdf-c test data prefix (S3TESTSUBTREE).
* Fixed an obscure memory leak in ncdump.
* Removed some obsolete unit testing code and test cases.
* Uncovered a bug in the netcdf-c handling of big-endian floats and doubles. Have not fixed yet. See tst_h5_endians.c.
* Renamed some nczarr_tests testcases to avoid name conflicts with nc_test4.
* Modify the semantics of zmap\#ncsmap_write to only allow total rewrite of objects.
* Modify the semantics of zodom to properly handle stride > 1.
* Add a truncate operation to the libnczarr zmap code.
  • Loading branch information
DennisHeimbigner committed Sep 26, 2023
1 parent 3c789c6 commit df3636b
Show file tree
Hide file tree
Showing 152 changed files with 3,588 additions and 1,888 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/run_tests_win_mingw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
with:
msystem: MINGW64
update: true
install: git mingw-w64-x86_64-toolchain automake libtool autoconf make cmake mingw-w64-x86_64-hdf5 unzip mingw-w64-x86_64-libxml2
install: git mingw-w64-x86_64-toolchain automake libtool autoconf make cmake mingw-w64-x86_64-hdf5 unzip mingw-w64-x86_64-libxml2 mingw-w64-x86_64-zlib

###
# Configure and build
Expand Down
59 changes: 45 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,6 @@ SET(EXTRA_DEPS "")
ENABLE_TESTING()
INCLUDE(CTest)

# Copy the CTest customization file into binary directory, as required.
FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

# Set Memory test program for non-MSVC based builds.
# Assume valgrind for now.
IF((NOT MSVC) AND (NOT MINGW) AND (NOT ISCYGWIN))
Expand Down Expand Up @@ -1327,7 +1324,7 @@ ENDIF()
IF(ENABLE_S3)
IF(NOT ENABLE_S3_INTERNAL)
# See if aws-s3-sdk is available
find_package(AWSSDK REQUIRED COMPONENTS s3;core)
find_package(AWSSDK REQUIRED COMPONENTS s3;transfer)
IF(AWSSDK_FOUND)
SET(service s3;core)
AWSSDK_DETERMINE_LIBS_TO_LINK(service AWS_LINK_LIBRARIES)
Expand All @@ -1340,11 +1337,6 @@ ELSE()
SET(ENABLE_S3_AWS OFF CACHE BOOL "S3 AWS" FORCE)
ENDIF()

# Unless/until we get aws-sdk-cpp working for Windows, force use of internal
IF(ENABLE_S3 AND MSVC)
SET(ENABLE_S3_INTERNAL ON CACHE BOOL "S3 Intern" FORCE)
ENDIF()

IF(ENABLE_S3)
IF(NOT ENABLE_S3_AWS AND NOT ENABLE_S3_INTERNAL)
message(FATAL_ERROR "S3 support library not found; please specify option -DENABLE_S3=NO")
Expand Down Expand Up @@ -1891,6 +1883,10 @@ CHECK_TYPE_SIZE("uintptr_t" SIZEOF_UINTPTR_T)
IF(SIZEOF_UINTPTR_T)
SET(HAVE_UINTPTR_T TRUE)
ENDIF(SIZEOF_UINTPTR_T)
CHECK_TYPE_SIZE("mode_t" SIZEOF_MODE_T)
IF(SIZEOF_MODE_T)
SET(HAVE_MODE_T TRUE)
ENDIF(SIZEOF_MODE_T)

# __int64 is used on Windows for large file support.
CHECK_TYPE_SIZE("__int64" SIZEOF___INT_64)
Expand Down Expand Up @@ -2541,7 +2537,9 @@ SET(host_vendor "${osname}")
SET(host_os "${osrel}")
SET(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}")
SET(abs_top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}")

STRING(RANDOM LENGTH 3 ALPHABET "0123456789" PLATFORMUID)
MATH(EXPR PLATFORMUID "${PLATFORMUID} + 1" OUTPUT_FORMAT DECIMAL)

SET(CC_VERSION "${CMAKE_C_COMPILER}")

# Build *FLAGS for libnetcdf.settings.
Expand Down Expand Up @@ -2600,15 +2598,32 @@ SET(NC_WHICH_S3_SDK "none")
endif()

if(WITH_S3_TESTING STREQUAL PUBLIC)
SET(DO_S3_TESTING "public")
SET(ENABLE_S3_TESTING "public")
elseif(WITH_S3_TESTING)
SET(DO_S3_TESTING "yes")
SET(ENABLE_S3_TESTING "yes")
SET(ENABLE_S3_TESTALL "yes")
elseif(NOT WITH_S3_TESTING)
SET(DO_S3_TESTING "no")
SET(ENABLE_S3_TESTING "no")
else()
SET(DO_S3_TESTING "no")
SET(ENABLE_S3_TESTING "no")
endif()

# The Unidata testing S3 bucket
# WARNING: this must match the value in configure.ac
SET(S3TESTBUCKET "unidata-zarr-test-data" CACHE STRING "S3 test bucket")

# The working S3 path tree within the Unidata bucket.
# WARNING: this must match the value in configure.ac
SET(S3TESTSUBTREE "netcdf-x" CACHE STRING "Working S3 path.")
# Build a unique id based on the date
string(TIMESTAMP TESTUID "%s")
if(ENABLE_S3_TESTING)
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/s3cleanup_${PLATFORMUID}.uids" "${TESTUID}\n")
endif()

# Copy the CTest customization file into binary directory, as required.
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake")

# Generate file from template.
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf.settings.in"
"${CMAKE_CURRENT_BINARY_DIR}/libnetcdf.settings"
Expand Down Expand Up @@ -2653,6 +2668,15 @@ SET(TOPSRCDIR "${CMAKE_CURRENT_SOURCE_DIR}")
SET(TOPBUILDDIR "${CMAKE_CURRENT_BINARY_DIR}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test_common.in ${CMAKE_CURRENT_BINARY_DIR}/test_common.sh @ONLY NEWLINE_STYLE LF)

####
# Build s3cleanup.sh and s3gc.sh
#####
SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/s3cleanup.in ${CMAKE_CURRENT_SOURCE_DIR}/s3gc.in)
SET(TOPSRCDIR "${CMAKE_CURRENT_SOURCE_DIR}")
SET(TOPBUILDDIR "${CMAKE_CURRENT_BINARY_DIR}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/s3cleanup.in ${CMAKE_CURRENT_BINARY_DIR}/s3cleanup.sh @ONLY NEWLINE_STYLE LF)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/s3gc.in ${CMAKE_CURRENT_BINARY_DIR}/s3gc.sh @ONLY NEWLINE_STYLE LF)

#####
# Build and copy nc_test4/findplugin.sh to various places
#####
Expand All @@ -2679,6 +2703,13 @@ IF(ENABLE_TESTS)
# Build dap4_test/pingurl4.c
#####
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ncdap_test/pingurl.c ${CMAKE_CURRENT_BINARY_DIR}/dap4_test/pingurl4.c @ONLY NEWLINE_STYLE LF)

#####
# Build CTestCustom.cmake to cleanup S3 after tests are done.
#####
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake NEWLINE_STYLE LF)


ENDIF()

if(DEFINED ENV{LIB_FUZZING_ENGINE})
Expand Down
7 changes: 7 additions & 0 deletions CTestCustom.cmake → CTestCustom.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,10 @@
## for more information.

set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "500")

IF(HAVE_BASH)
IF(ENABLE_S3_TESTING)
# Assume run in top-level CMAKE_BINARY_DIR
set(CTEST_CUSTOM_POST_TEST "bash ${CMAKE_BINARY_DIR}/s3cleanup.sh")
ENDIF()
ENDIF()
14 changes: 11 additions & 3 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = --without-plugin-dir
EXTRA_DIST = README.md COPYRIGHT INSTALL.md test_prog.c lib_flags.am \
cmake CMakeLists.txt COMPILE.cmake.txt config.h.cmake.in \
cmake_uninstall.cmake.in FixBundle.cmake.in nc-config.cmake.in \
RELEASE_NOTES.md CTestCustom.cmake CTestConfig.cmake.in \
RELEASE_NOTES.md CTestConfig.cmake.in CTestCustom.cmake.in \
libnetcdf.settings.in netCDFConfig.cmake.in CMakeInstallation.cmake \
test-driver-verbose test_common.in fuzz

Expand Down Expand Up @@ -116,10 +116,8 @@ endif

# Optionally build test plugins
if ENABLE_PLUGINS
if ENABLE_FILTER_TESTING
PLUGIN_DIR = plugins
endif
endif

# If benchmarks were turned on, build and run a bunch more tests.
if BUILD_BENCHMARKS
Expand Down Expand Up @@ -209,7 +207,17 @@ install-data-hook:

# Create the VERSION file after the build
# in case it is being used by packagers
# Also track the S3 cleanup id
all-local: liblib/libnetcdf.la
echo ${PACKAGE_VERSION} > VERSION
if ENABLE_S3_TESTALL
echo "@TESTUID@" >> ${abs_top_builddir}/s3cleanup_@[email protected]
endif

if ENABLE_S3_TESTALL
distclean-local:
rm -f ${abs_top_builddir}/s3cleanup_@[email protected]
endif

# Remove the VERSION file
CLEANFILES = VERSION
2 changes: 2 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ This file contains a high-level description of this package's evolution. Release

## 4.9.3 - TBD

* Mitigate the problem of test interference. See [Github #2736](https://github.com/Unidata/netcdf-c/pull/2736).
* Extend NCZarr to support unlimited dimensions. See [Github #2736](https://github.com/Unidata/netcdf-c/pull/2736).
* Fix significant bug in the NCZarr cache management. See [Github #2737](https://github.com/Unidata/netcdf-c/pull/2737).
* Fix default parameters for caching of NCZarr. See [Github #2734](https://github.com/Unidata/netcdf-c/pull/2734).
* Introducing configure-time options to disable various filters, even if the required libraries are available on the system, in support of [GitHub #2712](https://github.com/Unidata/netcdf-c/pull/2712).
Expand Down
9 changes: 9 additions & 0 deletions config.h.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@ are set when opening a binary file on Windows. */
/* if true, enable S3 testing*/
#cmakedefine WITH_S3_TESTING "PUBLIC"

/* S3 Test Bucket */
#define S3TESTBUCKET "${S3TESTBUCKET}"

/* S3 Working subtree path prefix*/
#define S3TESTSUBTREE "${S3TESTSUBTREE}"

/* if true, run extra tests which may not work yet */
#cmakedefine EXTRA_TESTS 1

Expand Down Expand Up @@ -337,6 +343,9 @@ are set when opening a binary file on Windows. */
/* Define to 1 if you have the `snprintf' function. */
#cmakedefine HAVE_SNPRINTF 1

/* Define to 1 if the system has the type `mode_t'. */
#cmakedefine HAVE_MODE_T 1

/* Define to 1 if the system has the type `ssize_t'. */
#cmakedefine HAVE_SSIZE_T 1

Expand Down
42 changes: 34 additions & 8 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,7 @@ AC_DEFINE_UNQUOTED([WITH_S3_TESTING], [$with_s3_testing], [control S3 testing.])

if test "x$with_s3_testing" = xyes ; then
AC_MSG_WARN([*** DO NOT SPECIFY WITH_S3_TESTING=YES UNLESS YOU HAVE ACCESS TO THE UNIDATA S3 BUCKET! ***])
AC_DEFINE([ENABLE_S3_TESTALL], [yes], [control S3 testing.])
fi

# Check whether we want to enable strict null byte header padding.
Expand Down Expand Up @@ -1453,6 +1454,8 @@ AC_TYPE_UINTPTR_T
AC_C_CHAR_UNSIGNED
AC_C_BIGENDIAN

AC_CHECK_TYPES([mode_t])

AM_CONDITIONAL(ISCYGWIN, [test "x$ISCYGWIN" = xyes])
AM_CONDITIONAL(ISMSVC, [test "x$ISMSVC" = xyes])
AM_CONDITIONAL(ISOSX, [test "x$ISOSX" = xyes])
Expand Down Expand Up @@ -2033,7 +2036,7 @@ AC_SUBST(HAS_S3_AWS,[$enable_s3_aws])
AC_SUBST(HAS_S3_INTERNAL,[$enable_s3_internal])
AC_SUBST(HAS_HDF5_ROS3,[$has_hdf5_ros3])
AC_SUBST(HAS_NCZARR,[$enable_nczarr])
AC_SUBST(DO_S3_TESTING,[$with_s3_testing])
AC_SUBST(ENABLE_S3_TESTING,[$with_s3_testing])
AC_SUBST(HAS_NCZARR_ZIP,[$enable_nczarr_zip])
AC_SUBST(DO_NCZARR_ZIP_TESTS,[$enable_nczarr_zip])
AC_SUBST(HAS_QUANTIZE,[$enable_quantize])
Expand All @@ -2056,6 +2059,25 @@ if test "x$enable_s3_aws" = xno && test "x$enable_s3_internal" = xno; then
AC_SUBST(WHICH_S3_SDK,[none])
fi

# The Unidata testing S3 bucket
# WARNING: this must match the value in configure.ac
AC_DEFINE([S3TESTBUCKET], ["unidata-zarr-test-data"], [S3 test bucket])
AC_SUBST([S3TESTBUCKET],["unidata-zarr-test-data"])

# The working S3 path tree within the Unidata bucket.
AC_DEFINE([S3TESTSUBTREE], ["netcdf-x"], [S3 test path prefix])
AC_SUBST([S3TESTSUBTREE],[netcdf-x])

# Build a small unique id to avoid interference on same platform
PLATFORMUID="$RANDOM"
# Make sure uid > 0
PLATFORMUID=$((PLATFORMUID % 1000 + 1))
# Build a unique id based on the date
TESTUID=`date +%s`
AC_DEFINE_UNQUOTED([TESTUID], [${TESTUID}], [S3 working path])
AC_SUBST([TESTUID],${TESTUID})
AC_SUBST([PLATFORMUID],${PLATFORMUID})

# Always available
std_filters="bz2"
if test "x$have_deflate" = xyes ; then
Expand Down Expand Up @@ -2201,18 +2223,21 @@ AC_DEFINE_UNQUOTED([NC_DISPATCH_VERSION], [${NC_DISPATCH_VERSION}], [Dispatch ta
# This would be true for a cmake build.
AC_SUBST([ISCMAKE], [])

# Provide conditional to temporarily suppress tests and such
AM_CONDITIONAL([AX_IGNORE], [test xno = xyes])
# Provide true/false conditionals to temporarily suppress tests and such
AM_CONDITIONAL([AX_DISABLE], [test xno = xyes])
AM_CONDITIONAL([AX_ENABLE], [test xyes = xyes])
# Provide conditional to identify tests that must be run manually
AM_CONDITIONAL([AX_MANUAL], [test xno = xyes])

AC_MSG_NOTICE([generating header files and makefiles])
AC_CONFIG_FILES(test_common.sh:test_common.in)
AC_CONFIG_FILES(nc_test4/findplugin.sh:nc_test4/findplugin.in)
AC_CONFIG_FILES(nczarr_test/findplugin.sh:nc_test4/findplugin.in)
AC_CONFIG_FILES(plugins/findplugin.sh:nc_test4/findplugin.in)
AC_CONFIG_FILES(examples/C/findplugin.sh:nc_test4/findplugin.in)
AC_CONFIG_FILES(ncdap_test/findtestserver.c:ncdap_test/findtestserver.c.in)
AC_CONFIG_FILES(s3cleanup.sh:s3cleanup.in, [chmod ugo+x s3cleanup.sh])
AC_CONFIG_FILES(s3gc.sh:s3gc.in, [chmod ugo+x s3gc.sh])
AC_CONFIG_FILES(nc_test4/findplugin.sh:nc_test4/findplugin.in, [chmod ugo+x nc_test4/findplugin.sh])
AC_CONFIG_FILES(nczarr_test/findplugin.sh:nc_test4/findplugin.in, [chmod ugo+x nczarr_test/findplugin.sh])
AC_CONFIG_FILES(plugins/findplugin.sh:nc_test4/findplugin.in, [chmod ugo+x plugins/findplugin.sh])
AC_CONFIG_FILES(examples/C/findplugin.sh:nc_test4/findplugin.in, [chmod ugo+x examples/C/findplugin.sh])
AC_CONFIG_FILES(ncdap_test/findtestserver.c:ncdap_test/findtestserver.c.in, [chmod ugo+x ncdap_test/findtestserver.c])
AC_CONFIG_FILES([nc_test/run_pnetcdf_tests.sh:nc_test/run_pnetcdf_tests.sh.in],[chmod ugo+x nc_test/run_pnetcdf_tests.sh])
AC_CONFIG_FILES(dap4_test/findtestserver4.c:ncdap_test/findtestserver.c.in)
AC_CONFIG_FILES(dap4_test/pingurl4.c:ncdap_test/pingurl.c)
Expand Down Expand Up @@ -2269,6 +2294,7 @@ AC_CONFIG_FILES([Makefile
ncdap_test/testdata3/Makefile
ncdap_test/expected3/Makefile
ncdap_test/expectremote3/Makefile
ncdap_test/expectedhyrax/Makefile
dap4_test/Makefile
plugins/Makefile
nczarr_test/Makefile
Expand Down
2 changes: 1 addition & 1 deletion dap4_test/test_data.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Test the netcdf-4 data building process.
#endif
#endif

#define DEBUG
#undef DEBUG

static struct Options {
char* file;
Expand Down
37 changes: 18 additions & 19 deletions docs/cloud.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,19 @@ Currently the following build cases are known to work.
<tr><td>Linux <td>CMake <td>aws-s3-sdk <td>yes
<tr><td>Linux <td>CMake <td>nch5s3comms <td>yes
<tr><td>OSX <td>Automake <td>aws-s3-sdk <td>unknown
<tr><td>OSX <td>Automake <td>nch5s3comms <td>unknown
<tr><td>OSX <td>Automake <td>nch5s3comms <td>yes
<tr><td>OSX <td>CMake <td>aws-s3-sdk <td>unknown
<tr><td>OSX <td>CMake <td>nch5s3comms <td>unknown
<tr><td>Visual Studio <td>CMake <td>aws-s3-sdk <td>no (tests-fail)
<tr><td>OSX <td>CMake <td>nch5s3comms <td>yes
<tr><td>Visual Studio <td>CMake <td>aws-s3-sdk <td>no (tests fail)
<tr><td>Visual Studio <td>CMake <td>nch5s3comms <td>yes
<tr><td>Cygwin <td>Automake <td>aws-s3-sdk <td>unknown
<tr><td>Cygwin <td>Automake <td>aws-s3-sdk <td>no (tests fail)
<tr><td>Cygwin <td>Automake <td>nch5s3comms <td>yes
<tr><td>Cygwin <td>CMake <td>aws-s3-sdk <td>unknown
<tr><td>Cygwin <td>CMake <td>nch5s3comms <td>unknown
<tr><td>Cygwin <td>CMake <td>aws-s3-sdk <td>no
<tr><td>Cygwin <td>CMake <td>nch5s3comms <td>yes
<tr><td>Mingw <td>Automake <td>aws-s3-sdk <td>unknown
<tr><td>Mingw <td>Automake <td>nch5s3comms <td>unknown
<tr><td>Mingw <td>Automake <td>nch5s3comms <td>yes
<tr><td>Mingw <td>CMake <td>aws-s3-sdk <td>unknown
<tr><td>Mingw <td>CMake <td>nch5s3comms <td>unknown
<tr><td>Mingw <td>CMake <td>nch5s3comms <td>yes
</table>

## Automake
Expand Down Expand Up @@ -163,7 +163,7 @@ This library, [aws-sdk-cpp library](https://github.com/aws/aws-sdk-cpp.git),
has a number of properties of interest:
* It is written in C++
* It is available on [GitHub](https://github.com/aws/aws-sdk-cpp.git),
* It uses CMake + ninja as its primary build system.
* It uses CMake as its primary build system.

### *\*nix\** Build

Expand All @@ -179,18 +179,17 @@ pushd aws-sdk-cpp
mkdir build
cd build
PREFIX=/usr/local
FLAGS="-DCMAKE_INSTALL_PREFIX=${PREFIX} \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_MODULE_PATH=${PREFIX}/lib/cmake \
FLAGS="-DCMAKE_INSTALL_PREFIX=/usr/local \
-DCMAKE_POLICY_DEFAULT_CMP0075=NEW \
-DBUILD_ONLY=s3 \
-DBUILD_ONLY=s3;transfer \
-DENABLE_UNITY_BUILD=ON \
-DENABLE_TESTING=OFF \
-DCMAKE_BUILD_TYPE=$CFG \
-DSIMPLE_INSTALL=ON"
cmake -GNinja $FLAGS ..
ninja all
ninja install
-DCMAKE_BUILD_TYPE=Release \
-DSIMPLE_INSTALL=ON \
-DENABLE_TESTING=OFF
cmake $FLAGS ..
cmake --build . --config Release
sudo cmake --install . --config Release
cd ..
popd
````
Expand Down
Loading

0 comments on commit df3636b

Please sign in to comment.