Skip to content

Commit 6739c5f

Browse files
committed
Setup CPack and GitHub Actions
1 parent be8251a commit 6739c5f

File tree

4 files changed

+84
-1
lines changed

4 files changed

+84
-1
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ insert_final_newline = true
1212
indent_style = space
1313
indent_size = 4
1414

15-
[*.{sh,bash,cmake,json}]
15+
[*.{sh,bash,cmake,json,yaml}]
1616
indent_style = space
1717
indent_size = 2
1818

.github/workflows/build.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Build
2+
on:
3+
pull_request:
4+
push:
5+
branches:
6+
- "master"
7+
tags:
8+
- "v*"
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
- uses: actions/cache@v3
15+
with:
16+
path: |
17+
/var/lib/apt/lists
18+
/var/cache/apt/archives/**.deb
19+
!/var/lib/apt/lists/partial
20+
!/var/lib/apt/lists/lock
21+
!/var/cache/apt/archives/partial
22+
!/var/cache/apt/archives/lock
23+
key: ${{ runner.os }}-apt-v1
24+
- uses: lukka/get-cmake@latest
25+
- name: Setup APT packages
26+
run: |
27+
sudo apt-get update
28+
sudo apt-get install -y --no-install-recommends rpm
29+
- name: Build release
30+
run: ./build.sh pack
31+
- name: Upload to GitHub artifact
32+
uses: actions/upload-artifact@v3
33+
with:
34+
name: dist
35+
path: "build/dist/"
36+
- name: Upload to GitHub release
37+
uses: xresloader/upload-to-github-release@v1
38+
with:
39+
file: "build/dist/*"
40+
tags: true
41+
draft: true
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CMakeLists.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,18 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
66

77
add_executable(trapit trapit.cc)
88
install(TARGETS trapit)
9+
10+
set(CPACK_PACKAGE_VENDOR "Jiangge Zhang <tonyseek@gmail.com>")
11+
set(CPACK_PACKAGE_CONTACT "Jiangge Zhang <tonyseek@gmail.com>")
12+
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/dist")
13+
set(
14+
CPACK_PACKAGE_DESCRIPTION_SUMMARY "Command line utility that traps \
15+
short-lived processes to inspect them with PID-aware tools (e.g. strace)")
16+
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md")
17+
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/tonyseek/trapit")
18+
set(CPACK_STRIP_FILES TRUE)
19+
set(
20+
CPACK_SOURCE_IGNORE_FILES
21+
"\\\\.git/" "\\\\.github/" "\\\\.sw[op]$" "/build/")
22+
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.2.5)")
23+
include(CPack)

build.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -e
55
SOURCE_DIR="$(pwd)"
66
BUILD_DIR="${SOURCE_DIR}/build"
77
BUILD_BIN="trapit"
8+
PACK_DIR="${SOURCE_DIR}/build/dist"
89

910
if ! [ -f "${SOURCE_DIR}/CMakeLists.txt" ]; then
1011
printf >&2 'ERROR: %s is not the source directory which includes %s' \
@@ -40,6 +41,27 @@ cmd_build() {
4041
cmake_build
4142
}
4243

44+
cmd_pack() {
45+
cmd_clean
46+
cmd_build
47+
(
48+
cd "${BUILD_DIR}"
49+
cpack -G TXZ --config CPackSourceConfig.cmake
50+
cpack -G TXZ
51+
if command -v dpkg > /dev/null; then
52+
cpack -G DEB
53+
else
54+
printf >&2 '=> Skip to pack DEB because lack of "dpkg" (dpkg)\n'
55+
fi
56+
if command -v rpmbuild > /dev/null; then
57+
cpack -G RPM
58+
else
59+
printf >&2 '=> Skip to pack RPM because lack of "rpm-tools" (rpmbuild)\n'
60+
fi
61+
rm -rf "${PACK_DIR}/_CPack_Packages"
62+
)
63+
}
64+
4365
cmd_run() {
4466
cmd_build
4567
exec "${BUILD_DIR}/${BUILD_BIN}" "$@"
@@ -64,6 +86,9 @@ case "$1" in
6486
build)
6587
cmd_build
6688
;;
89+
pack)
90+
cmd_pack
91+
;;
6792
run)
6893
shift
6994
cmd_run "$@"

0 commit comments

Comments
 (0)