88env :
99 CARGO_TERM_COLOR : always
1010 RUST_BACKTRACE : 1
11+ # Centralized maintainer information - can be overridden in repository secrets
12+ OSVM_MAINTAINER_NAME : " OpenSVM"
13+ OSVM_MAINTAINER_EMAIL :
" [email protected] " 1114
1215jobs :
1316 build :
@@ -80,59 +83,28 @@ jobs:
8083 - name : Set up Debian packaging environment
8184 run : |
8285 sudo apt-get update
83- sudo apt-get install -y debhelper dh-make devscripts
86+ sudo apt-get install -y debhelper dh-make devscripts dpkg-dev
8487
8588 - name : Create Debian package
8689 run : |
8790 # Get version by stripping 'v' prefix from tag
8891 VERSION=$(echo ${{ github.ref_name }} | sed 's/^v//')
89- WORKDIR=$(pwd)
90- PKG=osvm-$VERSION
91- TARBALL="osvm_${VERSION}.orig.tar.gz"
92- TEMP_TARBALL="temp_${TARBALL}" # Use temporary name to avoid same-file error
93- # Clean up any old stuff
94- rm -rf "$PKG"
95- rm -f "$TARBALL" "$TEMP_TARBALL"
96- # Prepare source dir
97- mkdir -p "$PKG"
98- cp -r src Cargo.toml Cargo.lock README.md LICENSE "$PKG/"
99- # Pack source tarball with temporary name first
100- tar czvf "$TEMP_TARBALL" "$PKG"
101- # Ensure the tarball exists
102- if [ ! -f "$TEMP_TARBALL" ]; then
103- echo "Error: $TEMP_TARBALL not found!"
104- exit 1
105- fi
106- # Move into the package dir
107- cd "$PKG"
108- # Set environment variables for dh_make to use correct maintainer info
109- export DEBFULLNAME="OpenSVM"
110- export DEBEMAIL="[email protected] " 111- # Run dh_make using the temporary tarball - this avoids same-file error
112- # dh_make will copy the temp tarball to the correct orig.tar.gz location
113- dh_make -y -s -c apache -e [email protected] -f "../$TEMP_TARBALL" 114- # Fix maintainer name in generated files
115- sed -i 's/Maintainer: unknown/Maintainer: OpenSVM/' debian/control
116- sed -i 's/ -- unknown/ -- OpenSVM/' debian/changelog
117- # Build the .deb package from within the package directory where debian/ folder was created
118- dpkg-buildpackage -us -uc
119- # Move back to the working dir
120- cd "$WORKDIR"
121- # Clean up temporary tarball
122- rm -f "$TEMP_TARBALL"
92+ cd packaging/debian
93+ ./build-deb.sh "$VERSION"
12394
12495 - name : Upload Debian package
12596 uses : actions/upload-artifact@v4
12697 with :
12798 name : osvm-deb-package
128- path : . /*.deb
99+ path : packaging/debian/debian-packages /*.deb
129100
130101 - name : Deploy to APT repository
131102 run : |
132- # This is a placeholder for the actual APT repository deployment
103+ # TODO: Implement actual APT repository deployment
104+ # This is a placeholder for the actual APR repository deployment
133105 # In a real scenario, you would use a service like Launchpad or a custom APT repository
134106 echo "Deploying to APT repository..."
135- # Example: scp .. /osvm_*.deb user@apt-repo:/path/to/repo/
107+ # Example: scp debian-packages /osvm_*.deb user@apt-repo:/path/to/repo/
136108 # Then update the repository index
137109
138110 deploy-termux :
@@ -151,58 +123,22 @@ jobs:
151123 - name : Make binary executable
152124 run : chmod +x ./osvm
153125
126+ - name : Set up Termux packaging environment
127+ run : |
128+ sudo apt-get update
129+ sudo apt-get install -y dpkg-dev
130+
154131 - name : Create Termux package structure
155132 run : |
156133 VERSION=$(echo ${{ github.ref_name }} | sed 's/^v//')
157- PACKAGE_NAME="osvm"
158- PACKAGE_DIR="${PACKAGE_NAME}_${VERSION}_aarch64"
159-
160- # Create package directory structure
161- mkdir -p "$PACKAGE_DIR"/data/data/com.termux/files/usr/bin
162- mkdir -p "$PACKAGE_DIR"/control
163-
164- # Copy binary
165- cp ./osvm "$PACKAGE_DIR"/data/data/com.termux/files/usr/bin/
166-
167- # Create control file
168- cat > "$PACKAGE_DIR"/control/control << EOF
169- Package: $PACKAGE_NAME
170- Version: $VERSION
171- Architecture: aarch64
172- Maintainer: OpenSVM <[email protected] > 173- Description: OpenSVM CLI tool for managing SVM nodes and deployments
174- Homepage: https://github.com/${{ github.repository }}
175- Section: utils
176- Priority: optional
177- Depends: rust
178- EOF
179-
180- # Create prerm script to handle cleanup
181- cat > "$PACKAGE_DIR"/control/prerm << 'EOF'
182- #!/bin/sh
183- # Clean up any cached data
184- rm -rf "$HOME/.osvm" 2>/dev/null || true
185- EOF
186- chmod +x "$PACKAGE_DIR"/control/prerm
187-
188- # Create postinst script
189- cat > "$PACKAGE_DIR"/control/postinst << 'EOF'
190- #!/bin/sh
191- # Ensure binary is executable
192- chmod +x "$PREFIX/bin/osvm" 2>/dev/null || true
193- echo "OpenSVM CLI installed successfully!"
194- echo "Run 'osvm --help' to get started."
195- EOF
196- chmod +x "$PACKAGE_DIR"/control/postinst
197-
198- # Create the .deb package for Termux
199- dpkg-deb --build "$PACKAGE_DIR"
134+ cd packaging/termux
135+ ./build-termux.sh "$VERSION" aarch64
200136
201137 - name : Upload Termux package
202138 uses : actions/upload-artifact@v4
203139 with :
204140 name : osvm-termux-package
205- path : . /*.deb
141+ path : packaging/termux /*.deb
206142
207143 deploy-archlinux :
208144 name : Deploy ArchLinux Package
@@ -214,86 +150,26 @@ jobs:
214150 - name : Create ArchLinux PKGBUILD
215151 run : |
216152 VERSION=$(echo ${{ github.ref_name }} | sed 's/^v//')
217- SHA=$(curl -sL https://github.com/${{ github.repository }}/archive/${{ github.ref_name }}.tar.gz | shasum -a 256 | cut -d ' ' -f 1)
218-
219- cat > PKGBUILD << EOF
220- # Maintainer: OpenSVM <[email protected] > 221- pkgname=osvm
222- pkgver=${VERSION}
223- pkgrel=1
224- pkgdesc="OpenSVM CLI tool for managing SVM nodes and deployments"
225- arch=('x86_64' 'aarch64')
226- url="https://github.com/${{ github.repository }}"
227- license=('MIT')
228- depends=('glibc')
229- makedepends=('rust' 'cargo' 'pkg-config' 'openssl' 'libudev0-shim')
230- source=("\${pkgname}-\${pkgver}.tar.gz::https://github.com/${{ github.repository }}/archive/${{ github.ref_name }}.tar.gz")
231- sha256sums=('${SHA}')
232-
233- prepare() {
234- cd "\${pkgname}-cli-\${pkgver}"
235- }
236-
237- build() {
238- cd "\${pkgname}-cli-\${pkgver}"
239- export RUSTUP_TOOLCHAIN=stable
240- export CARGO_TARGET_DIR=target
241- cargo build --release --locked
242- }
243-
244- check() {
245- cd "\${pkgname}-cli-\${pkgver}"
246- export RUSTUP_TOOLCHAIN=stable
247- # Skip tests that require network access or specific hardware
248- cargo test --release --locked || true
249- }
250-
251- package() {
252- cd "\${pkgname}-cli-\${pkgver}"
253- install -Dm0755 -t "\${pkgdir}/usr/bin/" "target/release/\${pkgname}"
254- install -Dm0644 LICENSE "\${pkgdir}/usr/share/licenses/\${pkgname}/LICENSE"
255- install -Dm0644 README.md "\${pkgdir}/usr/share/doc/\${pkgname}/README.md"
256- }
257- EOF
258-
259- # Create .SRCINFO file for AUR
260- cat > .SRCINFO << EOF
261- pkgbase = osvm
262- pkgdesc = OpenSVM CLI tool for managing SVM nodes and deployments
263- pkgver = ${VERSION}
264- pkgrel = 1
265- url = https://github.com/${{ github.repository }}
266- arch = x86_64
267- arch = aarch64
268- license = MIT
269- makedepends = rust
270- makedepends = cargo
271- makedepends = pkg-config
272- makedepends = openssl
273- makedepends = libudev0-shim
274- depends = glibc
275- source = osvm-${VERSION}.tar.gz::https://github.com/${{ github.repository }}/archive/${{ github.ref_name }}.tar.gz
276- sha256sums = ${SHA}
277-
278- pkgname = osvm
279- EOF
153+ cd packaging/archlinux
154+ ./build-arch.sh "$VERSION"
280155
281156 - name : Upload ArchLinux package files
282157 uses : actions/upload-artifact@v4
283158 with :
284159 name : osvm-archlinux-package
285160 path : |
286- . /PKGBUILD
287- . /.SRCINFO
161+ packaging/archlinux /PKGBUILD
162+ packaging/archlinux /.SRCINFO
288163
289164 - name : Submit to AUR (placeholder)
290165 run : |
166+ # TODO: Implement actual AUR submission
291167 # This is a placeholder for the actual AUR submission
292168 # In a real scenario, you would clone the AUR repository and update the PKGBUILD
293169 echo "Submitting to AUR..."
294170 # Example steps:
295171 # git clone ssh://[email protected] /osvm.git 296- # cp PKGBUILD .SRCINFO osvm/
172+ # cp packaging/archlinux/ PKGBUILD packaging/archlinux/ .SRCINFO osvm/
297173 # cd osvm && git add . && git commit -m "Update to ${VERSION}" && git push
298174
299175 deploy-homebrew :
@@ -340,6 +216,7 @@ jobs:
340216
341217 - name : Submit to Homebrew
342218 run : |
219+ # TODO: Implement actual Homebrew submission
343220 # This is a placeholder for the actual Homebrew submission
344221 # In a real scenario, you would create a PR to homebrew-core or a custom tap
345222 echo "Submitting to Homebrew..."
0 commit comments