@@ -108,15 +108,15 @@ jobs:
108108 - name : Configure build (Linux)
109109 if : matrix.platform == 'linux'
110110 run : |
111- cmake -B build -DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF
111+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF -DENABLE_SHARED_LIB=ON
112112
113113 - name : Configure build (macOS)
114114 if : matrix.platform == 'macos'
115115 run : |
116116 if [ "${{ matrix.arch }}" = "arm64" ]; then
117- cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64
117+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 -DENABLE_SHARED_LIB=ON
118118 else
119- cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64
119+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -DENABLE_SHARED_LIB=ON
120120 fi
121121
122122 - name : Configure build (Windows)
@@ -126,7 +126,8 @@ jobs:
126126 -DLIBUSB_INCLUDE_DIR="$PWD\deps\libusb\include\libusb-1.0" `
127127 -DLIBUSB_LIBRARIES="$PWD\deps\libusb\MS64\dll\libusb-1.0.lib" `
128128 -DTHREADS_PTHREADS_INCLUDE_DIR="$PWD\deps\pthreads\include" `
129- -DTHREADS_PTHREADS_WIN32_LIBRARY="$PWD\deps\pthreads\lib\x64\pthreadVC2.lib"
129+ -DTHREADS_PTHREADS_WIN32_LIBRARY="$PWD\deps\pthreads\lib\x64\pthreadVC2.lib" `
130+ -DENABLE_SHARED_LIB=ON
130131
131132 # === Build ===
132133 - name : Build (Linux/macOS)
@@ -150,15 +151,15 @@ jobs:
150151 run : |
151152 ARTIFACT_DIR="${{ env.PACKAGE_NAME }}-${{ matrix.name }}-v${{ needs.extract-version.outputs.version }}"
152153 mkdir -p "$ARTIFACT_DIR"
153- cp build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
154+ cp -a build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
154155 cp build/hydrasdr-tools/src/hydrasdr_* "$ARTIFACT_DIR/"
155156
156157 - name : Package artifacts (macOS)
157158 if : matrix.platform == 'macos'
158159 run : |
159160 ARTIFACT_DIR="${{ env.PACKAGE_NAME }}-${{ matrix.name }}-v${{ needs.extract-version.outputs.version }}"
160161 mkdir -p "$ARTIFACT_DIR"
161- cp build/libhydrasdr/src/libhydrasdr.dylib* "$ARTIFACT_DIR/" 2>/dev/null || true
162+ cp -a build/libhydrasdr/src/libhydrasdr.dylib* "$ARTIFACT_DIR/" 2>/dev/null || true
162163 cp build/hydrasdr-tools/src/hydrasdr_* "$ARTIFACT_DIR/" 2>/dev/null || true
163164
164165 - name : Package artifacts (Windows)
@@ -192,8 +193,8 @@ jobs:
192193 mkdir -p "${PACKAGE_DIR}/usr/share/doc/${PACKAGE_NAME_FULL}"
193194 mkdir -p "${PACKAGE_DIR}/etc/udev/rules.d"
194195
195- # Copy binaries and libraries
196- cp build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
196+ # Copy binaries and libraries (use cp -a to preserve symlinks)
197+ cp -a build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
197198 cp build/hydrasdr-tools/src/hydrasdr_* "${PACKAGE_DIR}/usr/bin/"
198199
199200 # Copy udev rules file from repository
@@ -208,6 +209,7 @@ jobs:
208209 Architecture: ${ARCH}
209210 Depends: libusb-1.0-0 (>= 1.0.20)
210211 Maintainer: ${{ env.MAINTAINER }}
212+ Homepage: ${{ env.HOMEPAGE }}
211213 Description: HydraSDR RFOne Host Tools and Libraries
212214 Host tools and shared libraries for HydraSDR RFOne software-defined radio.
213215 Provides command-line utilities and development libraries for interfacing
@@ -216,10 +218,7 @@ jobs:
216218 This package includes:
217219 - libhydrasdr shared library
218220 - Command-line tools (hydrasdr_info, hydrasdr_lib_version, etc.)
219- - Development headers and pkg-config files
220- .
221- Built for: ${{ matrix.name }}
222- Homepage: ${{ env.HOMEPAGE }}
221+ - udev rules for non-root device access
223222 EOF
224223
225224 # Create maintenance scripts
@@ -273,7 +272,7 @@ jobs:
273272 # Set permissions
274273 find "${PACKAGE_DIR}" -type d -exec chmod 755 {} \;
275274 find "${PACKAGE_DIR}/usr/bin" -type f -exec chmod 755 {} \;
276- find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -exec chmod 644 {} \;
275+ find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -type f - exec chmod 644 {} \;
277276 chmod 644 "${PACKAGE_DIR}/etc/udev/rules.d/51-hydrasdr.rules"
278277
279278 # Build package
@@ -519,7 +518,7 @@ jobs:
519518 # === Build Configuration ===
520519 - name : Configure build
521520 run : |
522- CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF"
521+ CMAKE_FLAGS="-DCMAKE_BUILD_TYPE=Release -DINSTALL_UDEV_RULES=OFF -DENABLE_SHARED_LIB=ON "
523522
524523 # Add extra configuration if specified
525524 if [ -n "${{ matrix.extra_config }}" ]; then
@@ -557,7 +556,7 @@ jobs:
557556 run : |
558557 ARTIFACT_DIR="${{ env.PACKAGE_NAME }}-${{ matrix.name }}-v${{ needs.extract-version.outputs.version }}"
559558 mkdir -p "$ARTIFACT_DIR"
560- cp build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
559+ cp -a build/libhydrasdr/src/libhydrasdr.so* "$ARTIFACT_DIR/" 2>/dev/null || true
561560 cp build/hydrasdr-tools/src/hydrasdr_* "$ARTIFACT_DIR/"
562561
563562 # === Create .deb package for Debian/Ubuntu/Linux Mint ===
@@ -586,8 +585,8 @@ jobs:
586585 mkdir -p "${PACKAGE_DIR}/usr/share/doc/${PACKAGE_NAME_FULL}"
587586 mkdir -p "${PACKAGE_DIR}/etc/udev/rules.d"
588587
589- # Copy binaries and libraries
590- cp build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
588+ # Copy binaries and libraries (use cp -a to preserve symlinks)
589+ cp -a build/libhydrasdr/src/libhydrasdr.so* "${PACKAGE_DIR}/usr/lib/" 2>/dev/null || true
591590 cp build/hydrasdr-tools/src/hydrasdr_* "${PACKAGE_DIR}/usr/bin/"
592591
593592 # Copy udev rules file from repository
@@ -602,6 +601,7 @@ jobs:
602601 Architecture: ${ARCH}
603602 Depends: libusb-1.0-0 (>= 1.0.20)
604603 Maintainer: ${{ env.MAINTAINER }}
604+ Homepage: ${{ env.HOMEPAGE }}
605605 Description: HydraSDR RFOne Host Tools and Libraries (${DIST_DESC})
606606 Host tools and shared libraries for HydraSDR RFOne software-defined radio.
607607 Provides command-line utilities and development libraries for interfacing
@@ -610,10 +610,7 @@ jobs:
610610 This package includes:
611611 - libhydrasdr shared library
612612 - Command-line tools (hydrasdr_info, hydrasdr_lib_version, etc.)
613- - Development headers and pkg-config files
614- .
615- Built for: ${{ matrix.name }}
616- Homepage: ${{ env.HOMEPAGE }}
613+ - udev rules for non-root device access
617614 EOF
618615
619616 # Create maintenance scripts
@@ -664,10 +661,10 @@ jobs:
664661
665662 gzip -9 "${PACKAGE_DIR}/usr/share/doc/${PACKAGE_NAME_FULL}/changelog.Debian"
666663
667- # Set permissions
664+ # Set permissions (use -type f to only chmod actual files, not symlinks)
668665 find "${PACKAGE_DIR}" -type d -exec chmod 755 {} \;
669666 find "${PACKAGE_DIR}/usr/bin" -type f -exec chmod 755 {} \;
670- find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -exec chmod 644 {} \;
667+ find "${PACKAGE_DIR}/usr/lib" -name "*.so*" -type f - exec chmod 644 {} \;
671668 chmod 644 "${PACKAGE_DIR}/etc/udev/rules.d/51-hydrasdr.rules"
672669
673670 # Build and verify package
@@ -725,14 +722,14 @@ jobs:
725722 This package includes:
726723 - libhydrasdr shared library
727724 - Command-line tools (hydrasdr_info, hydrasdr_lib_version, etc.)
728- - Development headers and pkg-config files
725+ - udev rules for non-root device access
729726
730727 Built for: ${{ matrix.name }}
731728
732729 %prep
733730 # Copy source files to build directory
734731 mkdir -p %{_builddir}/%{name}-%{version}
735- cp -r %{_sourcedir}/* %{_builddir}/%{name}-%{version}/
732+ cp -a %{_sourcedir}/* %{_builddir}/%{name}-%{version}/
736733
737734 %build
738735 # Files already built, just verify they exist
@@ -747,8 +744,8 @@ jobs:
747744 mkdir -p %{buildroot}/usr/bin
748745 mkdir -p %{buildroot}/etc/udev/rules.d
749746
750- # Copy files from build directory
751- cp %{_builddir}/%{name}-%{version}/build/libhydrasdr/src/libhydrasdr.so* %{buildroot}/usr/lib/ || true
747+ # Copy files from build directory (use cp -a to preserve symlinks)
748+ cp -a %{_builddir}/%{name}-%{version}/build/libhydrasdr/src/libhydrasdr.so* %{buildroot}/usr/lib/ || true
752749 cp %{_builddir}/%{name}-%{version}/build/hydrasdr-tools/src/hydrasdr_* %{buildroot}/usr/bin/
753750 cp %{_builddir}/%{name}-%{version}/hydrasdr-tools/51-hydrasdr.rules %{buildroot}/etc/udev/rules.d/51-hydrasdr.rules
754751
@@ -828,8 +825,8 @@ jobs:
828825 - Built from commit ${{ github.sha }}
829826 EOF
830827
831- # Copy source files to SOURCES directory
832- cp -r . ~/rpmbuild/SOURCES/
828+ # Copy source files to SOURCES directory (use cp -a to preserve symlinks)
829+ cp -a . ~/rpmbuild/SOURCES/
833830
834831 # Build the RPM package
835832 rpmbuild -bb ~/rpmbuild/SPECS/${{ env.PACKAGE_NAME }}.spec \
@@ -903,8 +900,8 @@ jobs:
903900 mkdir -p "${pkgdir}/etc/udev/rules.d"
904901 mkdir -p "${pkgdir}/usr/share/licenses/${pkgname}"
905902
906- # Copy files from build directory (using absolute path from original location)
907- cp {{ ORIGINAL_DIR }}/build/libhydrasdr/src/libhydrasdr.so* "${pkgdir}/usr/lib/" || true
903+ # Copy files from build directory (using absolute path from original location, use cp -a for symlinks )
904+ cp -a {{ ORIGINAL_DIR }}/build/libhydrasdr/src/libhydrasdr.so* "${pkgdir}/usr/lib/" || true
908905 cp {{ ORIGINAL_DIR }}/build/hydrasdr-tools/src/hydrasdr_* "${pkgdir}/usr/bin/"
909906 cp {{ ORIGINAL_DIR }}/hydrasdr-tools/51-hydrasdr.rules "${pkgdir}/etc/udev/rules.d/51-hydrasdr.rules"
910907
0 commit comments