Skip to content

Commit

Permalink
Merge pull request #1061 from nanu-c/axolotl_presage_deb_packaging_fix
Browse files Browse the repository at this point in the history
Update axolotl_presage for Debian packaging
  • Loading branch information
nanu-c committed Jul 1, 2023
2 parents 06311ed + 8fb82cd commit d4daab3
Show file tree
Hide file tree
Showing 10 changed files with 144 additions and 147 deletions.
23 changes: 0 additions & 23 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,10 +170,6 @@ jobs:
with:
toolchain: stable
targets: aarch64-unknown-linux-gnu
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}

- name: Rust cache
uses: swatinem/rust-cache@v2
Expand Down Expand Up @@ -207,29 +203,10 @@ jobs:
- name: Build
run: cargo build --release --target aarch64-unknown-linux-gnu --features tauri

- name: Install tauri-cli
run: cargo install tauri-cli

- name: Install vite
run: npm install -g vite

- name: Download dependencies
run: npm --prefix ./axolotl-web ci --loglevel verbose

- name: Build deb package
run: cargo tauri build -b deb --target aarch64-unknown-linux-gnu --features tauri

- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: build-axolotl-linux-arm64
path: target/aarch64-unknown-linux-gnu/release/axolotl
retention-days: 1

- name: Upload deb package
uses: actions/upload-artifact@v3
with:
name: build-axolotl-linux-arm64-deb
path: target/aarch64-unknown-linux-gnu/release/bundle/deb/*.deb
retention-days: 1
86 changes: 53 additions & 33 deletions .github/workflows/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,66 +84,86 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Set up arm64 packaging environment
- name: Install tools
run: |
sudo apt-get update && sudo apt-get install -y ca-certificates curl debmake
- name: Install tauri arm64 dependencies
run: |
sudo apt update
sudo dpkg --add-architecture arm64
sudo apt install -y debmake debhelper gcc-aarch64-linux-gnu
sudo sed -i '/^deb \[/! s/^deb /deb [arch=amd64] /' /etc/apt/sources.list
echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy main multiverse universe" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-security main multiverse universe" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-backports main multiverse universe" | sudo tee -a /etc/apt/sources.list
echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-updates main multiverse universe" | sudo tee -a /etc/apt/sources.list
sudo apt-get update && sudo apt-get install -y --no-install-recommends cmake libgtk-3-dev:arm64 libwebkit2gtk-4.1-dev:arm64 librsvg2-dev:arm64 libayatana-appindicator3-dev:arm64 libssl-dev:arm64 libjavascriptcoregtk-4.1-dev:arm64
- name: Rust setup
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: aarch64-unknown-linux-gnu

- name: Rust cache
uses: swatinem/rust-cache@v2

- name: Setup C compiler, linker and pkgconfig
run: |
sudo apt-get install -y g++ g++-aarch64-linux-gnu
echo "HOST_CC=gcc" >> $GITHUB_ENV
echo "CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++" >> $GITHUB_ENV
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig" >> $GITHUB_ENV
echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV
- name: Check out code
uses: actions/checkout@v3

- name: Download axolotl, axolotl-web and build artifacts
- name: Download build artifacts arm64
uses: actions/download-artifact@v3
# id: download-axolotl-arm64
with:
name: build-axolotl-linux-arm64
path: build-artifacts
path: target/aarch64-unknown-linux-gnu/release/axolotl

- name: Install cargo-deb
run: cargo install cargo-deb --no-default-features

- name: Get git tag version
run: |
git fetch --all --tags
echo "TAG=$(git tag | tail --lines=1)" >> $GITHUB_ENV
- name: Set package version
- name: Set release version
run: |
echo "RELEASE_VERSION=$(echo ${{ env.TAG }} | sed 's/v//')" >> $GITHUB_ENV
- name: Prebuild package Debian arm64
run: |
wget https://github.com/nanu-c/axolotl/archive/v${{ env.RELEASE_VERSION }}.tar.gz --output-document=$GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}.tar.gz
mkdir --parents $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/axolotl
cp --recursive $GITHUB_WORKSPACE/build-artifacts/* $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/axolotl/
cp --recursive $GITHUB_WORKSPACE/target/aarch64-unknown-linux-gnu/release/axolotl/* $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/axolotl/
cp $GITHUB_WORKSPACE/deb/LICENSE $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/LICENSE
cd $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }} && debmake --yes --email [email protected] --fullname "Arno Nuehm" --monoarch
mkdir --parents $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/usr/share/icons/hicolor/128x128/apps
mkdir --parents $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/usr/share/applications
mkdir --parents $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/usr/bin
mkdir --parents $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/etc/profile.d
cp $GITHUB_WORKSPACE/README.md $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/README.Debian
cp $GITHUB_WORKSPACE/deb/axolotl.png $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/usr/share/icons/hicolor/128x128/apps/axolotl.png
cp $GITHUB_WORKSPACE/deb/axolotl.desktop $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/usr/share/applications/
cp $GITHUB_WORKSPACE/deb/axolotl.sh $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/etc/profile.d/
cp $GITHUB_WORKSPACE/deb/axolotl.install $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/
cp $GITHUB_WORKSPACE/deb/postinst $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/
cp $GITHUB_WORKSPACE/deb/control $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/control
cp $GITHUB_WORKSPACE/deb/rules $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/rules
mv $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/axolotl/axolotl $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/usr/bin/
sed -i '3d;4d' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
awk -i inplace 'NR == 3 {print " * See upstream changelog below."} {print}' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
echo >> $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
cat $GITHUB_WORKSPACE/docs/CHANGELOG.md >> $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
sed -i 's/<preferred name and address to reach the upstream project>/Aaron <[email protected]>/' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/copyright
sed -i 's/<url:\/\/example.com>/https:\/\/github.com\/nanu-c\/axolotl/' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/copyright
cp $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog $GITHUB_WORKSPACE/deb/
cp $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/copyright $GITHUB_WORKSPACE/deb/
- name: Build package Debian arm64
run: |
#rm $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/compat
sudo ln -s /usr/lib/x86_64-linux-gnu/libfakeroot/libfakeroot-sysv.so /usr/aarch64-linux-gnu/lib/
sed -i '4d' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
sed -e '/Initial/ {' -e 'r $GITHUB_WORKSPACE/docs/CHANGELOG.md' -e 'd' -e '}' -i $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
sed -i '3,4d' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
sed -i 's/*/ */g' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/changelog
sed -i 's/<preferred name and address to reach the upstream project>/[email protected]/' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/copyright
sed -i 's/<url:\/\/example.com>/https:\/\/github.com\/nanu-c\/axolotl/' $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }}/debian/copyright
cd $GITHUB_WORKSPACE/axolotl-${{ env.RELEASE_VERSION }} && debuild -i -us -uc -b -aarm64
run: cargo deb --target=aarch64-unknown-linux-gnu --no-build

