Skip to content

cargo-zng breaks build on Windows #212

Closed
@EliahKagan

Description

Attempting to build with ./cargo-zng build on Windows fails:

ek@Glub MINGW64 ~/source/repos/libz-sys (main)
$ ./cargo-zng build
tar: src\\zlib\adler32.c: Cannot stat: No such file or directory
tar: src\\zlib\trees.c: Cannot stat: No such file or directory
tar: src\\zlib\trees.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\adler32.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\adler32_p.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\acle_intrins.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\adler32_neon.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\arm_features.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\arm_features.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\arm_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\\chunkset_neon.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\\compare256_neon.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\\crc32_acle.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\neon_intrins.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\\slide_hash_armv6.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\arm\\slide_hash_neon.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\adler32_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\adler32_fold_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\chunk_permute_table.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\chunkset_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\compare256_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\crc32_braid_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\crc32_fold_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\generic_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\generic\\slide_hash_c.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\adler32_power8.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\adler32_vmx.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\chunkset_power8.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\compare256_power9.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\crc32_constants.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\crc32_power8.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\fallback_builtins.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\power_features.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\power_features.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\power_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\slide_hash_power8.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\slide_hash_vmx.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\power\\slide_ppc_tpl.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\adler32_rvv.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\\chunkset_rvv.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\\compare256_rvv.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\riscv_features.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\riscv_features.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\riscv_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\riscv\\slide_hash_rvv.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\crc32-vx.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\dfltcc_common.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\dfltcc_deflate.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\dfltcc_deflate.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\dfltcc_detail.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\dfltcc_inflate.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\dfltcc_inflate.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\s390_features.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\s390_features.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\s390\\s390_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_avx2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_avx2_p.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_avx512.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_avx512_p.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_avx512_vnni.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_sse42.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_ssse3.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\adler32_ssse3_p.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\chunkset_avx2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\chunkset_sse2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\chunkset_ssse3.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\compare256_avx2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\compare256_sse2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\crc32_fold_pclmulqdq_tpl.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\crc32_fold_vpclmulqdq_tpl.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\crc32_pclmulqdq.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\crc32_pclmulqdq_tpl.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\crc32_vpclmulqdq.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\slide_hash_avx2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\slide_hash_sse2.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\x86_features.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\x86_features.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\x86_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch\\x86\\x86_intrins.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\arch_functions.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\fallback-macros.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-aarch64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-arm.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-armhf.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-llvm-mingw-aarch64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-llvm-mingw-armv7.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-llvm-mingw-i686.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-llvm-mingw-x86_64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-mingw-i686.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-mingw-x86_64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-mips.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-mips64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc64-clang.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc64-power9.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc64le-clang.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc64le-power9.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-powerpc64le.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-riscv.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-s390x.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\\cmake\toolchain-sparc64.cmake: Cannot stat: No such file or directory
tar: src\\zlib-ng\fallback_builtins.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\functable.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\functable.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\trees.c: Cannot stat: No such file or directory
tar: src\\zlib-ng\trees.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\trees_emit.h: Cannot stat: No such file or directory
tar: src\\zlib-ng\trees_tbl.h: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
    Updating crates.io index
     Locking 40 packages to latest compatible versions
      Adding bitflags v1.3.2 (latest: v2.6.0)
      Adding cfg-if v0.1.10 (latest: v1.0.0)
      Adding dirs v2.0.2 (latest: v5.0.1)
      Adding dirs-sys v0.3.7 (latest: v0.4.1)
      Adding term v0.6.1 (latest: v1.0.0)
      Adding wasi v0.11.0+wasi-snapshot-preview1 (latest: v0.13.2+wasi-0.2.1)
   Compiling shlex v1.3.0
   Compiling libc v0.2.158
   Compiling cc v1.1.16
   Compiling cmake v0.1.51
   Compiling libz-ng-sys v1.1.16 (C:\Users\ek\AppData\Local\Temp\tmp.iaQuENuJLO)
error: failed to run custom build command for `libz-ng-sys v1.1.16 (C:\Users\ek\AppData\Local\Temp\tmp.iaQuENuJLO)`

