github.com/stackdocker/rkt@v0.10.1-0.20151109095037-1aa827478248/configure.ac (about) 1 AC_PREREQ([2.63]) 2 AC_INIT([rkt], [0.10.0+git], [https://github.com/coreos/rkt/issues]) 3 4 AC_DEFUN([RKT_CHECK_PROG], 5 [AS_VAR_IF([$1], [], 6 [AC_CHECK_PROG($@)],[:])]) 7 8 AC_DEFUN([RKT_REQ_PROG], 9 [AS_VAR_IF([$1], [], 10 [AC_CHECK_PROG($@) 11 AS_VAR_IF([$1], [$3], [:], AC_MSG_ERROR([*** $2 not found]))], 12 [:])]) 13 14 AC_DEFUN([RKT_REQ_ABS_PROG], 15 [AS_VAR_IF([$1], [], 16 [AC_PATH_PROG($@) 17 AS_IF([test "x$]$1[" = 'x'], [AC_MSG_ERROR([*** $2 not found])])], 18 [:])]) 19 20 dnl We assume having bash in lots of places, so check it in the 21 dnl beginning. 22 RKT_REQ_ABS_PROG([BASH_SHELL], [bash]) 23 24 dnl if version ends with +git, append a short git-hash. 25 AS_IF([test `expr match 'AC_PACKAGE_VERSION' '.*+git$'` -gt 0], 26 dnl version has +git suffix, ignore errors (not a git repo) 27 [RKT_VERSION="AC_PACKAGE_VERSION`git rev-parse --short HEAD 2>/dev/null``git diff-index --quiet HEAD 2>/dev/null || echo -dirty`"], 28 dnl version has no +git suffix 29 [RKT_VERSION="AC_PACKAGE_VERSION"]) 30 31 AC_CANONICAL_HOST 32 AC_CANONICAL_BUILD 33 34 #### FLAGS 35 36 ## STAGE1 - detailed setup 37 38 AC_ARG_WITH(stage1-default-name, 39 [AS_HELP_STRING([--with-stage1-default-name], 40 [default name of stage1, default: 'coreos.com/rkt/stage1-${flavor}'])], 41 [RKT_STAGE1_DEFAULT_NAME="${withval}"], 42 [RKT_STAGE1_DEFAULT_NAME=auto]) 43 44 AC_ARG_WITH(stage1-default-version, 45 [AS_HELP_STRING([--with-stage1-default-version], 46 [default version of stage1, default: same as rkt version])], 47 [RKT_STAGE1_DEFAULT_VERSION="${withval}"], 48 [RKT_STAGE1_DEFAULT_VERSION=auto]) 49 50 ## STAGE1 - flavor setup 51 52 AC_ARG_WITH([stage1-default-flavor], 53 [AS_HELP_STRING([--with-stage1-default-flavor], 54 [stage1 flavor that will be loaded by default; has to be listed in --with-stage1-flavors, default: first from the stage1 flavors list])], 55 [RKT_STAGE1_DEFAULT_FLAVOR="${withval}"], 56 [RKT_STAGE1_DEFAULT_FLAVOR=auto]) 57 58 ## STAGE1 - common setup 59 60 AC_ARG_WITH([stage1-flavors], 61 [AS_HELP_STRING([--with-stage1-flavors], 62 [comma-separated list of stage1 flavors; choose from 'src', 'coreos', 'host', 'kvm'; default: 'coreos,kvm'])], 63 [RKT_STAGE1_FLAVORS="${withval}"], 64 [RKT_STAGE1_FLAVORS=auto]) 65 66 AC_ARG_WITH(stage1-default-location, 67 [AS_HELP_STRING([--with-stage1-default-location], 68 [default location of stage1, default: none])], 69 [RKT_STAGE1_DEFAULT_LOCATION="${withval}"], 70 [RKT_STAGE1_DEFAULT_LOCATION=auto]) 71 72 # STAGE1 - systemd src and version for src flavor 73 74 AC_ARG_WITH([stage1-systemd-src], 75 [AS_HELP_STRING([--with-stage1-systemd-src], 76 [address to git repository of systemd, used in 'src' stage1 flavor (default: 'https://github.com/systemd/systemd.git')])], 77 [RKT_STAGE1_SYSTEMD_SRC="${withval}"], 78 [RKT_STAGE1_SYSTEMD_SRC='auto']) 79 80 AC_ARG_WITH([stage1-systemd-version], 81 [AS_HELP_STRING([--with-stage1-systemd-version], 82 [systemd version to build, used in 'src' stage1 flavor (default: 'v222', should be in format 'v<number>', like v222)])], 83 [RKT_STAGE1_SYSTEMD_VER="${withval}"], 84 [RKT_STAGE1_SYSTEMD_VER='auto']) 85 86 ## STAGE1 - path to coreos pxe and its systemd version for kvm and coreos flavors 87 88 AC_ARG_WITH([coreos-local-pxe-image-path], 89 [AS_HELP_STRING([--with-coreos-local-pxe-image-path], 90 [path to local CoreOS PXE image, used in 'coreos' and 'kvm' stage1 flavors (default: empty) (the GPG signature of this file will not be checked!)])], 91 [RKT_LOCAL_COREOS_PXE_IMAGE_PATH="${withval}"], 92 [RKT_LOCAL_COREOS_PXE_IMAGE_PATH=""]) 93 94 AC_ARG_WITH([coreos-local-pxe-image-systemd-version], 95 [AS_HELP_STRING([--with-coreos-local-pxe-image-systemd-version], 96 [version of systemd in local CoreOS PXE image, used in 'coreos' and 'kvm' stage1 flavors (should be in format 'v<number>', like v222)])], 97 [RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER="${withval}"], 98 [RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER=]) 99 100 ## Functional tests 101 102 AC_ARG_ENABLE([functional-tests], 103 [AS_HELP_STRING([--enable-functional-tests], 104 [enable functional tests on make check (linux only, uses sudo, default: 'no', use 'auto' to enable if possible, for host stage1 flavor systemd version 220 or higher on host is required)])], 105 [RKT_RUN_FUNCTIONAL_TESTS="${enableval}"], 106 [RKT_RUN_FUNCTIONAL_TESTS="no"]) 107 108 #### CHECKING 109 110 ## STAGE1 - initial verification and setup 111 112 dnl There are two kinds of setup - flavor and detailed. A flavor setup 113 dnl is when we specify a default flavor. A detailed setup is when we 114 dnl specify a default name and version instead. 115 AS_IF([test "x${RKT_STAGE1_DEFAULT_FLAVOR}" != 'xauto' -a '(' "x${RKT_STAGE1_DEFAULT_NAME}" != 'xauto' -o "x${RKT_STAGE1_DEFAULT_VERSION}" != 'xauto' ')'], 116 dnl Passed both --with-stage1-default-flavor and 117 dnl --with-stage1-default-{name,version} - bail out, 118 dnl they are conflicting. 119 [AC_MSG_ERROR([*** --with-stage1-default-flavor and --with-stage1-default-{name,version} flags are conflicting; use either default flavor or specific default name and version])], 120 [test "x${RKT_STAGE1_DEFAULT_FLAVOR}" = 'xauto' -a "x${RKT_STAGE1_DEFAULT_NAME}" = 'xauto' -a "x${RKT_STAGE1_DEFAULT_VERSION}" = 'xauto'], 121 dnl Passed neither --with-stage1-default-flavor nor 122 dnl --with-stage1-default-{name,version} - default to 123 dnl flavor setup. 124 [RKT_STAGE1_SETUP_KIND=flavor], 125 [test "x${RKT_STAGE1_DEFAULT_FLAVOR}" != 'xauto'], 126 dnl Passed --with-stage1-default-flavor flag - default 127 dnl to flavor setup. 128 [RKT_STAGE1_SETUP_KIND=flavor], 129 [test "x${RKT_STAGE1_DEFAULT_NAME}" != 'xauto' -o "x${RKT_STAGE1_DEFAULT_VERSION}" != 'xauto'], 130 dnl Passed one or both from 131 dnl --with-stage1-default-{name,version} - default to 132 dnl detailed setup. 133 [RKT_STAGE1_SETUP_KIND=detailed]) 134 135 AS_CASE([${RKT_STAGE1_SETUP_KIND}], 136 [detailed], 137 dnl Detailed setup - do not build any flavor unless 138 dnl explicitly asked for it and make sure that both 139 dnl name and version were passed. 140 [AS_VAR_IF([RKT_STAGE1_FLAVORS],[auto], 141 [RKT_STAGE1_FLAVORS='']) 142 RKT_STAGE1_DEFAULT_FLAVOR='' 143 AS_IF([test "x${RKT_STAGE1_DEFAULT_NAME}" = 'xauto' -o "x${RKT_STAGE1_DEFAULT_VERSION}" = 'xauto'], 144 [AC_MSG_ERROR([*** Both --with-stage1-default-name and --with-stage1-default-version must be specified])])], 145 [flavor], 146 dnl The flavor setup - build coreos and kvm flavors 147 dnl and set the first flavor in the list as a 148 dnl default unless specified. 149 [AS_VAR_IF([RKT_STAGE1_FLAVORS],[auto], 150 [RKT_STAGE1_FLAVORS='coreos,kvm']) 151 AS_VAR_IF([RKT_STAGE1_DEFAULT_FLAVOR],[auto], 152 [RKT_STAGE1_DEFAULT_FLAVOR=`AS_ECHO([${RKT_STAGE1_FLAVORS}]) | cut -d, -f1`]) 153 RKT_STAGE1_DEFAULT_NAME='' 154 RKT_STAGE1_DEFAULT_VERSION=''], 155 [AC_MSG_ERROR([*** Unknown setup kind, should not happen])]) 156 157 ## Built stage1 flavors verification 158 159 dnl a list of all flavors 160 RKT_STAGE1_ALL_FLAVORS=coreos,kvm,host,src 161 162 dnl RKT_ITERATE_FLAVORS iterates all comma-separated flavors stored in 163 dnl $1 using an iterator variable $2 and executes body $3. 164 AC_DEFUN([RKT_ITERATE_FLAVORS], 165 [for $2 in `AS_ECHO(["$1"]) | tr ',' ' '` 166 do 167 : 168 $3 169 done]) 170 171 dnl RKT_IS_VALID_FLAVOR checks if $1 is a valid flavor, $2 is an 172 dnl additional string to an error message. 173 AC_DEFUN([RKT_IS_VALID_FLAVOR], 174 [AS_CASE([$1], 175 dnl Correct flavor, nothing to do. 176 [coreos|kvm|host|src], 177 [], 178 dnl Bogus flavor, bail out. 179 [AC_MSG_ERROR([*** unknown stage1 flavor "$1" $2])])]) 180 181 dnl RKT_IF_HAS_FLAVOR checks if the comma-separated list of flavors in 182 dnl $1 contains any flavor in the comma-separated list of flavors in 183 dnl $2; if yes, executes $3, otherwise - $4. 184 AC_DEFUN([RKT_IF_HAS_FLAVOR], 185 [flavor_found=0 186 RKT_ITERATE_FLAVORS([$2],[flavor], 187 [AS_IF([AS_ECHO([",$1,"]) | grep --silent ",${flavor},"], 188 [flavor_found=1 189 break])]) 190 AS_IF([test ${flavor_found} -eq 1],[:;$3],[:;$4])]) 191 192 dnl Validate passed flavors to build - make sure that valid flavors 193 dnl were passed and each flavor was specified only once. Also, do some 194 dnl basic program checks for each requested flavor. 195 RKT_SPECIFIED_FLAVORS='' 196 RKT_ITERATE_FLAVORS([${RKT_STAGE1_FLAVORS}],[flavor], 197 [RKT_IS_VALID_FLAVOR([${flavor}],[in --with-stage1-flavors]) 198 RKT_IF_HAS_FLAVOR([${RKT_SPECIFIED_FLAVORS}],[${flavor}], 199 [AC_MSG_ERROR([*** "${flavor}" flavor specified twice in --with-stage1-flavors])]) 200 RKT_SPECIFIED_FLAVORS="${RKT_SPECIFIED_FLAVORS},${flavor}" 201 AS_CASE([${flavor}], 202 [src], 203 [RKT_REQ_PROG([INTLTOOLIZE],[intltoolize],[intltoolize]) 204 RKT_REQ_PROG([LIBTOOLIZE],[libtoolize],[libtoolize])], 205 [coreos], 206 [RKT_REQ_PROG([WGET],[wget],[wget]) 207 RKT_REQ_PROG([MKTEMP],[mktemp],[mktemp]) 208 RKT_REQ_PROG([MD5SUM],[md5sum],[md5sum]) 209 RKT_REQ_PROG([CPIO],[cpio],[cpio]) 210 RKT_REQ_PROG([GZIP],[gzip],[gzip]) 211 RKT_REQ_PROG([UNSQUASHFS],[unsquashfs],[unsquashfs]) 212 RKT_REQ_PROG([SORT],[sort],[sort])], 213 [kvm], 214 [AC_MSG_WARN([* kvm is an experimental stage1 implementation, some features are missing])], 215 [host], 216 [], 217 [AC_MSG_ERROR([*** Unhandled flavor "${flavor}", should not happen])])]) 218 219 dnl Validate passed default flavor, it should be one of the built 220 dnl stage1 flavors 221 222 AS_VAR_IF([RKT_STAGE1_SETUP_KIND],['flavor'], 223 [RKT_IS_VALID_FLAVOR([${RKT_STAGE1_DEFAULT_FLAVOR}],[in --with-stage1-default-flavor]) 224 RKT_IF_HAS_FLAVOR([${RKT_STAGE1_FLAVORS}],[${RKT_STAGE1_DEFAULT_FLAVOR}], 225 dnl valid default flavor, alright 226 [], 227 dnl not a part of built flavors, bail out 228 [AC_MSG_ERROR([*** --with-stage1-default-flavor should use one of flavors from --with-stage1-flavors (${RKT_STAGE1_FLAVORS})])])]) 229 230 ## Options specific for src flavor 231 232 # Process systemd src repo and version for src flavor. 233 RKT_IF_HAS_FLAVOR([${RKT_STAGE1_FLAVORS}],[src], 234 dnl we are building src flavor 235 [AS_VAR_IF([RKT_STAGE1_SYSTEMD_SRC], [auto], 236 dnl systemd source not specified, use default 237 [RKT_STAGE1_SYSTEMD_SRC='https://github.com/systemd/systemd.git'], 238 dnl systemd source specified, use it 239 [:]) 240 AS_VAR_IF([RKT_STAGE1_SYSTEMD_VER], [auto], 241 dnl systemd version not specified, use default 242 [RKT_STAGE1_SYSTEMD_VER='v222'], 243 dnl systemd version specified, use it 244 [:])], 245 dnl we are not building src flavor 246 [AS_VAR_IF([RKT_STAGE1_SYSTEMD_SRC], [auto], 247 dnl systemd source not specified, alright, zero the value just in case 248 [RKT_STAGE1_SYSTEMD_SRC=''], 249 dnl systemd source specified, warn about it being ignored 250 [AC_MSG_WARN([* --with-stage1-systemd-src is ignored, src flavor is not built])]) 251 AS_VAR_IF([RKT_STAGE1_SYSTEMD_VER], [auto], 252 dnl systemd version not specified, alright, zero the value just in case 253 [RKT_STAGE1_SYSTEMD_VER=''], 254 dnl systemd version specified, warn about it being ignored 255 [AC_MSG_WARN([* --with-stage1-systemd-version is ignored, src flavor is not built])])]) 256 257 dnl Warn if version is HEAD, just use master. 258 AS_VAR_IF([RKT_STAGE1_SYSTEMD_VER], [HEAD], 259 [AC_MSG_WARN([* 'HEAD' is not a systemd version, setting it to 'master' instead]) 260 RKT_STAGE1_SYSTEMD_VER='master']) 261 262 ## Options specific to coreos/kvm flavors 263 264 # Process local CoreOS PXE image path and its systemd version for 265 # coreos/kvm flavors. 266 RKT_IF_HAS_FLAVOR([${RKT_STAGE1_FLAVORS}],[coreos,kvm], 267 dnl for kvm and coreos check if both pxe image path and 268 dnl systemd version are specified or neither 269 [AS_VAR_IF([RKT_LOCAL_COREOS_PXE_IMAGE_PATH], [], 270 dnl no local coreos pxe image path specified 271 [AS_VAR_IF([RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER],[], 272 dnl no version specified, alright, keep quiet 273 [:], 274 dnl version specified, warn about it being ignored 275 [AC_MSG_WARN([* --with-coreos-local-pxe-image-systemd-version is ignored, because --with-coreos-local-pxe-image-path was not specified]) 276 RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER='']) 277 dnl gpg is required for signature 278 dnl verification 279 RKT_REQ_PROG([GPG],[gpg],[gpg])], 280 dnl local coreos pxe image path specified 281 [AS_VAR_IF([RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER],[], 282 dnl no version specified, bail out, version is required 283 [AC_MSG_ERROR([*** No systemd version for local CoreOS PXE image specified, use --with-coreos-local-pxe-image-systemd-version])], 284 dnl version specified, alright, keep quiet 285 [:])])], 286 dnl for other flavors just warn if either is specified 287 [AS_VAR_IF([RKT_LOCAL_COREOS_PXE_IMAGE_PATH], [], 288 dnl empty value, alright 289 [:], 290 dnl not empty, warn about it, zero it just in case 291 [AC_MSG_WARN([* --with-coreos-local-pxe-image-path is ignored by ${RKT_STAGE1_DEFAULT_FLAVOR} stage1 flavor]) 292 RKT_LOCAL_COREOS_PXE_IMAGE_PATH='']) 293 AS_VAR_IF([RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER], [], 294 dnl empty value, alright 295 [:], 296 dnl not empty, warn about it, zero it just in case 297 [AC_MSG_WARN([* --with-coreos-local-pxe-image-systemd-version is ignored by ${RKT_STAGE1_DEFAULT_FLAVOR} stage1 flavor]) 298 RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER=''])]) 299 300 ## Setup default name, version and location 301 302 AS_CASE([${RKT_STAGE1_SETUP_KIND}], 303 [detailed], 304 dnl detailed setup - not much to do, default name 305 dnl and version are already specified, warn if 306 dnl default location was not specified 307 [AS_VAR_IF([RKT_STAGE1_DEFAULT_LOCATION],[auto], 308 [RKT_STAGE1_DEFAULT_LOCATION='']) 309 AC_MSG_WARN([* It may be necessary to pass --stage1-image flag to run rkt])], 310 [flavor], 311 dnl flavor setup - set the default name and version, 312 dnl set the location if not specified 313 [AS_CASE([${RKT_STAGE1_DEFAULT_FLAVOR}], 314 dnl for src flavor, we also append systemd version to stage1 name 315 [src], 316 [RKT_STAGE1_DEFAULT_NAME="coreos.com/rkt/stage1-${RKT_STAGE1_DEFAULT_FLAVOR}-${RKT_STAGE1_SYSTEMD_VER}"], 317 dnl other flavors get only flavor name 318 [RKT_STAGE1_DEFAULT_NAME="coreos.com/rkt/stage1-${RKT_STAGE1_DEFAULT_FLAVOR}"]) 319 RKT_STAGE1_DEFAULT_VERSION="${RKT_VERSION}" 320 AS_VAR_IF([RKT_STAGE1_DEFAULT_LOCATION],[auto], 321 [RKT_STAGE1_DEFAULT_LOCATION="path/stage1-${RKT_STAGE1_DEFAULT_FLAVOR}.aci"])], 322 [AC_MSG_ERROR([*** Unknown setup kind, should not happen])]) 323 324 ## Functional tests 325 326 dnl Check for gpg - required by functional tests. Note that this does 327 dnl not bail out here if it is not found. 328 RKT_CHECK_PROG([GPG],[gpg],[gpg]) 329 330 AS_IF([test "x${RKT_RUN_FUNCTIONAL_TESTS}" = 'xyes' -o "x${RKT_RUN_FUNCTIONAL_TESTS}" = 'xauto'], 331 [AC_MSG_CHECKING([whether functional tests can be run]) 332 rkt_functional_tests_msg='' 333 AS_CASE([${host}], 334 [*-*-linux*], 335 dnl we are on linux, checks can continue 336 [], 337 dnl non-linux host 338 [rkt_functional_tests_msg="functional tests are supported only under linux"]) 339 AS_VAR_IF([rkt_functional_tests_msg],[], 340 dnl we are on linux host; check if we have default 341 dnl flavor set 342 [AS_VAR_IF([RKT_STAGE1_SETUP_KIND],[flavor], 343 dnl we have flavor setup, checks can 344 dnl continue 345 [:], 346 [rkt_functional_tests_msg='Currently functional tests cannot be run on 3rd party stage1 images'])]) 347 AS_VAR_IF([rkt_functional_tests_msg],[], 348 dnl we have a default flavor, check some special 349 dnl prerequisites for host flavor 350 [AS_VAR_IF([RKT_STAGE1_DEFAULT_FLAVOR], [host], 351 dnl checking if we are running systemd as init, -.mount is a mount unit for /. 352 [AS_IF([systemctl 2>/dev/null | grep --silent -e '-\.mount'], 353 dnl systemd runs as init 354 [sdv=`systemctl --version | head -1 | sed -e 's/^systemd \(@<:@0-9@:>@*\)$/\1/'` 355 AS_IF([test ${sdv} -lt 220], 356 [rkt_functional_tests_msg="Cannot run functional tests with ${RKT_STAGE1_DEFAULT_FLAVOR} stage1 flavor - systemd version on host is lower than 220 (currently running ${sdv})"])], 357 dnl systemd is not an init 358 [rkt_functional_tests_msg="Cannot run functional tests with ${RKT_STAGE1_DEFAULT_FLAVOR} stage1 flavor - no systemd on host"])])]) 359 dnl gpg is required for functional tests 360 AS_VAR_IF([GPG],[gpg], 361 dnl gpg found, alright 362 [:], 363 dnl gpg not found, running functional tests is impossible 364 [rkt_functional_tests_msg="Cannot run functional tests - no gpg found"]) 365 AS_VAR_IF([rkt_functional_tests_msg], [], 366 dnl no message, tests can be run 367 [RKT_RUN_FUNCTIONAL_TESTS=yes 368 AC_MSG_RESULT([yes])], 369 dnl message available, tests will not be run 370 [AC_MSG_RESULT([no]) 371 AS_VAR_IF([RKT_RUN_FUNCTIONAL_TESTS], [auto], 372 dnl functional tests are optional, so only print an info 373 [RKT_RUN_FUNCTIONAL_TESTS=no 374 AC_MSG_NOTICE([${rkt_functional_tests_msg}])], 375 dnl functional tests are required, so bail out 376 [AC_MSG_ERROR([*** ${rkt_functional_tests_msg}])])])]) 377 378 379 ## Miscellaneous stuff 380 381 # cross_compiling is a standard autoconf variable. See the autoconf manual for 382 # details. 383 AS_VAR_IF([cross_compiling], [no], 384 dnl no crosscompilation 385 [GOARCH_FOR_BUILD=${GOARCH_FOR_BUILD:-${GOARCH}}], 386 dnl we do crosscompilation 387 [AC_MSG_CHECKING([build golang arch]) 388 AS_VAR_IF([GOARCH_FOR_BUILD], [], 389 [AS_CASE([${build_cpu}], 390 [x86_64], 391 [GOARCH_FOR_BUILD="amd64"], 392 [aarch64], 393 [GOARCH_FOR_BUILD="arm64"], 394 [powerpc], 395 [GOARCH_FOR_BUILD="ppc64"], 396 [AC_MSG_RESULT([unknown]); AC_MSG_ERROR([*** Unknown build cpu: ${build_cpu}. Set GOARCH_FOR_BUILD variable.])]) 397 AC_MSG_RESULT([${GOARCH_FOR_BUILD}])], 398 [AC_MSG_RESULT([user supplied ${GOARCH_FOR_BUILD}])])]) 399 400 AC_PROG_CC 401 402 AC_LANG_PUSH([C]) 403 404 # check for libc generally 405 AC_CHECK_LIB([c], [fork], 406 dnl libc is there 407 [:], 408 dnl libc is not there 409 [AC_MSG_ERROR([*** No libc found. Try to install glibc-devel or libc6-dev.])]) 410 411 # check for static libc 412 SAVE_LDFLAGS="$LDFLAGS" 413 LDFLAGS="-static $LDFLAGS" 414 AC_CHECK_LIB([c], [printf], 415 dnl static libc is there 416 [:], 417 dnl static libc is not there 418 [AC_MSG_ERROR([*** No static libc found. Try to install glibc-static or libc6-dev.])]) 419 LDFLAGS="$SAVE_LDFLAGS" 420 421 # check for setns syscall, drop it in 2020 (centos 6.7 support ends 422 # then). 423 424 AC_MSG_CHECKING([whether C library provides setns function]) 425 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 426 #define _GNU_SOURCE 427 #include <sched.h> 428 ]], [[(void)setns(0, 0);]])], 429 [AC_MSG_RESULT([yes])], 430 [AC_MSG_RESULT([no]) 431 AC_MSG_CHECKING([whether Linux kernel headers provide __NR_setns macro]) 432 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 433 #include <linux/unistd.h> 434 ]], [[(void)syscall(__NR_setns,0,0);]])], 435 [AC_MSG_RESULT([yes]) 436 RKT_DEFINES_FOR_ENTER=-DNO_SETNS_AVAILABLE], 437 [AC_MSG_RESULT([no]) 438 AC_MSG_ERROR([*** Neither setns function nor __NR_setns macro are available - either both glibc and kernel are too old or their development headers are not installed])])]) 439 440 AC_SUBST(RKT_DEFINES_FOR_ENTER) 441 442 AC_LANG_POP([C]) 443 444 AC_PROG_INSTALL 445 RKT_REQ_PROG([FILE],[file],[file]) 446 RKT_REQ_PROG([GIT],[git],[git]) 447 RKT_REQ_PROG([GOBINARY],[go],[go]) 448 RKT_REQ_PROG([GOFMTBINARY],[gofmt],[gofmt]) 449 RKT_REQ_ABS_PROG([ABS_GO], [go]) 450 451 #### LINKER FLAGS 452 453 dnl Detect go version. Go 1.4 and earlier support only "-X variable 454 dnl 'value'" format of assigning values to variables via linker 455 dnl flags. Go 1.5 deprecates this format in favor of "-X 456 dnl 'variable=value'" format. Drop this ugliness when we drop support 457 dnl for Go older than 1.5. 458 GO_VERSION=`$ABS_GO version | grep -o 'go@<:@@<:@:digit:@:>@@:>@\+\.@<:@@<:@:digit:@:>@@:>@\+' | grep -o '@<:@@<:@:digit:@:>@@:>@\+\.@<:@@<:@:digit:@:>@@:>@\+'` 459 GO_MAJOR=`echo $GO_VERSION | grep -o '^@<:@@<:@:digit:@:>@@:>@\+'` 460 GO_MINOR=`echo $GO_VERSION | grep -o '@<:@@<:@:digit:@:>@@:>@\+$'` 461 462 AS_IF([test $GO_MAJOR -gt 1 -o $GO_MINOR -gt 4], 463 dnl We have Go 1.5 or greater. 464 [RKT_XF() { 465 echo "-X '$1=$2'" 466 }], 467 dnl We have Go 1.4 or lesser. 468 [RKT_XF() { 469 echo "-X $1 '$2'" 470 }]) 471 472 RKT_STAGE1_DEFAULT_NAME_LDFLAGS=`RKT_XF main.defaultStage1Name "${RKT_STAGE1_DEFAULT_NAME}"` 473 RKT_STAGE1_DEFAULT_VERSION_LDFLAGS=`RKT_XF main.defaultStage1Version "${RKT_STAGE1_DEFAULT_VERSION}"` 474 RKT_STAGE1_DEFAULT_LOCATION_LDFLAGS=`RKT_XF main.defaultStage1Image "${RKT_STAGE1_DEFAULT_LOCATION}"` 475 RKT_VERSION_LDFLAGS=`RKT_XF github.com/coreos/rkt/version.Version "${RKT_VERSION}"` 476 477 #### SUBSTITUTIONS 478 479 AC_SUBST(RKT_VERSION) 480 481 AC_SUBST(RKT_STAGE1_DEFAULT_NAME) 482 AC_SUBST(RKT_STAGE1_DEFAULT_VERSION) 483 484 AC_SUBST(RKT_STAGE1_ALL_FLAVORS) 485 AC_SUBST(RKT_STAGE1_FLAVORS) 486 AC_SUBST(RKT_STAGE1_DEFAULT_FLAVOR) 487 488 AC_SUBST(RKT_STAGE1_DEFAULT_LOCATION) 489 490 AC_SUBST(RKT_STAGE1_SYSTEMD_SRC) 491 AC_SUBST(RKT_STAGE1_SYSTEMD_VER) 492 493 AC_SUBST(RKT_LOCAL_COREOS_PXE_IMAGE_PATH) 494 AC_SUBST(RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER) 495 496 AC_SUBST(RKT_RUN_FUNCTIONAL_TESTS) 497 498 AC_SUBST(GOARCH_FOR_BUILD) 499 500 AC_SUBST(RKT_STAGE1_DEFAULT_NAME_LDFLAGS) 501 AC_SUBST(RKT_STAGE1_DEFAULT_VERSION_LDFLAGS) 502 AC_SUBST(RKT_STAGE1_DEFAULT_LOCATION_LDFLAGS) 503 AC_SUBST(RKT_VERSION_LDFLAGS) 504 505 #### FILE GENERATION AND REPORTING 506 507 AC_CONFIG_FILES([makelib/variables.mk]) 508 AC_OUTPUT 509 510 AC_MSG_RESULT([ 511 AC_PACKAGE_NAME ${RKT_VERSION} 512 513 stage1 setup 514 515 type: '${RKT_STAGE1_SETUP_KIND}' 516 default stage1 location: '${RKT_STAGE1_DEFAULT_LOCATION}']) 517 518 AS_CASE([${RKT_STAGE1_SETUP_KIND}], 519 [flavor], 520 [AC_MSG_RESULT([ 521 built stage1 flavors: '${RKT_STAGE1_FLAVORS}' 522 default stage1 flavor: '${RKT_STAGE1_DEFAULT_FLAVOR}' 523 implied default stage1 name: '${RKT_STAGE1_DEFAULT_NAME}' 524 implied default stage1 version: '${RKT_STAGE1_DEFAULT_VERSION}'])], 525 [detailed], 526 [AC_MSG_RESULT([ 527 default stage1 name: '${RKT_STAGE1_DEFAULT_NAME}' 528 default stage1 version: '${RKT_STAGE1_DEFAULT_VERSION}'])], 529 [AC_MSG_ERROR([*** Unknown setup kind, should not happen])]) 530 531 RKT_IF_HAS_FLAVOR([${RKT_STAGE1_FLAVORS}], [coreos,kvm], 532 [AC_MSG_RESULT([ 533 coreos/kvm flavor specific build parameters 534 535 local CoreOS PXE image path: '${RKT_LOCAL_COREOS_PXE_IMAGE_PATH}' 536 local CoreOS PXE image systemd version: '${RKT_LOCAL_COREOS_PXE_IMAGE_SYSTEMD_VER}'])]) 537 538 RKT_IF_HAS_FLAVOR([${RKT_STAGE1_FLAVORS}], [src], 539 [AC_MSG_RESULT([ 540 src flavor specific build parameters 541 542 systemd git repo: '${RKT_STAGE1_SYSTEMD_SRC}' 543 systemd version: '${RKT_STAGE1_SYSTEMD_VER}'])]) 544 545 AC_MSG_RESULT([ 546 other build parameters 547 548 functional tests enabled: '${RKT_RUN_FUNCTIONAL_TESTS}' 549 go version: '${GO_VERSION}'])