- name: Upload the built Debian package artifact (arm64)
- name: Upload package artifact Debian arm64
uses: actions/upload-artifact@v3
with:
name: Axolotl-Debian-arm64
path: axolotl_*_arm64.deb
name: Axolotl-Debian-arm64-package
path: target/aarch64-unknown-linux-gnu/debian/axolotl_*_arm64.deb
retention-days: 1
24 changes: 23 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
[package]
name = "axolotl"
version = "0.1.0"
version = "2.0.0"
edition = "2021"
description = """\
This is a cross-platform Signal client."""
license = "GPL-3"

[source.crates-io]
registry = "git://github.com/rust-lang/crates.io-index.git"
Expand Down Expand Up @@ -53,3 +56,22 @@ ut = ["dep:dbus"]
[[example]]
name = "dump_db"
path = "examples/dump/dump_db.rs"


[package.metadata.deb]
maintainer = "Arno Nuehm <[email protected]>"
copyright = "2023 Aaron <[email protected]>"
license-file = ["deb/copyright", "0"]
depends = "$auto"
extended-description = """\
Axolotl is built with Rust and has a Vue frontend that runs via tauri."""
revision = "1"
section = "net"
priority = "optional"
assets = [
["target/aarch64-unknown-linux-gnu/release/axolotl/axolotl", "usr/bin/", "755"],
["README.md", "usr/share/doc/axolotl/README", "644"],
["deb/axolotl.png", "usr/share/icons/hicolor/128x128/apps/axolotl.png", "644"],
["deb/axolotl.desktop", "usr/share/applications/", "644"],
]
changelog = "deb/changelog"
Loading

0 comments on commit d4daab3

Please sign in to comment.