@@ -65,10 +65,22 @@ jobs:
6565 - name : Rename binary
6666 run : copy builddir\wixl.exe wixl-win-${{ matrix.arch }}.exe
6767
68+ - name : Collect libmsi artifacts
69+ shell : msys2 {0}
70+ run : |
71+ (cd builddir && ar t libmsi-1.0.a | tr -d '\r' | xargs ar rcs libmsi.a)
72+ cp builddir/libmsi.a libmsi-win-${{ matrix.arch }}.lib
73+ cp builddir/libmsi.dll libmsi-win-${{ matrix.arch }}.dll
74+ cp builddir/libmsi.dll.a libmsi-win-${{ matrix.arch }}.dll.lib
75+
6876 - uses : actions/upload-artifact@v4
6977 with :
7078 name : build-win-${{ matrix.arch }}
71- path : wixl-win-${{ matrix.arch }}.exe
79+ path : |
80+ wixl-win-${{ matrix.arch }}.exe
81+ libmsi-win-${{ matrix.arch }}.lib
82+ libmsi-win-${{ matrix.arch }}.dll
83+ libmsi-win-${{ matrix.arch }}.dll.lib
7284 retention-days : 1
7385
7486 linux :
@@ -107,15 +119,34 @@ jobs:
107119 file builddir/wixl
108120 ldd builddir/wixl || echo "statically linked"
109121 builddir/wixl --version
122+ echo "=== libmsi shared library ==="
123+ file builddir/libmsi.so
124+ ls -lh builddir/libmsi.so
125+ echo "=== creating non-thin static archive ==="
126+ (cd builddir && ar rcs libmsi.a $(ar t libmsi-1.0.a))
127+ ls -lh builddir/libmsi.a
110128 '
111129
112130 - name : Rename binary
113131 run : cp builddir/wixl wixl-linux-${{ matrix.arch }}
114132
133+ - name : Collect libmsi artifacts
134+ run : |
135+ cp builddir/libmsi.a libmsi-linux-${{ matrix.arch }}.a
136+ cp builddir/libmsi.so libmsi-linux-${{ matrix.arch }}.so
137+
138+ - name : Collect generated header
139+ if : matrix.arch == 'x64'
140+ run : cp builddir/libmsi-enums.h libmsi-enums-generated.h
141+
115142 - uses : actions/upload-artifact@v4
116143 with :
117144 name : build-linux-${{ matrix.arch }}
118- path : wixl-linux-${{ matrix.arch }}
145+ path : |
146+ wixl-linux-${{ matrix.arch }}
147+ libmsi-linux-${{ matrix.arch }}.a
148+ libmsi-linux-${{ matrix.arch }}.so
149+ libmsi-enums-generated.h
119150 retention-days : 1
120151
121152 macos :
@@ -156,44 +187,85 @@ jobs:
156187 echo "ERROR: Found non-system dynamic dependencies!"
157188 exit 1
158189 fi
190+ echo "=== libmsi shared library ==="
191+ file builddir/libmsi.dylib
192+ otool -L builddir/libmsi.dylib
193+ ls -lh builddir/libmsi.dylib
159194
160195 - name : Rename binary
161196 run : cp builddir/wixl wixl-macos-${{ matrix.arch }}
162197
198+ - name : Collect libmsi artifacts
199+ run : |
200+ cp builddir/libmsi-1.0.a libmsi-macos-${{ matrix.arch }}.a
201+ cp builddir/libmsi.dylib libmsi-macos-${{ matrix.arch }}.dylib
202+
163203 - uses : actions/upload-artifact@v4
164204 with :
165205 name : build-macos-${{ matrix.arch }}
166- path : wixl-macos-${{ matrix.arch }}
206+ path : |
207+ wixl-macos-${{ matrix.arch }}
208+ libmsi-macos-${{ matrix.arch }}.a
209+ libmsi-macos-${{ matrix.arch }}.dylib
167210 retention-days : 1
168211
169212 package :
170213 runs-on : macos-latest
171214 needs : [windows, linux, macos]
172215 steps :
216+ - uses : actions/checkout@v4
217+ with :
218+ submodules : true
219+
173220 - uses : actions/download-artifact@v4
174221 with :
175222 pattern : build-*
176223 merge-multiple : true
177224
178- - name : Create macOS universal binary
225+ - name : Create macOS universal wixl binary
179226 run : |
180227 lipo -create wixl-macos-arm64 wixl-macos-x64 -output wixl-osx-universal
181228 chmod +x wixl-osx-universal
182229 file wixl-osx-universal
183230 rm wixl-macos-arm64 wixl-macos-x64
184231
185- - name : Prepare release directory
232+ - name : Create macOS universal dylib
186233 run : |
187- mkdir release
188- mv wixl-win-x86.exe release/
189- mv wixl-win-x64.exe release/
190- mv wixl-win-arm64.exe release/
191- mv wixl-linux-x64 release/
192- mv wixl-linux-arm64 release/
193- mv wixl-osx-universal release/
194- ls -la release/
234+ lipo -create libmsi-macos-arm64.dylib libmsi-macos-x64.dylib -output libmsi-osx-universal.dylib
235+ file libmsi-osx-universal.dylib
236+ rm libmsi-macos-arm64.dylib libmsi-macos-x64.dylib
237+
238+ - name : Package wixl
239+ run : |
240+ mkdir -p build-wixl
241+ mv wixl-win-x86.exe wixl-win-x64.exe wixl-win-arm64.exe build-wixl/
242+ mv wixl-linux-x64 wixl-linux-arm64 build-wixl/
243+ mv wixl-osx-universal build-wixl/
244+ ls -la build-wixl/
245+
246+ - name : Package libmsi
247+ run : |
248+ mkdir -p build-libmsi/include build-libmsi/shared build-libmsi/static
249+ cp msitools/include/libmsi.h msitools/include/libmsi-database.h \
250+ msitools/include/libmsi-query.h msitools/include/libmsi-record.h \
251+ msitools/include/libmsi-summary-info.h msitools/include/libmsi-types.h \
252+ build-libmsi/include/
253+ cp libmsi-enums-generated.h build-libmsi/include/libmsi-enums.h
254+ mv libmsi-win-*.dll build-libmsi/shared/
255+ mv libmsi-win-*.dll.lib build-libmsi/shared/
256+ mv libmsi-linux-*.so build-libmsi/shared/
257+ mv libmsi-osx-universal.dylib build-libmsi/shared/
258+ mv libmsi-win-*.lib build-libmsi/static/
259+ mv libmsi-linux-*.a build-libmsi/static/
260+ mv libmsi-macos-arm64.a libmsi-macos-x64.a build-libmsi/static/
261+ ls -laR build-libmsi/
262+
263+ - uses : actions/upload-artifact@v4
264+ with :
265+ name : build-wixl
266+ path : build-wixl/*
195267
196268 - uses : actions/upload-artifact@v4
197269 with :
198- name : wixl
199- path : release /*
270+ name : build-libmsi
271+ path : build-libmsi/** /*
0 commit comments