From 52a48cba2f6ab65d40e3f1390cf825a25cbfc307 Mon Sep 17 00:00:00 2001 From: Takanori Suzuki Date: Wed, 1 Feb 2017 13:25:29 +0900 Subject: [PATCH 1/2] Change CMakeLists.txt for generating deb and rpm --- CMakeLists.txt | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-- README.md | 21 ++++++++++++++++++++ 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cba6972..0763644 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,58 @@ +set(VERSION 1.0.2) cmake_minimum_required(VERSION 2.8.0) project(CrazyDiskInfo CXX) add_executable(CrazyDiskInfo main.cpp) set(CMAKE_CXX_FLAGS "-Wall -std=c++11") -SET_TARGET_PROPERTIES(CrazyDiskInfo PROPERTIES OUTPUT_NAME crazy) +set_target_properties(CrazyDiskInfo PROPERTIES OUTPUT_NAME crazy) target_link_libraries(CrazyDiskInfo atasmart) target_link_libraries(CrazyDiskInfo ncursesw) -INSTALL(TARGETS CrazyDiskInfo RUNTIME DESTINATION /usr/sbin) +set(CMAKE_INSTALL_PREFIX /usr) +install(TARGETS CrazyDiskInfo RUNTIME DESTINATION sbin) +install(FILES LICENSE README.md DESTINATION share/doc/CrazyDiskInfo) +# CPACK +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +set(CPACK_PACKAGE_VERSION ${VERSION}) +set(CPACK_PACKAGE_RELEASE 1) +set(CPACK_SOURCE_IGNORE_FILES \\\\.git/ \\\\..*\\\\.swp /build/ Changelog.tmp) +set(CPACK_GENERATOR "TGZ") +set(CPACK_PACKAGE_NAME "CrazyDiskInfo") +set(CPACK_PACKAGE_CONTACT "https://github.com/otakuto") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CrazyDiskInfo is an interactive TUI S.M.A.R.T viewer for Unix systems") +set(CPACK_PACKAGE_VENDOR "otakuto") +set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) +# find dpkg or rpm and switch the package name +string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_PACKAGE_NAME_LOWERCASE) +find_program(DPKG_PROGRAM dpkg) +if(DPKG_PROGRAM) + execute_process( + COMMAND ${DPKG_PROGRAM} --print-architecture + OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + set(CPACK_PACKAGE_FILE_NAME +"${CPACK_PACKAGE_NAME_LOWERCASE}_${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") + set(CPACK_GENERATOR "DEB" ${CPACK_GENERATOR}) +else(DPKG_PROGRAM) +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}.${CMAKE_SYSTEM_PROCESSOR}") +find_program(RPM_PROGRAM rpm) +if(RPM_PROGRAM) + set(CPACK_GENERATOR "RPM" ${CPACK_GENERATOR}) +endif(RPM_PROGRAM) +endif(DPKG_PROGRAM) +# making rpm +set(CPACK_RPM_PACKAGE_LICENSE "MIT") +set(CPACK_RPM_PACKAGE_GROUP "Utilities") +set(CPACK_RPM_PACKAGE_REQUIRES "libatasmart ncurses-libs") +execute_process(COMMAND git log --format=*\ %cd\ %aN%n-\ \(%h\)\ %s%d%n --date=local + OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Changelog.tmp) +execute_process(COMMAND sed -r s/[0-9]+:[0-9]+:[0-9]+\ // + INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Changelog.tmp + OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/Changelog) +set(CPACK_RPM_CHANGELOG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Changelog") +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libatasmart4, libncurses5, libncursesw5") +set(CPACK_DEBIAN_PACKAGE_SECTION "admin") +set(CPACK_DEBIAN_PACKAGE_NAME "crazydiskinfo_${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") +include(CPack) diff --git a/README.md b/README.md index ec3cedf..adeb465 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,27 @@ $ make && make install $ sudo crazy ``` +## Build rpm or deb packge, Install and Run +In rpm environment: +``` +$ mkdir build +$ cd build +$ cmake .. +$ cpack --config CPackConfig.cmake +$ sudo rpm -ihv CrazyDiskInfo-*.rpm +$ sudo crazy +``` + +In deb environment: +``` +$ mkdir build +$ cd build +$ cmake .. +$ cpack --config CPackConfig.cmake +$ sudo dpkg -i crazydiskinfo_*.deb +$ sudo crazy +``` + ### Binary Package Debian package is available from [OBS(Open Build Service)](https://build.opensuse.org/package/show/home:tsuroot/CrazyDiskInfo) Direct Links: From d36e65e5030d306ddca17e04003732d7fbbd8cdd Mon Sep 17 00:00:00 2001 From: Takanori Suzuki Date: Wed, 1 Feb 2017 16:15:01 +0900 Subject: [PATCH 2/2] Fix CMakeLists.txt about non-correct package name in deb --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0763644..1690b7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,7 @@ execute_process(COMMAND sed -r s/[0-9]+:[0-9]+:[0-9]+\ // set(CPACK_RPM_CHANGELOG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Changelog") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") -SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libatasmart4, libncurses5, libncursesw5") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libatasmart4, libncurses5, libncursesw5") set(CPACK_DEBIAN_PACKAGE_SECTION "admin") -set(CPACK_DEBIAN_PACKAGE_NAME "crazydiskinfo_${CPACK_PACKAGE_VERSION}-${CPACK_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") +set(CPACK_DEBIAN_PACKAGE_NAME "crazydiskinfo") include(CPack)