|
1 | | -#!/bin/bash |
2 | | -# Build Linux .deb package for Wavetable |
3 | | - |
4 | | -set -e |
5 | | - |
6 | | -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
7 | | -ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" |
8 | | -VERSION="${VERSION:-1.0.0}" |
9 | | -PLUGIN_NAME="Wavetable" |
10 | | -PACKAGE_NAME="wavetable" |
11 | | -ARCH="amd64" |
12 | | - |
13 | | -# Paths |
14 | | -BIN_DIR="$ROOT_DIR/ci/bin" |
15 | | -DEB_ROOT="$SCRIPT_DIR/deb_root" |
16 | | -OUTPUT_DIR="$SCRIPT_DIR/output" |
17 | | - |
18 | | -echo "Building Wavetable $VERSION .deb package..." |
19 | | - |
20 | | -# Clean and create directories |
21 | | -rm -rf "$DEB_ROOT" "$OUTPUT_DIR" |
22 | | -mkdir -p "$DEB_ROOT" |
23 | | -mkdir -p "$OUTPUT_DIR" |
24 | | - |
25 | | -# Create package structure |
26 | | -mkdir -p "$DEB_ROOT/DEBIAN" |
27 | | -mkdir -p "$DEB_ROOT/usr/lib/vst" |
28 | | -mkdir -p "$DEB_ROOT/usr/lib/vst3" |
29 | | -mkdir -p "$DEB_ROOT/usr/lib/lv2" |
30 | | -mkdir -p "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Wavetables" |
31 | | -mkdir -p "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Presets" |
32 | | - |
33 | | -# Copy plugins |
34 | | -if [ -f "$BIN_DIR/vst/$PLUGIN_NAME.so" ]; then |
35 | | - cp "$BIN_DIR/vst/$PLUGIN_NAME.so" "$DEB_ROOT/usr/lib/vst/" |
36 | | -fi |
37 | | - |
38 | | -if [ -d "$BIN_DIR/vst3/$PLUGIN_NAME.vst3" ]; then |
39 | | - cp -R "$BIN_DIR/vst3/$PLUGIN_NAME.vst3" "$DEB_ROOT/usr/lib/vst3/" |
40 | | -fi |
41 | | - |
42 | | -if [ -d "$BIN_DIR/lv2/$PLUGIN_NAME.lv2" ]; then |
43 | | - cp -R "$BIN_DIR/lv2/$PLUGIN_NAME.lv2" "$DEB_ROOT/usr/lib/lv2/" |
44 | | -fi |
45 | | - |
46 | | -# Copy wavetables and presets |
47 | | -cp -R "$ROOT_DIR/plugin/Resources/WavetablesFLAC/"* "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Wavetables/" |
48 | | -cp -R "$ROOT_DIR/plugin/Resources/Presets/"* "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Presets/" |
49 | | - |
50 | | -# Calculate installed size (in KB) |
51 | | -INSTALLED_SIZE=$(du -sk "$DEB_ROOT" | cut -f1) |
52 | | - |
53 | | -# Create control file |
54 | | -cat > "$DEB_ROOT/DEBIAN/control" << EOF |
55 | | -Package: $PACKAGE_NAME |
56 | | -Version: $VERSION |
57 | | -Section: sound |
58 | | -Priority: optional |
59 | | -Architecture: $ARCH |
60 | | -Installed-Size: $INSTALLED_SIZE |
61 | | -Maintainer: SocaLabs <[email protected]> |
62 | | -Homepage: https://socalabs.com |
63 | | -Description: Wavetable Synthesizer Plugin |
64 | | - Wavetable is a powerful wavetable synthesizer available as |
65 | | - VST2, VST3, and LV2 plugins for Linux. |
66 | | - . |
67 | | - Features: |
68 | | - - Dual wavetable oscillators |
69 | | - - Multiple filter types |
70 | | - - Extensive modulation matrix |
71 | | - - Built-in effects |
72 | | -EOF |
73 | | - |
74 | | -# Create postinst script |
75 | | -cat > "$DEB_ROOT/DEBIAN/postinst" << 'EOF' |
76 | | -#!/bin/bash |
77 | | -# Update plugin caches if available |
78 | | -if command -v update-mime-database &> /dev/null; then |
79 | | - update-mime-database /usr/share/mime || true |
80 | | -fi |
81 | | -exit 0 |
82 | | -EOF |
83 | | -chmod 755 "$DEB_ROOT/DEBIAN/postinst" |
84 | | - |
85 | | -# Set permissions |
86 | | -find "$DEB_ROOT" -type d -exec chmod 755 {} \; |
87 | | -find "$DEB_ROOT/usr" -type f -exec chmod 644 {} \; |
88 | | -find "$DEB_ROOT/usr/lib" -name "*.so" -exec chmod 755 {} \; |
89 | | - |
90 | | -# Build the package |
91 | | -DEB_FILE="$OUTPUT_DIR/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb" |
92 | | -dpkg-deb --build "$DEB_ROOT" "$DEB_FILE" |
93 | | - |
94 | | -# Cleanup |
95 | | -rm -rf "$DEB_ROOT" |
96 | | - |
97 | | -echo "Done! Package created: $DEB_FILE" |
| 1 | +#!/bin/bash |
| 2 | +# Build Linux .deb package for Wavetable |
| 3 | + |
| 4 | +set -e |
| 5 | + |
| 6 | +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 7 | +ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" |
| 8 | +VERSION="${VERSION:-1.0.0}" |
| 9 | +PLUGIN_NAME="Wavetable" |
| 10 | +PACKAGE_NAME="wavetable" |
| 11 | +ARCH="amd64" |
| 12 | + |
| 13 | +# Paths |
| 14 | +BIN_DIR="$ROOT_DIR/ci/bin" |
| 15 | +DEB_ROOT="$SCRIPT_DIR/deb_root" |
| 16 | +OUTPUT_DIR="$SCRIPT_DIR/output" |
| 17 | + |
| 18 | +echo "Building Wavetable $VERSION .deb package..." |
| 19 | + |
| 20 | +# Clean and create directories |
| 21 | +rm -rf "$DEB_ROOT" "$OUTPUT_DIR" |
| 22 | +mkdir -p "$DEB_ROOT" |
| 23 | +mkdir -p "$OUTPUT_DIR" |
| 24 | + |
| 25 | +# Create package structure |
| 26 | +mkdir -p "$DEB_ROOT/DEBIAN" |
| 27 | +mkdir -p "$DEB_ROOT/usr/lib/vst" |
| 28 | +mkdir -p "$DEB_ROOT/usr/lib/vst3" |
| 29 | +mkdir -p "$DEB_ROOT/usr/lib/lv2" |
| 30 | +mkdir -p "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Wavetables" |
| 31 | +mkdir -p "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Presets" |
| 32 | + |
| 33 | +# Copy plugins |
| 34 | +if [ -f "$BIN_DIR/vst/$PLUGIN_NAME.so" ]; then |
| 35 | + cp "$BIN_DIR/vst/$PLUGIN_NAME.so" "$DEB_ROOT/usr/lib/vst/" |
| 36 | +fi |
| 37 | + |
| 38 | +if [ -d "$BIN_DIR/vst3/$PLUGIN_NAME.vst3" ]; then |
| 39 | + cp -R "$BIN_DIR/vst3/$PLUGIN_NAME.vst3" "$DEB_ROOT/usr/lib/vst3/" |
| 40 | +fi |
| 41 | + |
| 42 | +if [ -d "$BIN_DIR/lv2/$PLUGIN_NAME.lv2" ]; then |
| 43 | + cp -R "$BIN_DIR/lv2/$PLUGIN_NAME.lv2" "$DEB_ROOT/usr/lib/lv2/" |
| 44 | +fi |
| 45 | + |
| 46 | +# Copy wavetables and presets |
| 47 | +cp -R "$ROOT_DIR/plugin/Resources/WavetablesFLAC/"* "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Wavetables/" |
| 48 | +cp -R "$ROOT_DIR/plugin/Resources/Presets/"* "$DEB_ROOT/usr/share/SocaLabs/Wavetable/Presets/" |
| 49 | + |
| 50 | +# Calculate installed size (in KB) |
| 51 | +INSTALLED_SIZE=$(du -sk "$DEB_ROOT" | cut -f1) |
| 52 | + |
| 53 | +# Create control file |
| 54 | +cat > "$DEB_ROOT/DEBIAN/control" << EOF |
| 55 | +Package: $PACKAGE_NAME |
| 56 | +Version: $VERSION |
| 57 | +Section: sound |
| 58 | +Priority: optional |
| 59 | +Architecture: $ARCH |
| 60 | +Installed-Size: $INSTALLED_SIZE |
| 61 | +Maintainer: SocaLabs <[email protected]> |
| 62 | +Homepage: https://socalabs.com |
| 63 | +Description: Wavetable Synthesizer Plugin |
| 64 | + Wavetable is a powerful wavetable synthesizer available as |
| 65 | + VST2, VST3, and LV2 plugins for Linux. |
| 66 | + . |
| 67 | + Features: |
| 68 | + - Dual wavetable oscillators |
| 69 | + - Multiple filter types |
| 70 | + - Extensive modulation matrix |
| 71 | + - Built-in effects |
| 72 | +EOF |
| 73 | + |
| 74 | +# Create postinst script |
| 75 | +cat > "$DEB_ROOT/DEBIAN/postinst" << 'EOF' |
| 76 | +#!/bin/bash |
| 77 | +# Update plugin caches if available |
| 78 | +if command -v update-mime-database &> /dev/null; then |
| 79 | + update-mime-database /usr/share/mime || true |
| 80 | +fi |
| 81 | +exit 0 |
| 82 | +EOF |
| 83 | +chmod 755 "$DEB_ROOT/DEBIAN/postinst" |
| 84 | + |
| 85 | +# Set permissions |
| 86 | +find "$DEB_ROOT" -type d -exec chmod 755 {} \; |
| 87 | +find "$DEB_ROOT/usr" -type f -exec chmod 644 {} \; |
| 88 | +find "$DEB_ROOT/usr/lib" -name "*.so" -exec chmod 755 {} \; |
| 89 | + |
| 90 | +# Build the package |
| 91 | +DEB_FILE="$OUTPUT_DIR/${PACKAGE_NAME}_${VERSION}_${ARCH}.deb" |
| 92 | +dpkg-deb --build "$DEB_ROOT" "$DEB_FILE" |
| 93 | + |
| 94 | +# Cleanup |
| 95 | +rm -rf "$DEB_ROOT" |
| 96 | + |
| 97 | +echo "Done! Package created: $DEB_FILE" |
0 commit comments