build: allow for reproducible builds
[vpp.git] / src / pkg / CMakeLists.txt
index d5cc207..5fa2826 100644 (file)
@@ -18,8 +18,23 @@ endif()
 get_cmake_property(VPP_COMPONENTS COMPONENTS)
 string(REPLACE ";" " " VPP_COMPONENTS "${VPP_COMPONENTS}")
 
+##############################################################################
+# pinned timestamp for reproducible builds
+##############################################################################
+set(VPP_SOURCE_DATE_EPOCH
+   ""
+   CACHE
+   STRING "Artifact build timestamp for reproducible builds"
+)
+
+if(VPP_SOURCE_DATE_EPOCH STREQUAL "")
+   set(VPP_TIMESTAMP_ARG "")
+else()
+   set(VPP_TIMESTAMP_ARG "--date=@${VPP_SOURCE_DATE_EPOCH}")
+endif()
+
 execute_process(
-  COMMAND date -R
+  COMMAND date -R ${VPP_TIMESTAMP_ARG}
   OUTPUT_VARIABLE TIMESTAMP
   OUTPUT_STRIP_TRAILING_WHITESPACE
 )
@@ -35,18 +50,13 @@ foreach(l ${os_release})
   set(OS_${_name} ${_value})
 endforeach()
 
-if (OS_ID STREQUAL "ubuntu" AND OS_VERSION_ID VERSION_LESS 20.04)
-  set(VPP_DEB_BUILD_DEPENDS "python-all, python3-all, python3-setuptools")
-  set(VPP_DEB_WITH_PYTHON2 "yes")
-else()
-  set(VPP_DEB_BUILD_DEPENDS "python3-all, python3-setuptools")
-  set(VPP_DEB_WITH_PYTHON2 "no")
-endif()
+set(VPP_DEB_BUILD_DEPENDS "python3-all, python3-setuptools")
+set(VPP_DEB_WITH_PYTHON2 "no")
 
 foreach(f rules changelog control)
   configure_file(
     ${CMAKE_CURRENT_SOURCE_DIR}/debian/${f}.in
-    ${CMAKE_BINARY_DIR}/debian/${f}
+    ${VPP_BINARY_DIR}/debian/${f}
     @ONLY
   )
 endforeach()
@@ -54,15 +64,13 @@ endforeach()
 foreach(f copyright vpp.preinst vpp.postrm vpp.postinst vpp.service)
   file(COPY
     ${CMAKE_CURRENT_SOURCE_DIR}/debian/${f}
-    DESTINATION ${CMAKE_BINARY_DIR}/debian
+    DESTINATION ${VPP_BINARY_DIR}/debian
   )
 endforeach()
 
-file(WRITE ${CMAKE_BINARY_DIR}/debian/compat "10\n")
-
-add_custom_target(package-deb
+add_custom_target(pkg-deb
   COMMENT "Building .deb packages..."
-  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+  WORKING_DIRECTORY ${VPP_BINARY_DIR}
   COMMAND "dpkg-buildpackage" "-us" "-uc" "-b"
   USES_TERMINAL
 )