Skip to content

Commit 4c3752e

Browse files
committed
Use relative paths and provide message about base location
- Otherwise, the install receipt will depend on install location, reducing the reproducibility of the build!
1 parent f78c971 commit 4c3752e

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

cmake/InstallFileManifest.cmake

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
# This script will create and install an install manifest, including SHA256 hashes of each installed file
22
# Variables passed from CMake must be set with `install(CODE "set(...)")`
33

4-
message(STATUS "Generating SHA256 checksums for all installed assets")
4+
message(STATUS "Generating SHA256 checksumed receipt for all installed assets")
5+
6+
# Set receipt install destination
7+
set(RECEIPT_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")
58

69
# Mimic cmake_install.cmake's handlin of components
710
if(CMAKE_INSTALL_COMPONENT)
@@ -16,14 +19,18 @@ file(REMOVE "${CMAKE_BINARY_DIR}/${HASHED_INSTALL_MANIFEST}")
1619
# Loop over files computing hashes
1720
foreach(file IN LISTS CMAKE_INSTALL_MANIFEST_FILES)
1821
file(SHA256 "${file}" _file_sha256)
19-
file(APPEND "${CMAKE_BINARY_DIR}/${HASHED_INSTALL_MANIFEST}" "${_file_sha256} ${file}\n")
22+
file(RELATIVE_PATH FILE_REL_PATH "${RECEIPT_INSTALL_DIR}" "${file}")
23+
file(APPEND "${CMAKE_BINARY_DIR}/${HASHED_INSTALL_MANIFEST}" "${_file_sha256} ${FILE_REL_PATH}\n")
2024
endforeach()
25+
file(APPEND "${CMAKE_BINARY_DIR}/${HASHED_INSTALL_MANIFEST}"
26+
"# Paths relative to \${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}\n")
2127

22-
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" TYPE FILE PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ FILES
28+
file(INSTALL DESTINATION "${RECEIPT_INSTALL_DIR}" TYPE FILE PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ FILES
2329
"${CMAKE_BINARY_DIR}/${HASHED_INSTALL_MANIFEST}")
2430

2531
file(SHA256 "${CMAKE_BINARY_DIR}/${HASHED_INSTALL_MANIFEST}" MANIFEST_SHA256)
2632
message(STATUS
27-
"Global checksum for OpenCoarrays installation:\n${MANIFEST_SHA256} ${HASHED_INSTALL_MANIFEST}")
33+
"Global checksum for OpenCoarrays installation:
34+
${MANIFEST_SHA256} ${HASHED_INSTALL_MANIFEST}")
2835
message(STATUS "${PROJECT_NAME} was configured with SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH}")
2936
message(STATUS "The current environment has SOURCE_DATE_EPOCH set to: $ENV{SOURCE_DATE_EPOCH}")

0 commit comments

Comments
 (0)