diff --git a/.github/workflows/ubuntu-cuda.yml b/.github/workflows/ubuntu-cuda.yml index 00dd303dcf1..88bb161d595 100644 --- a/.github/workflows/ubuntu-cuda.yml +++ b/.github/workflows/ubuntu-cuda.yml @@ -149,7 +149,7 @@ jobs: --command="sudo Open3D/docker/docker_build.sh ${CI_CONFIG}${RELEASE_TAG:-}" if [ "${BUILD_PACKAGE}" == 'true' ]; then gcloud compute scp --zone="${GCE_ZONE}" \ - "${INSTANCE_NAME}":open3d-devel-linux*.tar.xz "$PWD" + "${INSTANCE_NAME}":open3d-devel-linux* "$PWD" fi - name: Upload package @@ -157,7 +157,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: open3d-devel-linux-x86_64-cuda-${{ matrix.CI_CONFIG }} - path: open3d-devel-linux*.tar.xz + path: open3d-devel-linux* if-no-files-found: error - name: Update devel release @@ -165,7 +165,7 @@ jobs: env: GH_TOKEN: ${{ github.token }} run: | - gh release upload main-devel open3d-devel-linux-*.tar.xz --clobber + gh release upload main-devel open3d-devel-linux-* --clobber gh release view main-devel - name: VM run docker diff --git a/.github/workflows/ubuntu-sycl.yml b/.github/workflows/ubuntu-sycl.yml index ae0f32a78a0..628af010bed 100644 --- a/.github/workflows/ubuntu-sycl.yml +++ b/.github/workflows/ubuntu-sycl.yml @@ -62,7 +62,7 @@ jobs: name: open3d-sycl-linux-wheel-and-binary path: | open3d-*.whl - open3d-devel-*.tar.xz + open3d-devel-* if-no-files-found: error - name: Update devel release if: ${{ github.ref == 'refs/heads/main' && matrix.BUILD_SHARED_LIBS == 'ON' }} @@ -71,7 +71,7 @@ jobs: run: | if [ ${{ matrix.BUILD_SHARED_LIBS }} == 'ON' ] ; then gh release upload main-devel open3d-*.whl --clobber - gh release upload main-devel open3d-devel-*.tar.xz --clobber + gh release upload main-devel open3d-devel-* --clobber fi gh release view main-devel diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 4a515edd0b7..e7f3976bf10 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -81,7 +81,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: open3d-devel-linux-x86_64-ML_${{ matrix.MLOPS }} - path: open3d-devel-*.tar.xz + path: open3d-devel-* if-no-files-found: error - name: Upload viewer to GitHub artifacts if: ${{ env.BUILD_SHARED_LIBS == 'OFF' }} @@ -96,7 +96,7 @@ jobs: GH_TOKEN: ${{ github.token }} run: | if [ ${BUILD_SHARED_LIBS} == 'ON' ] ; then - gh release upload main-devel open3d-devel-*.tar.xz --clobber + gh release upload main-devel open3d-devel-* --clobber else gh release upload main-devel open3d-viewer-*-Linux.deb --clobber fi diff --git a/CMakeLists.txt b/CMakeLists.txt index 354125dc01d..6a94c3e9833 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -359,6 +359,7 @@ else() set(Open3D_INSTALL_RESOURCE_DIR bin) set(Open3D_INSTALL_CMAKE_DIR CMake) endif() +set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "dev") # Put build results in some predictable places # The $ generator expression makes sure that XCode or Visual Studio do not diff --git a/cmake/Open3DPackaging.cmake b/cmake/Open3DPackaging.cmake index e6ce4a3c15c..5e6deacc9c9 100644 --- a/cmake/Open3DPackaging.cmake +++ b/cmake/Open3DPackaging.cmake @@ -33,4 +33,30 @@ set(CPACK_PACKAGE_FILE_NAME "open3d-devel-${_sys}-${OPEN3D_VERSION_FULL}") set(CPACK_THREADS 0) # Use all cores for compressing package +find_program(DPKG_PROGRAM dpkg) +if (EXISTS ${DPKG_PROGRAM}) + list(APPEND CPACK_GENERATOR DEB) + set(CPACK_SET_DESTDIR ON) + set(CPACK_COMPONENTS_ALL "dev") + set(CPACK_DEBIAN_DEV_PACKAGE_NAME "open3d-devel-${_sys}") + set(CPACK_DEBIAN_PACKAGE_VERSION ${OPEN3D_VERSION_FULL}) + execute_process(COMMAND ${DPKG_PROGRAM} --print-architecture + OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) + set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + list(APPEND CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS ${CMAKE_INSTALL_PREFIX}/${Open3D_INSTALL_LIB_DIR}) + if (DEFINED Tensorflow_FRAMEWORK_LIB) + get_filename_component(TENSORFLOW_LIB_DIR ${Tensorflow_FRAMEWORK_LIB} DIRECTORY) + list(APPEND CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS ${TENSORFLOW_LIB_DIR}) + endif() + if(TARGET tbb) + get_target_property(TBB_LIB_DIR tbb LIBRARY_OUTPUT_DIRECTORY) + list(APPEND CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS ${TBB_LIB_DIR}) + endif() + message("CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIR: ${CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS}") + set(CPACK_DEB_COMPONENT_INSTALL ON) +endif() + include(CPack) diff --git a/cpp/open3d/CMakeLists.txt b/cpp/open3d/CMakeLists.txt index 00b04684b2c..d6f72a7cf85 100644 --- a/cpp/open3d/CMakeLists.txt +++ b/cpp/open3d/CMakeLists.txt @@ -177,7 +177,7 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/Open3DConfig.cmake" "${PROJECT_BINARY_DIR}/Open3DConfigVersion.cmake" - DESTINATION "${Open3D_INSTALL_CMAKE_DIR}" COMPONENT dev) + DESTINATION "${Open3D_INSTALL_CMAKE_DIR}") # Install GUI resources if (BUILD_GUI) diff --git a/docker/Dockerfile.ci b/docker/Dockerfile.ci index 06331e9ccde..3ecdde36dc3 100755 --- a/docker/Dockerfile.ci +++ b/docker/Dockerfile.ci @@ -230,7 +230,7 @@ RUN \ && make VERBOSE=1 -j$(nproc) \ && make install-pip-package -j$(nproc) \ && make install -j$(nproc) \ - && if [[ "${PACKAGE}" = "ON" ]]; then make package; fi \ + && if [[ "${PACKAGE}" = "ON" ]]; then make VERBOSE=1 package; fi \ && if [[ "${PACKAGE}" = "VIEWER" ]]; then make package-Open3DViewer-deb; fi \ && if [[ "${CI:-}a" != "a" ]]; then rm -rf _deps assimp embree ipp mkl mkl_install webrtc librealsense; fi # If CI is not null or unset, remove all large build folders to save disk space @@ -242,7 +242,7 @@ RUN ccache -s \ && CCACHE_DIR_PARENT=$(dirname ${CCACHE_DIR}) \ && cd ${CCACHE_DIR_PARENT} \ && tar -caf /${CCACHE_TAR_NAME}.tar.xz ${CCACHE_DIR_NAME} \ - && if [[ "${PACKAGE}" = "ON" ]]; then mv /root/Open3D/build/package/open3d-devel*.tar.xz /; fi \ + && if [[ "${PACKAGE}" = "ON" ]]; then mv /root/Open3D/build/package/open3d-devel* /; fi \ && if [[ "${PACKAGE}" = "VIEWER" ]]; then mv /root/Open3D/build/package-Open3DViewer-deb/open3d-viewer-*-Linux.deb /; fi \ && if [[ "${BUILD_SYCL_MODULE}" = "ON" && "${BUILD_SHARED_LIBS}" = "ON" ]]; then mv /root/Open3D/build/lib/python_package/pip_package/open3d*.whl /; fi \ && ls -alh /