Caused by:
  process didn't exit successfully: `C:\Users\ek\AppData\Local\Temp\tmp.iaQuENuJLO\target\debug\build\libz-ng-sys-d3c602731d9baee3\build-script-cmake` (exit code: 101)
  --- stdout
  CMAKE_TOOLCHAIN_FILE_x86_64-pc-windows-msvc = None
  CMAKE_TOOLCHAIN_FILE_x86_64_pc_windows_msvc = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-pc-windows-msvc = None
  CMAKE_GENERATOR_x86_64_pc_windows_msvc = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-pc-windows-msvc = None
  CMAKE_PREFIX_PATH_x86_64_pc_windows_msvc = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-pc-windows-msvc = None
  CMAKE_x86_64_pc_windows_msvc = None
  HOST_CMAKE = None
  CMAKE = None
  running: "cmake" "C:\\Users\\ek\\AppData\\Local\\Temp\\tmp.iaQuENuJLO\\src/zlib-ng" "-G" "Visual Studio 17 2022" "-Thost=x64" "-Ax64" "-DBUILD_SHARED_LIBS=OFF" "-DZLIB_COMPAT=OFF" "-DZLIB_ENABLE_TESTS=OFF" "-DWITH_GZFILEOP=ON" "-DCMAKE_INSTALL_PREFIX=C:\\Users\\ek\\AppData\\Local\\Temp\\tmp.iaQuENuJLO\\target\\debug\\build\\libz-ng-sys-5e35a63173c56dd6\\out" "-DCMAKE_C_FLAGS= -nologo -MD -Brepro" "-DCMAKE_C_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_BUILD_TYPE=Debug"
  -- Using CMake version 3.30.3
  -- ZLIB_HEADER_VERSION: 1.3.1
  -- ZLIBNG_HEADER_VERSION: 2.2.1
  -- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
  -- The C compiler identification is MSVC 19.41.34120.0
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.41.34120/bin/Hostx64/x64/cl.exe - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Arch detected: 'x86_64'
  -- Basearch of 'x86_64' has been detected as: 'x86'
  -- Looking for arm_acle.h
  -- Looking for arm_acle.h - not found
  -- Looking for sys/auxv.h
  -- Looking for sys/auxv.h - not found
  -- Looking for sys/sdt.h
  -- Looking for sys/sdt.h - not found
  -- Looking for unistd.h
  -- Looking for unistd.h - not found
  -- Looking for linux/auxvec.h
  -- Looking for linux/auxvec.h - not found
  -- Looking for sys/types.h
  -- Looking for sys/types.h - found
  -- Looking for stdint.h
  -- Looking for stdint.h - found
  -- Looking for stddef.h
  -- Looking for stddef.h - found
  -- Check size of off64_t
  -- Check size of off64_t - failed
  -- Check size of _off64_t
  -- Check size of _off64_t - failed
  -- Check size of __off64_t
  -- Check size of __off64_t - failed
  -- Looking for fseeko
  -- Looking for fseeko - not found
  -- Looking for strerror
  -- Looking for strerror - found
  -- Looking for posix_memalign
  -- Looking for posix_memalign - not found
  -- Looking for aligned_alloc
  -- Looking for aligned_alloc - not found
  -- Performing Test HAVE_NO_INTERPOSITION
  -- Performing Test HAVE_NO_INTERPOSITION - Failed
  -- Performing Test HAVE_ATTRIBUTE_VISIBILITY_HIDDEN
  -- Performing Test HAVE_ATTRIBUTE_VISIBILITY_HIDDEN - Failed
  -- Performing Test HAVE_ATTRIBUTE_VISIBILITY_INTERNAL
  -- Performing Test HAVE_ATTRIBUTE_VISIBILITY_INTERNAL - Failed
  -- Performing Test HAVE_ATTRIBUTE_ALIGNED
  -- Performing Test HAVE_ATTRIBUTE_ALIGNED - Failed
  -- Performing Test HAVE_BUILTIN_ASSUME_ALIGNED
  -- Performing Test HAVE_BUILTIN_ASSUME_ALIGNED - Success
  -- Performing Test HAVE_BUILTIN_CTZ
  -- Performing Test HAVE_BUILTIN_CTZ - Failed
  -- Performing Test HAVE_BUILTIN_CTZLL
  -- Performing Test HAVE_BUILTIN_CTZLL - Failed
  -- Performing Test HAVE_PTRDIFF_T
  -- Performing Test HAVE_PTRDIFF_T - Success
  -- Performing Test HAVE_XSAVE_INTRIN
  -- Performing Test HAVE_XSAVE_INTRIN - Success
  -- Performing Test HAVE_SSE2_INTRIN
  -- Performing Test HAVE_SSE2_INTRIN - Success
  -- Performing Test HAVE_SSSE3_INTRIN
  -- Performing Test HAVE_SSSE3_INTRIN - Success
  -- Performing Test HAVE_SSE42_INTRIN
  -- Performing Test HAVE_SSE42_INTRIN - Success
  -- Performing Test HAVE_PCLMULQDQ_INTRIN
  -- Performing Test HAVE_PCLMULQDQ_INTRIN - Success
  -- Performing Test HAVE_AVX2_INTRIN
  -- Performing Test HAVE_AVX2_INTRIN - Success
  -- Performing Test HAVE_AVX512_INTRIN
  -- Performing Test HAVE_AVX512_INTRIN - Success
  -- Performing Test HAVE_AVX512VNNI_INTRIN
  -- Performing Test HAVE_AVX512VNNI_INTRIN - Success
  -- Performing Test HAVE_VPCLMULQDQ_INTRIN
  -- Performing Test HAVE_VPCLMULQDQ_INTRIN - Success
  -- Architecture-specific source files: arch/x86/x86_features.c;arch/x86/chunkset_sse2.c;arch/x86/compare256_sse2.c;arch/x86/slide_hash_sse2.c;arch/x86/adler32_ssse3.c;arch/x86/chunkset_ssse3.c;arch/x86/adler32_sse42.c;arch/x86/crc32_pclmulqdq.c;arch/x86/slide_hash_avx2.c;arch/x86/chunkset_avx2.c;arch/x86/compare256_avx2.c;arch/x86/adler32_avx2.c;arch/x86/adler32_avx512.c;arch/x86/adler32_avx512_vnni.c;arch/x86/crc32_vpclmulqdq.c
  -- The following features have been enabled:

   * XSAVE, Support XSAVE intrinsics using ""
   * SSSE3_ADLER32, Support SSSE3-accelerated adler32, using ""
   * SSE42_CRC, Support SSE4.2 optimized adler32 hash generation, using ""
   * PCLMUL_CRC, Support CRC hash generation using PCLMULQDQ, using " "
   * AVX2_SLIDEHASH, Support AVX2 optimized slide_hash, using "/arch:AVX2"
   * AVX2_CHUNKSET, Support AVX2 optimized chunkset, using "/arch:AVX2"
   * AVX2_COMPARE256, Support AVX2 optimized compare256, using "/arch:AVX2"
   * AVX2_ADLER32, Support AVX2-accelerated adler32, using "/arch:AVX2"
   * AVX512_ADLER32, Support AVX512-accelerated adler32, using "/arch:AVX512"
   * AVX512VNNI_ADLER32, Support AVX512VNNI adler32, using "/arch:AVX512"
   * VPCLMUL_CRC, Support CRC hash generation using VPCLMULQDQ, using "  /arch:AVX512"
   * WITH_GZFILEOP, Compile with support for gzFile related functions
   * ZLIBNG_ENABLE_TESTS, Test zlib-ng specific API
   * WITH_SANITIZER, Enable sanitizer support
   * WITH_GTEST, Build gtest_zlib
   * WITH_OPTIM, Build with optimisation
   * WITH_NEW_STRATEGIES, Use new strategies
   * WITH_RUNTIME_CPU_DETECTION, Build with runtime CPU detection
   * WITH_AVX2, Build with AVX2
   * WITH_AVX512, Build with AVX512
   * WITH_AVX512VNNI, Build with AVX512 VNNI
   * WITH_SSE2, Build with SSE2
   * WITH_SSSE3, Build with SSSE3
   * WITH_SSE42, Build with SSE42
   * WITH_PCLMULQDQ, Build with PCLMULQDQ
   * WITH_VPCLMULQDQ, Build with VPCLMULQDQ

  -- The following features have been disabled:

   * ZLIB_SYMBOL_PREFIX, Publicly exported symbols DO NOT have a custom prefix
   * ZLIB_COMPAT, Compile with zlib compatible API
   * ZLIB_ENABLE_TESTS, Build test binaries
   * WITH_FUZZERS, Build test/fuzz
   * WITH_BENCHMARKS, Build test/benchmarks
   * WITH_BENCHMARK_APPS, Build application benchmarks
   * WITH_NATIVE_INSTRUCTIONS, Instruct the compiler to use the full instruction set on this host (gcc/clang -march=native)
   * WITH_MAINTAINER_WARNINGS, Build with project maintainer warnings
   * WITH_CODE_COVERAGE, Enable code coverage reporting
   * WITH_INFLATE_STRICT, Build with strict inflate distance checking
   * WITH_INFLATE_ALLOW_INVALID_DIST, Build with zero fill for inflate invalid distances
   * INSTALL_UTILS, Copy minigzip and minideflate during install

  -- Configuring incomplete, errors occurred!

  --- stderr
  CMake Error at CMakeLists.txt:53 (include):
    include could not find requested file:

      cmake/fallback-macros.cmake


  thread 'main' panicked at C:\Users\ek\.cargo\registry\src\index.crates.io-6f17d22bba15001f\cmake-0.1.51\src/lib.rs:1100:5:

  command did not execute successfully, got: exit code: 1

  build script failed, must exit now
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I did this in Git Bash, which is an MSYS2-based environment, so that the script and the Unix utilities it uses would be available. But I expect that most ways of running it on Windows would produce this effect, since the problem arises from the treatment of backslashes in the output of cargo package -l. On Windows, cargo is a native Windows program that outputs paths with backslashes as separators.

If no paths will contain literal backslashes on any system, then it should be sufficient to unconditionally translate \ characters into \ by adding a tr step in the pipeline. This fixes the problem for me on Windows; those messages go away and the build succeeds. I'll try to see if breaks anything else and, if not, I'll open a PR. (The cargo-zng script does not appear to be tested on CI.)

Edit: It seems okay, and I've opened #213.

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions