diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..2f3007c9b7f3f24eca81c528ae3a16c12d4e6b78 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,31 @@ + image: docker.io/alopeziri/labrobotica + + stages: + - build + - test + - deploy + + build-package: + stage: build + script: + - apt update + - apt -y install iri-iriutils-dev iri-comm-dev iri-dynamixel-dev + - mkdir -pv build + - cd build + - cmake -D CMAKE_BUILD_TYPE=RELEASE -DCPACK_PACKAGE_VERSION=$CI_COMMIT_TAG .. + - make package -j $(nproc) + artifacts: + paths: + - build/*.deb + expire_in: 2 weeks + only: + - tags + + update_repo: + stage: deploy + script: + - cd build + - "scp -i /root/.ssh/iriLabKeyNopwd -r *battery-monitor*.deb irilabo@147.83.76.226:packages/" + - "ssh irilabo@147.83.76.226 -i /root/.ssh/iriLabKeyNopwd -tt /home/irilabo/repo_scripts/update_repo.sh name-with-dashes" + only: + - tags diff --git a/CMakeLists.txt b/CMakeLists.txt index 37fdd9d75188f3d5f24b4550052cb0cd2f61923f..4e18077431125c7d5b7f6ce78c9afe3b3d7be802 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ endif(COMMAND cmake_policy) # The project name and the type of project PROJECT(battery_monitor) +SET(PACKAGE_NAME battery-monitor) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib) @@ -65,4 +66,26 @@ ELSE(UNIX) ) ENDIF(UNIX) - +IF (UNIX) + SET(CPACK_PACKAGE_FILE_NAME "iri-${PACKAGE_NAME}-dev-${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") + SET(CPACK_PACKAGE_NAME "iri-${PACKAGE_NAME}-dev") + SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Part of IRI-laboratory libraries. More information at https://gitlab.iri.upc.edu/labrobotica") + SET(CPACK_PACKAGING_INSTALL_PREFIX /usr) + SET(CPACK_GENERATOR "DEB") + SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "labrobotica - labrobotica@iri.upc.edu") + +# Uncomment to add the necessary mantainer scripts +# SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/scripts/debian/preinst;${CMAKE_SOURCE_DIR}/scripts/debian/postinst;${CMAKE_SOURCE_DIR}/scripts/debian/prerm;${CMAKE_SOURCE_DIR}/scripts/debian/postrm") +SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/scripts/debian/preinst;${CMAKE_SOURCE_DIR}/scripts/debian/postinst;${CMAKE_SOURCE_DIR}/scripts/debian/prerm;${CMAKE_SOURCE_DIR}/scripts/debian/postrm") + +# Uncomment to add dependencies comma separated +# SET(CPACK_DEBIAN_PACKAGE_DEPENDS "iri-<package_name>-dev (>= 1.0~${DISTRIB})") + SET(CPACK_DEBIAN_PACKAGE_DEPENDS "iri-iriutils-dev (>= 1.0~${DISTRIB}), iri-comm-dev (>= 1.0~${DISTRIB}), iri-dynamixel-dev (>= 1.0~${DISTRIB})") + + INCLUDE(CPack) +ELSE(UNIX) + ADD_CUSTOM_COMMAND( + COMMENT "packaging only implemented in unix" + TARGET uninstall + ) +ENDIF(UNIX) diff --git a/Findbattery_monitor.cmake b/Findbattery_monitor.cmake index 27623f83806a182b739f2963d7ebb0c27369fcb2..1d21de32df7e4c9c6f90701363d6c764d3aa32d1 100755 --- a/Findbattery_monitor.cmake +++ b/Findbattery_monitor.cmake @@ -1,23 +1,24 @@ #edit the following line to add the librarie's header files -FIND_PATH(battery_monitor_INCLUDE_DIR battery_monitor.h /usr/include/iri/battery_monitor /usr/local/include/iri/battery_monitor) +SET(name battery_monitor) +FIND_PATH(${name}_INCLUDE_DIRS ${name}.h /usr/include/iri/${name} /usr/local/include/iri/${name}) -FIND_LIBRARY(battery_monitor_LIBRARY - NAMES battery_monitor - PATHS /usr/lib /usr/lib/iri/battery_monitor /usr/local/lib /usr/local/lib/iri/battery_monitor) +FIND_LIBRARY(${name}_LIBRARIES + NAMES ${name} + PATHS /usr/lib /usr/lib/iri/${name} /usr/local/lib /usr/local/lib/iri/${name}) -SET(battery_monitor_INCLUDE_DIRS ${battery_monitor_INCLUDE_DIR}) -SET(battery_monitor_LIBRARIES ${battery_monitor_LIBRARY}) +SET(${name}_INCLUDE_DIR ${${name}_INCLUDE_DIRS}) +SET(${name}_LIBRARY ${${name}_LIBRARIES}) -IF (battery_monitor_INCLUDE_DIR AND battery_monitor_LIBRARY) - SET(battery_monitor_FOUND TRUE) -ENDIF (battery_monitor_INCLUDE_DIR AND battery_monitor_LIBRARY) +IF (${name}_INCLUDE_DIRS AND ${name}_LIBRARIES) + SET(${name}_FOUND TRUE) +ENDIF (${name}_INCLUDE_DIRS AND ${name}_LIBRARIES) -IF (battery_monitor_FOUND) - IF (NOT battery_monitor_FIND_QUIETLY) - MESSAGE(STATUS "Found battery_monitor: ${battery_monitor_LIBRARY}") - ENDIF (NOT battery_monitor_FIND_QUIETLY) -ELSE (battery_monitor_FOUND) - IF (battery_monitor_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find battery_monitor") - ENDIF (battery_monitor_FIND_REQUIRED) -ENDIF (battery_monitor_FOUND) \ No newline at end of file +IF (${name}_FOUND) + IF (NOT ${name}_FIND_QUIETLY) + MESSAGE(STATUS "Found ${name}: ${${name}_LIBRARIES}") + ENDIF (NOT ${name}_FIND_QUIETLY) +ELSE (${name}_FOUND) + IF (${name}_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find ${name}") + ENDIF (${name}_FIND_REQUIRED) +ENDIF (${name}_FOUND) diff --git a/src/battery_monitor.h b/include/battery_monitor.h similarity index 100% rename from src/battery_monitor.h rename to include/battery_monitor.h diff --git a/scripts/debian/postinst b/scripts/debian/postinst new file mode 100644 index 0000000000000000000000000000000000000000..8adecc986a10fecd41a8370ef255cc0ec0725f61 --- /dev/null +++ b/scripts/debian/postinst @@ -0,0 +1,17 @@ +#!/bin/bash +set -e +case "$1" in + configure) + #echo "I'm a postinst script" + ;; + abort-upgrade) + + ;; + abort-remove) + + ;; + abort-deconfigure) + + ;; +esac +exit 0 diff --git a/scripts/debian/postrm b/scripts/debian/postrm new file mode 100644 index 0000000000000000000000000000000000000000..3b846efe01b88ec4079d8577af7a257bf88a75b9 --- /dev/null +++ b/scripts/debian/postrm @@ -0,0 +1,26 @@ +#!/bin/bash +set -e +case "$1" in + remove) + #echo "I'm a postrm script" + ;; + purge) + + ;; + upgrade) + + ;; + disappear) + + ;; + failed-upgrade) + + ;; + abort-install) + + ;; + abort-upgrade) + + ;; +esac +exit 0 diff --git a/scripts/debian/preinst b/scripts/debian/preinst new file mode 100644 index 0000000000000000000000000000000000000000..0a57abee54dd1f29c74acfe75203f2503d156311 --- /dev/null +++ b/scripts/debian/preinst @@ -0,0 +1,14 @@ +#!/bin/bash +set -e +case "$1" in + install) + #echo "I'm a preinst script" + ;; + upgrade) + + ;; + abort-upgrade) + + ;; +esac +exit 0 diff --git a/scripts/debian/prerm b/scripts/debian/prerm new file mode 100644 index 0000000000000000000000000000000000000000..d9ff53c269c84677eeddbc2d7a630ca1f6dcc9ba --- /dev/null +++ b/scripts/debian/prerm @@ -0,0 +1,17 @@ +#!/bin/bash +set -e +case "$1" in + remove) + #echo "I'm a prerm script" + ;; + upgrade) + + ;; + deconfigure) + + ;; + failed-upgrade) + + ;; +esac +exit 0 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2f4fb50c9348230ee47ee7110a2ba7fd3abf9d7c..fac59fd17f547c2a36ea343a0c42f03274ec235f 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ # driver source files SET(sources battery_monitor.cpp) # application header files -SET(headers battery_monitor.h) +SET(headers ../include/battery_monitor.h) # locate the necessary dependencies FIND_PACKAGE(iriutils REQUIRED) @@ -9,17 +9,17 @@ FIND_PACKAGE(comm REQUIRED) FIND_PACKAGE(dynamixel REQUIRED) # add the necessary include directories -INCLUDE_DIRECTORIES(.) -INCLUDE_DIRECTORIES(${iriutils_INCLUDE_DIR}) -INCLUDE_DIRECTORIES(${comm_INCLUDE_DIR}) -INCLUDE_DIRECTORIES(${dynamixel_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(../include) +INCLUDE_DIRECTORIES(${iriutils_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${comm_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${dynamixel_INCLUDE_DIRS}) # create the shared library ADD_LIBRARY(battery_monitor SHARED ${sources}) -TARGET_LINK_LIBRARIES(battery_monitor ${iriutils_LIBRARY}) -TARGET_LINK_LIBRARIES(battery_monitor ${comm_LIBRARY}) -TARGET_LINK_LIBRARIES(battery_monitor ${dynamixel_LIBRARY}) +TARGET_LINK_LIBRARIES(battery_monitor ${iriutils_LIBRARIES}) +TARGET_LINK_LIBRARIES(battery_monitor ${comm_LIBRARIES}) +TARGET_LINK_LIBRARIES(battery_monitor ${dynamixel_LIBRARIES}) # link necessary libraries INSTALL(TARGETS battery_monitor