`FetchContent` is unable to extract a downloaded GZ archive file
Issue
When FetchContent
is used to download and extract the libv8_monolith-win-x64.lib.gz
file from https://github.com/just-js/v8/releases/tag/1.0.0, the extraction fails with the Problem with archive_write_header()
CMake error.
However, I can confirm that the file can be extracted by gzip.exe
without errors. Here are the Git Bash logs:
$ dir
$ curl.exe -LO https://github.com/just-js/v8/releases/download/1.0.0/libv8_monolith-win-x64.lib.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 37.6M 100 37.6M 0 0 12.4M 0 0:00:03 0:00:03 --:--:-- 17.8M
$ file libv8_monolith-win-x64.lib.gz
libv8_monolith-win-x64.lib.gz: gzip compressed data, was "v8_monolith.lib", last modified: Tue Nov 28 02:39:01 2023, max compression, from Unix, original size modulo 2^32 182101188
$ sha256sum.exe libv8_monolith-win-x64.lib.gz
0dea59dc49e1a7a7d69620f9fbc1c37fa8a0b6b81d41021c2356eb43a45e0472 *libv8_monolith-win-x64.lib.gz
$ gzip.exe -d libv8_monolith-win-x64.lib.gz
$ dir
libv8_monolith-win-x64.lib
$ file libv8_monolith-win-x64.lib
libv8_monolith-win-x64.lib: current ar archive
$ sha256sum.exe libv8_monolith-win-x64.lib
3070fec5541eaca1833f8623d77854bebc74c8f35fc16565d18717e9d4ffa0cb *libv8_monolith-win-x64.lib
Repro
CMakeLists.txt
cmake_minimum_required(VERSION 3.26)
project(Demo)
include(FetchContent)
# The libv8_monolith-win-x64.lib.gz file from
# https://github.com/just-js/v8/releases/tag/1.0.0
FetchContent_Declare(
v8_lib
URL https://github.com/just-js/v8/releases/download/1.0.0/libv8_monolith-win-x64.lib.gz
URL_HASH SHA256=0dea59dc49e1a7a7d69620f9fbc1c37fa8a0b6b81d41021c2356eb43a45e0472
DOWNLOAD_EXTRACT_TIMESTAMP YES # To silence a CMake warning.
)
FetchContent_MakeAvailable(v8_lib)
Output
On Windows
C:\Users\admin\Desktop\temp\project\demo>cmake -version
cmake version 3.26.4-msvc4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
C:\Users\admin\Desktop\temp\project\demo>cmake -B build
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.22635.
-- The C compiler identification is MSVC 19.37.32825.0
-- The CXX compiler identification is MSVC 19.37.32825.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.37.32822/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.37.32822/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
MSBuild version 17.7.2+d6990bcfa for .NET Framework
Checking Build System
Creating directories for 'v8_lib-populate'
Building Custom Rule C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/CMakeLists.txt
Performing download step (download, verify and extract) for 'v8_lib-populate'
-- Downloading...
dst='C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
timeout='none'
inactivity timeout='none'
-- Using src='https://github.com/just-js/v8/releases/download/1.0.0/libv8_monolith-win-x64.lib.gz'
-- [download 0% complete]
-- [download 1% complete]
...
-- [download 99% complete]
-- [download 100% complete]
-- verifying file...
file='C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
-- Downloading... done
-- extracting...
src='C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
dst='C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-src'
-- extracting... [tar xf]
CUSTOMBUILD : CMake error : Problem with archive_write_header(): Can't create '\\?\C:\' [C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\v8_lib-populate.vcxproj]
CUSTOMBUILD : CMake error : Current file: / [C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\v8_lib-populate.vcxproj]
CUSTOMBUILD : CMake error : Problem extracting tar: C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar [C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\v8_lib-populate.vcxproj]
-- extracting... [error clean up]
CMake Error at v8_lib-subbuild/v8_lib-populate-prefix/src/v8_lib-populate-stamp/extract-v8_lib-populate.cmake:40 (message):
Extract of
'C:/Users/admin/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
failed
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(249,5): error MSB8066: Custom build for 'C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-mkdir.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-download.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-update.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-patch.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-configure.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-build.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-install.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\7089584c56f262286fa410aaa7c98d28\v8_lib-populate-test.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\9b5337c7dc195c0cb939922b4182b245\v8_lib-populate-complete.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeFiles\fc34208ef54c4a271071de523cb4cab3\v8_lib-populate.rule;C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\CMakeLists.txt' exited with code 1. [C:\Users\admin\Desktop\temp\project\demo\build\_deps\v8_lib-subbuild\v8_lib-populate.vcxproj]
CMake Error at C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.26/Modules/FetchContent.cmake:1622 (message):
Build step for v8_lib failed: 1
Call Stack (most recent call first):
C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.26/Modules/FetchContent.cmake:1762:EVAL:2 (__FetchContent_directPopulate)
C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.26/Modules/FetchContent.cmake:1762 (cmake_language)
C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.26/Modules/FetchContent.cmake:1976 (FetchContent_Populate)
CMakeLists.txt:16 (FetchContent_MakeAvailable)
-- Configuring incomplete, errors occurred!
On macOS (slightly different error message)
❯ cmake -version
cmake version 3.26.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
❯ cmake -B build
-- The C compiler identification is AppleClang 15.0.0.15000040
-- The CXX compiler identification is AppleClang 15.0.0.15000040
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
[ 11%] Creating directories for 'v8_lib-populate'
[ 22%] Performing download step (download, verify and extract) for 'v8_lib-populate'
-- Downloading...
dst='/Users/raisinten/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
timeout='none'
inactivity timeout='none'
-- Using src='https://github.com/just-js/v8/releases/download/1.0.0/libv8_monolith-win-x64.lib.gz'
-- [download 0% complete]
-- [download 1% complete]
...
-- [download 99% complete]
-- [download 100% complete]
-- verifying file...
file='/Users/raisinten/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
-- Downloading... done
-- extracting...
src='/Users/raisinten/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
dst='/Users/raisinten/Desktop/temp/project/demo/build/_deps/v8_lib-src'
-- extracting... [tar xf]
CMake Error: Problem with archive_write_header(): Can't replace existing directory with non-directory
CMake Error: Current file: /
CMake Error: Problem extracting tar: /Users/raisinten/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar
-- extracting... [error clean up]
CMake Error at v8_lib-subbuild/v8_lib-populate-prefix/src/v8_lib-populate-stamp/extract-v8_lib-populate.cmake:40 (message):
Extract of
'/Users/raisinten/Desktop/temp/project/demo/build/_deps/v8_lib-subbuild/v8_lib-populate-prefix/src/archive.tar'
failed
make[2]: *** [v8_lib-populate-prefix/src/v8_lib-populate-stamp/v8_lib-populate-download] Error 1
make[1]: *** [CMakeFiles/v8_lib-populate.dir/all] Error 2
make: *** [all] Error 2
CMake Error at /usr/local/Cellar/cmake/3.26.4/share/cmake/Modules/FetchContent.cmake:1622 (message):
Build step for v8_lib failed: 2
Call Stack (most recent call first):
/usr/local/Cellar/cmake/3.26.4/share/cmake/Modules/FetchContent.cmake:1762:EVAL:2 (__FetchContent_directPopulate)
/usr/local/Cellar/cmake/3.26.4/share/cmake/Modules/FetchContent.cmake:1762 (cmake_language)
/usr/local/Cellar/cmake/3.26.4/share/cmake/Modules/FetchContent.cmake:1976 (FetchContent_Populate)
CMakeLists.txt:16 (FetchContent_MakeAvailable)
-- Configuring incomplete, errors occurred!
Edited by Darshan Sen