Skip to content

Commit 61793ff

Browse files
authored
CI for beaglecfg (#38)
* Minor: CI & Deb Package * Include CPack for debian pkg * Changed target name to beaglecfg * CI for build and release ref for CI: https://github.com/VedantParanjape/simpPRU
1 parent 94b898a commit 61793ff

2 files changed

Lines changed: 97 additions & 8 deletions

File tree

.github/workflows/armhf-build.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: armhf build
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
env:
9+
BUILD_TYPE: Release
10+
11+
jobs:
12+
armhf:
13+
name: build-armhf
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v2
19+
- name: Install Deps
20+
run: sudo apt install gcc-8-arm-linux-gnueabihf g++-8-arm-linux-gnueabihf
21+
- name: Build
22+
id: armhf-artifact-download
23+
run: |
24+
cd ${{ github.workspace }}
25+
mkdir build
26+
cd build
27+
cmake .. -DCMAKE_CXX_COMPILER=$(which arm-linux-gnueabihf-g++-8) \
28+
-DCMAKE_C_COMPILER=$(which arm-linux-gnueabihf-gcc-8) \
29+
-DARMHF_DEB=ON
30+
make -j$(nproc)
31+
make package
32+
armhf__filename__=$(echo $(ls ${{steps.armhf-artifact-download.outputs.download-path}} | grep ..armhf.deb) | tr -d '\n')
33+
version__name__=${armhf__filename__#*-}
34+
name__=$(echo ${armhf__filename__%-*} | tr -d '\n')
35+
trailing_=$(git rev-list --count HEAD | tr -d '\n')
36+
version__=$(echo ${version__name__%-*} | tr -d '\n')
37+
echo "name__=$name__" >> $GITHUB_ENV
38+
echo "version__=$version__" >> $GITHUB_ENV
39+
echo "armhf__filename__=$armhf__filename__" >> $GITHUB_ENV
40+
- name: Create Release
41+
id: create_release
42+
uses: actions/create-release@v1
43+
env:
44+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45+
with:
46+
tag_name: ${{ env.version__ }}
47+
release_name: ${{ env.name__ }}
48+
draft: false
49+
prerelease: false
50+
- name: Upload Release Asset
51+
id: upload-release-asset
52+
uses: actions/upload-release-asset@v1
53+
env:
54+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55+
with:
56+
# This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object,
57+
# which include a `upload_url`. See this blog post for more info:
58+
# https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
59+
upload_url: ${{ steps.create_release.outputs.upload_url }}
60+
asset_path: ${{ github.workspace }}/build/${{ env.armhf__filename__ }}
61+
asset_name: ${{ env.armhf__filename__ }}
62+
asset_content_type: application/vnd.debian.binary-package

CMakeLists.txt

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
cmake_minimum_required (VERSION 3.11)
2-
project(beagle-config VERSION 0.1.0)
2+
project(beaglecfg VERSION 0.1)
33

44
option(BEAGLE_CONFIG_SANITIZE "Use sanitize debug options" OFF)
5+
option(ARMHF_DEB "Debian Package for armhf" OFF)
56

67
include(FetchContent)
78
set(FETCHCONTENT_UPDATES_DISCONNECTED TRUE)
@@ -17,7 +18,7 @@ if(NOT ftxui_POPULATED)
1718
add_subdirectory(${ftxui_SOURCE_DIR} ${ftxui_BINARY_DIR} EXCLUDE_FROM_ALL)
1819
endif()
1920

20-
add_executable(beagle-config
21+
add_executable(${PROJECT_NAME}
2122
src/main.cpp
2223
src/ui/panel/emmc/emmc_impl.cpp
2324
src/ui/panel/gpio/gpio_impl.cpp
@@ -37,19 +38,19 @@ add_executable(beagle-config
3738
src/utils.cpp
3839
)
3940

40-
target_link_libraries(beagle-config
41+
target_link_libraries(${PROJECT_NAME}
4142
PRIVATE ftxui::component
4243
PRIVATE stdc++fs
4344
)
4445

45-
target_include_directories(beagle-config
46+
target_include_directories(${PROJECT_NAME}
4647
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/
4748
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src/
4849
)
4950

50-
set_property(TARGET beagle-config PROPERTY CXX_STANDARD 17)
51+
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)
5152

52-
target_compile_options(beagle-config
53+
target_compile_options(${PROJECT_NAME}
5354
PRIVATE "-Wall"
5455
PRIVATE "-Wextra"
5556
PRIVATE "-pedantic"
@@ -60,8 +61,8 @@ target_compile_options(beagle-config
6061

6162
# Useful for debugging and find
6263
if (BEAGLE_CONFIG_SANITIZE)
63-
target_compile_options(beagle-config PRIVATE -fsanitize=address,leak,undefined)
64-
target_link_libraries(beagle-config PRIVATE -fsanitize=address,leak,undefined)
64+
target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address,leak,undefined)
65+
target_link_libraries(${PROJECT_NAME} PRIVATE -fsanitize=address,leak,undefined)
6566
endif()
6667

6768
set(git_version "unknown")
@@ -86,3 +87,29 @@ configure_file(
8687
${CMAKE_CURRENT_SOURCE_DIR}/src/environment.hpp.in
8788
${CMAKE_CURRENT_BINARY_DIR}/src/environment.hpp
8889
)
90+
91+
if(ARMHF_DEB)
92+
93+
set(ARCHITECTURE "armhf")
94+
set(CPACK_GENERATOR "DEB")
95+
set(CPACK_SOURCE_GENERATOR "TGZ")
96+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Shreyas Atre")
97+
set(CPACK_PACKAGE_CONTACT "Shreyas Atre shreyasatre16@gmail.com")
98+
set(CPACK_PACKAGE_VERSION "${CMAKE_PROJECT_VERSION}-${git_version}")
99+
set(CPACK_DEBIAN_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
100+
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCHITECTURE})
101+
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CMAKE_PROJECT_VERSION}-${git_version}-${ARCHITECTURE}")
102+
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Configure your beaglebone device")
103+
set(CPACK_DEBIAN_PACKAGE_PRIORITY "standard")
104+
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/SAtacker/beagle-config")
105+
set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
106+
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
107+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
108+
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
109+
set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md")
110+
set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_SOURCE_DIR}/build/;${CMAKE_SOURCE_DIR}/.git/")
111+
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/script/postinst")
112+
113+
include(CPack)
114+
115+
endif(ARMHF_DEB)

0 commit comments

Comments
 (0)