@@ -99,6 +99,10 @@ if [ "$BUILD_TYPE" = fightwarn ]; then
99
99
100
100
# Similarly for libusb implementations with varying support
101
101
# [ -n "$NUT_USB_VARIANTS" ] || NUT_USB_VARIANTS=auto
102
+
103
+ # Similarly for testing builds with and without "unmapped" values
104
+ # (normally hidden by #ifdef blocks) in certain evolving drivers
105
+ # [ -n "$NUT_UNMAPPED_VARIANTS" ] || NUT_UNMAPPED_VARIANTS=auto
102
106
fi
103
107
104
108
# configure default is "no"; an "auto" value is "yes unless CFLAGS say something"
@@ -1449,7 +1453,7 @@ echo "Processing BUILD_TYPE='${BUILD_TYPE}' ..."
1449
1453
1450
1454
ensure_CI_CCACHE_SYMLINKDIR_envvar
1451
1455
echo " Build host settings:"
1452
- set | grep -E ' ^(PATH|[^ ]*CCACHE[^ ]*|CI_[^ ]*|OS_[^ ]*|CANBUILD_[^ ]*|NODE_LABELS|MAKE|C[^ ]*FLAGS|LDFLAGS|ARCH[^ ]*|BITS[^ ]*|CC|CXX|CPP|DO_[^ ]*|BUILD_[^ ]*|[^ ]*_TGT)=' || true
1456
+ set | grep -E ' ^(PATH|[^ ]*CCACHE[^ ]*|CI_[^ ]*|OS_[^ ]*|CANBUILD_[^ ]*|NODE_LABELS|MAKE|C[^ ]*FLAGS|LDFLAGS|ARCH[^ ]*|BITS[^ ]*|CC|CXX|CPP|DO_[^ ]*|BUILD_[^ ]*|[^ ]*_TGT|INPLACE_RUNTIME )=' || true
1453
1457
uname -a
1454
1458
echo " LONG_BIT:` getconf LONG_BIT` WORD_BIT:` getconf WORD_BIT` " || true
1455
1459
if command -v xxd > /dev/null ; then xxd -c 1 -l 6 | tail -1; else if command -v od > /dev/null; then od -N 1 -j 5 -b | head -1 ; else hexdump -s 5 -n 1 -C | head -1; fi ; fi < /bin/ls 2> /dev/null | awk ' ($2 == 1){print "Endianness: LE"}; ($2 == 2){print "Endianness: BE"}' || true
@@ -1513,6 +1517,16 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-sp
1513
1517
CONFIG_OPTS+=(" --with-devd-dir=${BUILD_PREFIX} /etc/devd" )
1514
1518
CONFIG_OPTS+=(" --with-hotplug-dir=${BUILD_PREFIX} /etc/hotplug" )
1515
1519
1520
+ if [ " ${BUILD_TYPE} " != " default-all-errors" ] ; then
1521
+ case x" ${WITH_UNMAPPED_DATAPOINTS-} " in
1522
+ [Tt][Rr][Uu][Ee]|[Yy][Ee][Ss])
1523
+ CONFIG_OPTS+=(" --with-unmapped-data-points" ) ;;
1524
+ [Ff][Aa][Ll][Ss][Ee]|[Nn][Oo])
1525
+ CONFIG_OPTS+=(" --without-unmapped-data-points" ) ;;
1526
+ * ) ;; # Keep built-in default
1527
+ esac
1528
+ fi
1529
+
1516
1530
if [ x" ${INPLACE_RUNTIME-} " = xtrue ]; then
1517
1531
CONFIG_OPTS+=(" --enable-inplace-runtime" )
1518
1532
fi
@@ -1967,6 +1981,17 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-sp
1967
1981
fi
1968
1982
fi
1969
1983
1984
+ if [ -z " $NUT_UNMAPPED_VARIANTS " ] || [ " $NUT_UNMAPPED_VARIANTS " = auto ] ; then
1985
+ case x" ${WITH_UNMAPPED_DATAPOINTS-} " in
1986
+ [Tt][Rr][Uu][Ee]|[Yy][Ee][Ss])
1987
+ NUT_UNMAPPED_VARIANTS=" yes" ;;
1988
+ [Ff][Aa][Ll][Ss][Ee]|[Nn][Oo])
1989
+ NUT_UNMAPPED_VARIANTS=" no" ;;
1990
+ * )
1991
+ NUT_UNMAPPED_VARIANTS=" yes no" ;;
1992
+ esac
1993
+ fi
1994
+
1970
1995
# Count our expected build variants, so the last one gets the
1971
1996
# "maintainer-clean" check and not a mere "distclean" check
1972
1997
# NOTE: We count different dependency variations separately,
@@ -1981,6 +2006,15 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-sp
1981
2006
BUILDSTODO_USB=" ` expr $BUILDSTODO_USB + 1` "
1982
2007
done
1983
2008
2009
+ BUILDSTODO_UNMAPPED=0
2010
+ for NUT_UNMAPPED_VARIANT in $NUT_UNMAPPED_VARIANTS ; do
2011
+ BUILDSTODO_UNMAPPED=" ` expr $BUILDSTODO_UNMAPPED + 1` "
2012
+ done
2013
+ # Use the only one requested right away
2014
+ if [ " ${BUILDSTODO_UNMAPPED} " -eq 1 ] ; then
2015
+ CONFIG_OPTS+=(" --with-unmapped-data-points=${NUT_UNMAPPED_VARIANT} " )
2016
+ fi
2017
+
1984
2018
if [ " ${BUILDSTODO_SSL} " -gt 1 ] \
1985
2019
&& [ " ${BUILDSTODO_USB} " -gt 1 ] \
1986
2020
; then
@@ -2012,10 +2046,17 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-sp
2012
2046
echo " === Only build USB scenario(s) picking whatever SSL is found"
2013
2047
BUILDSTODO=" ${BUILDSTODO_USB} "
2014
2048
fi
2049
+
2050
+ fi
2051
+
2052
+ # Tack a remaining yes/no in the end to whatever scenario is there;
2053
+ # NOT a full matrix
2054
+ if [ " ${BUILDSTODO_UNMAPPED} " -gt 1 ] ; then
2055
+ BUILDSTODO=" ` expr $BUILDSTODO + $BUILDSTODO_UNMAPPED - 1` "
2015
2056
fi
2016
2057
2017
2058
BUILDSTODO_INITIAL=" $BUILDSTODO "
2018
- echo " === Will loop now with $BUILDSTODO build variants: found ${BUILDSTODO_SSL} SSL ($NUT_SSL_VARIANTS ) and ${BUILDSTODO_USB} USB ($NUT_USB_VARIANTS ) variations..."
2059
+ echo " === Will loop now with $BUILDSTODO build variants: found ${BUILDSTODO_SSL} SSL ($NUT_SSL_VARIANTS ) and ${BUILDSTODO_USB} USB ($NUT_USB_VARIANTS ) and ${BUILDSTODO_UNMAPPED} UNMAPPED ( $NUT_UNMAPPED_VARIANTS ) variations..."
2019
2060
# If we don't care about SSL implem and want to pick USB, go straight there
2020
2061
( [ " $NUT_SSL_VARIANTS " = " auto" ] && [ " ${BUILDSTODO_USB} " -gt 0 ] ) || \
2021
2062
for NUT_SSL_VARIANT in $NUT_SSL_VARIANTS ; do
@@ -2130,7 +2171,7 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-sp
2130
2171
echo " === SKIPPED sandbox cleanup because DO_CLEAN_CHECK=$DO_CLEAN_CHECK and $BUILDSTODO build variants remaining"
2131
2172
fi
2132
2173
fi
2133
- done
2174
+ done # end of "for NUT_SSL_VARIANT in $NUT_SSL_VARIANTS"
2134
2175
2135
2176
# Effectively, whatever up to one version of LibUSB support
2136
2177
# was detected (or not), was tested above among SSL builds.
@@ -2278,7 +2319,112 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-sp
2278
2319
echo " === SKIPPED sandbox cleanup because DO_CLEAN_CHECK=$DO_CLEAN_CHECK and $BUILDSTODO build variants remaining"
2279
2320
fi
2280
2321
fi
2281
- done
2322
+ done # end of "for NUT_USB_VARIANT in $NUT_USB_VARIANTS"
2323
+
2324
+ # Tack a remaining yes/no in the end to whatever scenario is there;
2325
+ # NOT a full matrix
2326
+ if [ " ${BUILDSTODO_UNMAPPED} " -gt 1 ] ; then
2327
+ for NUT_UNMAPPED_VARIANT in $NUT_UNMAPPED_VARIANTS ; do
2328
+ case " ${NUT_UNMAPPED_VARIANT} " in
2329
+ no) ;; # we already did the default ("no") implicitly
2330
+ * ) # Try this variant
2331
+ echo " === Starting 'NUT_UNMAPPED_VARIANT=$NUT_UNMAPPED_VARIANT ', $BUILDSTODO build variants remaining..."
2332
+ ( if [ " $NUT_SSL_VARIANTS " != " auto" ] ; then
2333
+ CONFIG_OPTS+=(" --without-all" )
2334
+ CONFIG_OPTS+=(" --without-ssl" )
2335
+ fi
2336
+ CONFIG_OPTS+=(" --with-serial=auto" )
2337
+ if [ " $NUT_USB_VARIANTS " != " no" ] ; then
2338
+ CONFIG_OPTS+=(" --with-usb=auto" )
2339
+ fi
2340
+ CONFIG_OPTS+=(" --with-unmapped-data-points=${NUT_UNMAPPED_VARIANT} " )
2341
+ configure_nut
2342
+ ) || {
2343
+ RES_ALLERRORS=$?
2344
+ FAILED=" ${FAILED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [configure]"
2345
+ # TOTHINK: Do we want to try clean-up if we likely have no Makefile?
2346
+ if [ " $CI_FAILFAST " = true ]; then
2347
+ echo " ===== Aborting because CI_FAILFAST=$CI_FAILFAST " >&2
2348
+ break
2349
+ fi
2350
+ BUILDSTODO=" ` expr $BUILDSTODO - 1` " || [ " $BUILDSTODO " = " 0" ] || break
2351
+ continue
2352
+ }
2353
+
2354
+ echo " === Configured 'NUT_UNMAPPED_VARIANT=$NUT_UNMAPPED_VARIANT ', $BUILDSTODO build variants (including this one) remaining to complete; trying to build..."
2355
+ cd " ${CI_BUILDDIR} "
2356
+ # Use default target e.g. "all":
2357
+ build_to_only_catch_errors_target && {
2358
+ SUCCEEDED=" ${SUCCEEDED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [build]"
2359
+ } || {
2360
+ RES_ALLERRORS=$?
2361
+ FAILED=" ${FAILED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [build]"
2362
+ # Help find end of build (before cleanup noise) in logs:
2363
+ echo " === FAILED 'NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} ' build"
2364
+ if [ " $CI_FAILFAST " = true ]; then
2365
+ echo " ===== Aborting because CI_FAILFAST=$CI_FAILFAST " >&2
2366
+ break
2367
+ fi
2368
+ }
2369
+
2370
+ build_to_only_catch_errors_check && {
2371
+ SUCCEEDED=" ${SUCCEEDED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [check]"
2372
+ } || {
2373
+ RES_ALLERRORS=$?
2374
+ FAILED=" ${FAILED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [check]"
2375
+ # Help find end of build (before cleanup noise) in logs:
2376
+ echo " === FAILED 'NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} ' check"
2377
+ if [ " $CI_FAILFAST " = true ]; then
2378
+ echo " ===== Aborting because CI_FAILFAST=$CI_FAILFAST " >&2
2379
+ break
2380
+ fi
2381
+ }
2382
+
2383
+ # Note: when `expr` calculates a zero value below, it returns
2384
+ # an "erroneous" `1` as exit code. Notes above.
2385
+ BUILDSTODO=" ` expr $BUILDSTODO - 1` " || [ " $BUILDSTODO " = " 0" ] || break
2386
+
2387
+ if [ " $BUILDSTODO " -gt 0 ] && [ " ${DO_CLEAN_CHECK-} " != no ]; then
2388
+ # For last iteration with DO_CLEAN_CHECK=no,
2389
+ # we would leave built products in place
2390
+ echo " === Clean the sandbox, $BUILDSTODO build variants remaining..."
2391
+ fi
2392
+
2393
+ if can_clean_check ; then
2394
+ if [ $BUILDSTODO -gt 0 ]; then
2395
+ # ## Avoid having to re-autogen in a loop:
2396
+ optional_dist_clean_check && {
2397
+ if [ " ${DO_DIST_CLEAN_CHECK-} " != " no" ] ; then
2398
+ SUCCEEDED=" ${SUCCEEDED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [dist_clean]"
2399
+ fi
2400
+ } || {
2401
+ RES_ALLERRORS=$?
2402
+ FAILED=" ${FAILED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [dist_clean]"
2403
+ }
2404
+ else
2405
+ optional_maintainer_clean_check && {
2406
+ if [ " ${DO_MAINTAINER_CLEAN_CHECK-} " != no ] ; then
2407
+ SUCCEEDED=" ${SUCCEEDED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [maintainer_clean]"
2408
+ fi
2409
+ } || {
2410
+ RES_ALLERRORS=$?
2411
+ FAILED=" ${FAILED} NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} [maintainer_clean]"
2412
+ }
2413
+ fi
2414
+ echo " === Completed sandbox cleanup-check after NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} , $BUILDSTODO build variants remaining"
2415
+ else
2416
+ if [ " $BUILDSTODO " -gt 0 ] && [ " ${DO_CLEAN_CHECK-} " != no ]; then
2417
+ $MAKE distclean $MAKE_FLAGS_CLEAN -k \
2418
+ || echo " WARNING: 'make distclean' FAILED: $? ... proceeding" >&2
2419
+ echo " === Completed sandbox cleanup after NUT_UNMAPPED_VARIANT=${NUT_UNMAPPED_VARIANT} , $BUILDSTODO build variants remaining"
2420
+ else
2421
+ echo " === SKIPPED sandbox cleanup because DO_CLEAN_CHECK=$DO_CLEAN_CHECK and $BUILDSTODO build variants remaining"
2422
+ fi
2423
+ fi
2424
+ ;; # end of "Try this variant"
2425
+ esac
2426
+ done # end of "for NUT_UNMAPPED_VARIANT in $NUT_UNMAPPED_VARIANTS"
2427
+ fi
2282
2428
2283
2429
# TODO: Similar loops for other variations like TESTING,
2284
2430
# MGE SHUT vs. other serial protocols...
@@ -2461,6 +2607,21 @@ bindings)
2461
2607
CONFIG_OPTS+=(" --disable-silent-rules" )
2462
2608
fi
2463
2609
2610
+ if [ -z " ${WITH_UNMAPPED_DATAPOINTS-} " ] ; then
2611
+ if [ x" ${INPLACE_RUNTIME-} " = xtrue ]; then
2612
+ WITH_UNMAPPED_DATAPOINTS=false
2613
+ else
2614
+ WITH_UNMAPPED_DATAPOINTS=true
2615
+ fi
2616
+ fi
2617
+
2618
+ if [ x" ${WITH_UNMAPPED_DATAPOINTS-} " = xtrue ] ; then
2619
+ # This is assumed for non-production builds to avoid confusion
2620
+ # for end-users (not dev/testers).
2621
+ # See above for defaulting of this vs. inplace builds.
2622
+ CONFIG_OPTS+=(" --with-unmapped-data-points" )
2623
+ fi
2624
+
2464
2625
if [ -n " ${BUILD_DEBUGINFO-} " ]; then
2465
2626
CONFIG_OPTS+=(" --with-debuginfo=${BUILD_DEBUGINFO} " )
2466
2627
else
0 commit comments