1
0
Fork 0

Init new repo

This commit is contained in:
gardouille 2023-09-20 08:23:12 +02:00
commit a15fa817ba
Signed by: gardouille
GPG Key ID: E759BAA22501AF32
5 changed files with 181 additions and 0 deletions

21
.gitignore vendored Normal file
View File

@ -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

View File

@ -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

49
build-deb.package.sh Executable file
View File

@ -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

30
build-in-container.sh Executable file
View File

@ -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

51
build.sh Executable file
View File

@ -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