commit a15fa817ba164c137c52afbe6f77643f28827219 Author: Gardouille Date: Wed Sep 20 08:23:12 2023 +0200 Init new repo diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f196ff6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# Rust stuff +target + +# Vagrant stuff +.vagrant +*.log + +# Compiled artifacts +# (see devtools/*-package-for-*.sh) +/eza-linux-x86_64 +/eza-linux-x86_64-*.zip +/eza-macos-x86_64 +/eza-macos-x86_64-*.zip +/MD5SUMS +/SHA1SUMS + +# Snap stuff +parts +prime +stage +*.snap diff --git a/build-deb-package-in-container.sh b/build-deb-package-in-container.sh new file mode 100755 index 0000000..31400e2 --- /dev/null +++ b/build-deb-package-in-container.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +set -eu + +TARGET="$(dirname "$0" | xargs realpath)" +IMAGE="debian:bookworm" + +while getopts "v:i:h" opt +do + case "$opt" in + i) + IMAGE="$OPTARG" + ;; + h) + echo "Usage: $0 [-i image]" + exit 0 + ;; + *) + exit 1 + ;; + esac +done + +docker run --rm \ + --name eza-build-$$ \ + -v "$TARGET:/target" \ + -w /target \ + --user root \ + "$IMAGE" \ + sh build-deb.package.sh diff --git a/build-deb.package.sh b/build-deb.package.sh new file mode 100755 index 0000000..56c7d4e --- /dev/null +++ b/build-deb.package.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +set -xeu + +DEBIAN_FRONTEND=noninteractive +TARGET="$PWD" + +export DEBIAN_FRONTEND + +dependencies() { + # Update system and install basic tools + apt-get update -yq && apt-get install -yq aptitude curl git wget + # Install dependencies for Eza .deb package + aptitude --quiet --assume-yes install gzip lintian pandoc + + # Install just dependency to build manpages + aptitude --quiet --assume-yes install gpg lsb-release + wget -qO - 'https://proget.makedeb.org/debian-feeds/prebuilt-mpr.pub' | gpg --dearmor | tee /usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg 1> /dev/null + echo "deb [arch=all,$(dpkg --print-architecture) signed-by=/usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg] https://proget.makedeb.org prebuilt-mpr $(lsb_release -cs)" | tee /etc/apt/sources.list.d/prebuilt-mpr.list + apt-get update -yq + aptitude --quiet --assume-yes install just +} + +get_eza_sources() { + # Clone Eza repo + cd "$(mktemp -d)" + git clone https://github.com/eza-community/eza + cd eza +} + +build_eza_deb_package() { + # Build + ./devtools/deb-package.sh +} + +copy() { + TARGET_UID="$(stat --printf %u "$TARGET")" + TARGET_GID="$(stat --printf %g "$TARGET")" + install -o "$TARGET_UID" -g "$TARGET_GID" -t "$TARGET/target" eza_*.deb +} + +main() { + dependencies + get_eza_sources + build_eza_deb_package + copy +} + +main diff --git a/build-in-container.sh b/build-in-container.sh new file mode 100755 index 0000000..489c41b --- /dev/null +++ b/build-in-container.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +set -eu + +TARGET="$(dirname "$0" | xargs realpath)" +IMAGE="debian:bookworm" + +while getopts "v:i:h" opt +do + case "$opt" in + i) + IMAGE="$OPTARG" + ;; + h) + echo "Usage: $0 [-i image]" + exit 0 + ;; + *) + exit 1 + ;; + esac +done + +docker run --rm \ + --name eza-build-$$ \ + -v "$TARGET:/target" \ + -w /target \ + --user root \ + "$IMAGE" \ + sh build.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..d64e339 --- /dev/null +++ b/build.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -xeu + +DEBIAN_FRONTEND=noninteractive +TARGET="$PWD" + +export DEBIAN_FRONTEND + +dependencies() { + # Update system and install basic tools + apt-get update -yq && apt-get install -yq aptitude curl git wget + # Install dependencies for Eza + aptitude --quiet --assume-yes install gcc libgit2-dev +} + +install_rust() { + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-host x86_64-unknown-linux-gnu --default-toolchain nightly + . ~/.cargo/env +} + +get_eza_sources() { + # Clone Eza repo + cd "$(mktemp -d)" + git clone https://github.com/eza-community/eza + cd eza +} + +build_eza() { + # Build + cargo build --release + + # Test + cargo test +} + +copy() { + TARGET_UID="$(stat --printf %u "$TARGET")" + TARGET_GID="$(stat --printf %g "$TARGET")" + install -o "$TARGET_UID" -g "$TARGET_GID" -t "$TARGET/target" target/release/eza +} + +main() { + dependencies + install_rust + get_eza_sources + build_eza + copy +} + +main