Skip to content

Commit ff02b71

Browse files
committed
GitHub action to build and publish
1 parent a871e61 commit ff02b71

6 files changed

Lines changed: 359 additions & 12 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Create Release
2+
3+
on: push
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: Checkout
10+
uses: actions/checkout@v3
11+
with:
12+
submodules: recursive
13+
14+
- name: Install dependencies
15+
run: |
16+
echo ${{github.ref}}
17+
echo ${{github.ref_name}}
18+
sudo apt-get update
19+
sudo apt-get install meson libjson-c-dev libkeyutils-dev libiniparser-dev libcap-dev gperf
20+
21+
- name: Build libkmod
22+
run: |
23+
cd kmod
24+
git apply ../patches/kmod.patch
25+
./autogen.sh
26+
./configure --disable-shared --disable-tools --disable-manpages --disable-test-modules
27+
sudo make -j install CFLAGS=-O2 CPPFLAGS=-static
28+
29+
- name: Build libudev
30+
run: |
31+
cd systemd
32+
meson setup --buildtype plain --default-library static -Dstatic-libudev=true build
33+
ninja -C build libudev.a
34+
meson compile -C build libudev.pc
35+
sudo cp src/libudev/libudev.h /usr/include/
36+
sudo cp build/libudev.a /usr/lib/x86_64-linux-gnu/
37+
sudo cp build/src/libudev/libudev.pc /usr/lib/x86_64-linux-gnu/pkgconfig
38+
39+
- name: Build ndctl
40+
run: |
41+
LDFLAGS="-static -lcap" meson setup --buildtype plain --default-library static \
42+
-Ddocs=disabled -Dlibtracefs=disabled -Dsystemd=disabled -Dtest=disabled build
43+
ninja -C build
44+
45+
- name: Test
46+
run: |
47+
file build/cxl/cxl
48+
tar -cvzf ndctl-${{github.ref_name}}.tar.gz --transform 's/.*\///' build/ndctl/ndctl build/cxl/cxl build/daxctl/daxctl
49+
tar tvzf ndctl-${{github.ref_name}}.tar.gz
50+
51+
- name: Release
52+
uses: softprops/action-gh-release@v1
53+
if: startsWith(github.ref, 'refs/tags/')
54+
with:
55+
files: ndctl-${{github.ref_name}}.tar.gz

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "kmod"]
2+
path = kmod
3+
url = https://github.com/kmod-project/kmod.git
4+
[submodule "systemd"]
5+
path = systemd
6+
url = https://github.com/systemd/systemd.git

kmod

Submodule kmod added at 5d46434

meson.build

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,13 @@ versiondep = declare_dependency(
139139
sources: version_h
140140
)
141141

142-
kmod = dependency('libkmod')
143-
libudev = dependency('libudev')
144-
uuid = dependency('uuid')
145-
json = dependency('json-c')
142+
kmod = dependency('libkmod', static : true)
143+
libudev = dependency('libudev', static : true)
144+
uuid = dependency('uuid', static : true)
145+
json = dependency('json-c', static : true)
146146
if get_option('libtracefs').enabled()
147-
traceevent = dependency('libtraceevent')
148-
tracefs = dependency('libtracefs', version : '>=1.2.0')
147+
traceevent = dependency('libtraceevent', static : true)
148+
tracefs = dependency('libtracefs', version : '>=1.2.0', static : true)
149149
endif
150150

151151
if get_option('docs').enabled()
@@ -158,34 +158,34 @@ if get_option('docs').enabled()
158158
endif
159159

160160
if get_option('systemd').enabled()
161-
systemd = dependency('systemd', required : true)
161+
systemd = dependency('systemd', required : true, static : true)
162162
systemdunitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir')
163-
udev = dependency('udev', required : true)
163+
udev = dependency('udev', required : true, static : true)
164164
udevdir = udev.get_pkgconfig_variable('udevdir')
165165
udevrulesdir = udevdir / 'rules.d'
166166
endif
167167

168168
cc = meson.get_compiler('c')
169169

170170
# keyutils lacks pkgconfig
171-
keyutils = cc.find_library('keyutils', required : get_option('keyutils'))
171+
keyutils = cc.find_library('keyutils', required : get_option('keyutils'), static : true)
172172

173173
# iniparser lacks pkgconfig and its header files are either at '/usr/include' or '/usr/include/iniparser'
174174
# Use the path provided by user via meson configure -Diniparserdir=<somepath>
175175
# if thats not provided then try searching for 'iniparser.h' in default system include path
176176
# and if that not found then as a last resort try looking at '/usr/include/iniparser'
177177
iniparser_headers = ['iniparser.h', 'dictionary.h']
178178

179-
message('Looking for iniparser include headers', iniparser_headers)
179+
# message('Looking for iniparser include headers', iniparser_headers)
180180

181181
iniparserdir = include_directories(includedir / get_option('iniparserdir'), is_system:true)
182182
iniparser = cc.find_library('iniparser', required : (get_option('iniparserdir') != '') ,
183-
has_headers :iniparser_headers ,header_include_directories : iniparserdir)
183+
has_headers :iniparser_headers ,header_include_directories : iniparserdir, static : true)
184184

185185
if not iniparser.found()
186186
iniparserdir = include_directories(includedir / 'iniparser', is_system:true)
187187
iniparser = cc.find_library('iniparser', required : true, has_headers : iniparser_headers,
188-
header_include_directories : iniparserdir)
188+
header_include_directories : iniparserdir, static : true)
189189
endif
190190
iniparser = declare_dependency(include_directories: iniparserdir, dependencies:iniparser)
191191

0 commit comments

Comments
 (0)