0

CPack seems to generate the debian package in a temporary directory then copy it to the destination folder. Is there a way for CPack to delete the temporary debian package? For large packages, it takes up twice the disk space. Also from CI, I can't use a generic wildcard match to pickup all .deb files without picking up the temporary ones.

cmake_minimum_required(VERSION 3.1)

project(foo NONE)

install(
    FILES
        foo.txt
    DESTINATION
        /usr/share/doc/foo
)

set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
set(CPACK_DEBIAN_PACKAGE_DEBUG "ON")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "FooBar Inc.")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "any")
include(CPack)
~/dev/scratch/cpack_test
❯ mkdir -p build

~/dev/scratch/cpack_test
❯ cd build

~/dev/scratch/cpack_test/build
❯ cmake ../ && cpack .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/XXXXX/dev/scratch/cpack_test/build
CPack: Create package using DEB
CPack: Install projects
CPack: - Run preinstall target for: foo
CPack: - Install project: foo []
CPack: Create package
CPackDeb Debug: Using only user-provided dependencies
-- CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.
CPackDeb:Debug: CPACK_TOPLEVEL_DIRECTORY          = '/home/XXXXX/dev/scratch/cpack_test/build/_CPack_Packages/Linux/DEB'
CPackDeb:Debug: CPACK_TOPLEVEL_TAG                = 'Linux'
CPackDeb:Debug: CPACK_TEMPORARY_DIRECTORY         = '/home/XXXXX/dev/scratch/cpack_test/build/_CPack_Packages/Linux/DEB/foo-0.1.1-Linux'
CPackDeb:Debug: CPACK_OUTPUT_FILE_NAME            = 'foo-0.1.1-Linux.deb'
CPackDeb:Debug: CPACK_OUTPUT_FILE_PATH            = '/home/XXXXX/dev/scratch/cpack_test/build/foo-0.1.1-Linux.deb'
CPackDeb:Debug: CPACK_PACKAGE_FILE_NAME           = 'foo-0.1.1-Linux'
CPackDeb:Debug: CPACK_PACKAGE_INSTALL_DIRECTORY   = 'foo 0.1.1'
CPackDeb:Debug: CPACK_TEMPORARY_PACKAGE_FILE_NAME = '/home/XXXXX/dev/scratch/cpack_test/build/_CPack_Packages/Linux/DEB/foo-0.1.1-Linux.deb'
CPackDeb:Debug: CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION = ''
CPackDeb:Debug: CPACK_DEBIAN_PACKAGE_SOURCE       = ''
CPack: - package: /home/XXXXX/dev/scratch/cpack_test/build/foo-0.1.1-Linux.deb generated
~/dev/scratch/cpack_test/build
❯ sha256sum foo-0.1.1-Linux.deb
33ce4c3c4c5ff526709ace00311e3caf787419c0a91777e22aa0f020f7038b52  foo-0.1.1-Linux.deb

~/dev/scratch/cpack_test/build
❯ sha256sum _CPack_Packages/Linux/DEB/foo-0.1.1-Linux.deb
33ce4c3c4c5ff526709ace00311e3caf787419c0a91777e22aa0f020f7038b52  _CPack_Packages/Linux/DEB/foo-0.1.1-Linux.deb

TIA.

Tareq A. Siraj
  • 424
  • 3
  • 9
  • What is "generic wildcard match"? Do you mean `globstar` and `**/*.deb` pattern? Why not use just `${topbuilddir}/*.deb` then? – zaufi Jun 22 '22 at 22:30
  • About copy files, as I see in sources CPack always produces files in the _temporary_ location and then **copy** 'em to the `${topbuilddir}`. However, on the systems (and filesystems) supporting _copy-on-write_ it'll use it! Meaning, that it won't take much time and space.... – zaufi Jun 22 '22 at 22:32

0 Answers0