Skip to content

Commit fc84330

Browse files
authored
Merge pull request #255 from openSVM/copilot/fix-b91fb720-2000-4bec-8ed0-35a4ef70431d
Fix critical security and reliability issues in multi-platform packaging system
2 parents 945bdb0 + 708d8f5 commit fc84330

File tree

10 files changed

+223
-761
lines changed

10 files changed

+223
-761
lines changed

.gitattributes

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Git attributes for OSVM CLI project
2+
# Ensures clean git archive exports by excluding unnecessary files
3+
4+
# Exclude development and CI files from archives
5+
.github/ export-ignore
6+
.git* export-ignore
7+
.devcontainer/ export-ignore
8+
.dockerignore export-ignore
9+
.cline_rules export-ignore
10+
*.tmp export-ignore
11+
target/ export-ignore
12+
node_modules/ export-ignore
13+
14+
# Exclude test and development files
15+
test-deployment.sh export-ignore
16+
comprehensive_test.sh export-ignore
17+
basic_test.sh export-ignore
18+
validate_full_history.sh export-ignore
19+
tunnel-dashboard.py export-ignore
20+
stderr.txt export-ignore
21+
stdout.txt export-ignore
22+
23+
# Exclude audit and documentation build artifacts
24+
audit_reports/ export-ignore
25+
osvm_audit_report_*.html export-ignore
26+
docs.html export-ignore
27+
index.html export-ignore
28+
29+
# Exclude vendor directory if present
30+
vendor/ export-ignore
31+
32+
# Ensure proper line endings
33+
* text=auto
34+
*.sh text eol=lf
35+
*.rs text eol=lf
36+
*.toml text eol=lf
37+
*.md text eol=lf
38+
*.yml text eol=lf
39+
*.yaml text eol=lf

.github/workflows/release.yml

Lines changed: 25 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
env:
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

1215
jobs:
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..."

.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,15 @@ sonic-*.log
6868
eclipse-*.log
6969
osvm-*.log
7070
audit_reports/
71+
72+
# Packaging artifacts and test files
73+
*.deb
74+
*.tar.gz
75+
osvm-*/
76+
osvm_*/
77+
temp_*.tar.gz
78+
debian-packages/
79+
packaging/archlinux/.SRCINFO
80+
packaging/termux/osvm_*
81+
packaging/debian/osvm-*
82+
packaging/debian/debian-packages/

0 commit comments

Comments
 (0)