Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update axolotl_presage for Debian packaging #1061

Merged
merged 15 commits into from
Jul 1, 2023
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
Loading