Compare commits

...

2 commits

Author SHA1 Message Date
luc
6e769464cf meson.build: update
Added new version that aligns with mkinitfs, added zlevis-mkinitfs
script.
2025-10-28 21:52:20 +01:00
luc
9ae590e097 src: add 2025-10-28 21:51:40 +01:00
3 changed files with 124 additions and 5 deletions

View file

@ -1,18 +1,20 @@
# Project definition # Project definition
project('zlevis-mkinitfs', license: 'GPL-2.0-only') project('zlevis-mkinitfs', license: 'GPL-2.0-only', version: '3.12')
# Define mkinitfs features and data dir # Define bin, mkinitfs features and data dir
bin_dir = join_paths(get_option('prefix'), get_option('bindir'))
features_dir = '/etc/mkinitfs/features.d/' features_dir = '/etc/mkinitfs/features.d/'
data_dir = '/usr/share/mkinitfs/' data_dir = '/usr/share/zlevis-mkinitfs/'
# Define features and data list # Define features and data list
features = [] features = []
data = [] data = []
# Define subdir with features and subdir with data # Define subdir with src, subdir with features and subdir with data
subdir('src')
subdir('features') subdir('features')
subdir('data') subdir('data')
# Install features in features dir and data in data dir # Install features in features dir and data in data dir
install_data(features, install_dir: features_dir) install_data(features, install_dir: features_dir)
install_data(data, install_dir: data_dir) install_data(data, install_dir: data_dir)

14
src/meson.build Normal file
View file

@ -0,0 +1,14 @@
# Find the script
script = find_program(meson.current_source_dir(), 'zlevis-mkinitfs.in')
# Test the script
test('zlevis-mkinitfs.in', script, args: '--summary')
# Configure script
configure_file(
input: 'zlevis-mkinitfs.in',
output: 'zlevis-mkinitfs',
configuration: {'VERSION': meson.project_version()},
install: true,
install_dir: bin_dir
)

103
src/zlevis-mkinitfs.in Executable file
View file

@ -0,0 +1,103 @@
#!/bin/sh
# Exit immediately if a command exits with a non-zero status
set -e
# Summary of the functionality of zlevis-mkinitfs
summary="A tool that implements zlevis into mkinitfs"
# Version of zlevis-mkinitfs
version="@VERSION@"
# Display summary
if [ "$1" = "--summary" ]; then
echo "$summary"
exit 0
fi
# Display version
if [ "$1" = "--version" ]; then
echo "$version"
exit 0
fi
# Function to display usage information of zlevis-mkinitfs
info() {
exec >&2
echo "Usage: \"zlevis-mkinitfs {install|uninstall}\""
exit 2
}
# Define locations
loc_zlevis_mkinitfs="/usr/share/zlevis-mkinitfs"
loc_mkinitfs="/usr/share/mkinitfs"
loc_conf="/etc/mkinitfs/mkinitfs.conf"
# Function to install zlevis into mkinitfs
install() {
if [ -f "${loc_zlevis_mkinitfs}/initramfs-init" ]; then
continue
else
echo "cannot install zlevis-mkinitfs: zlevis-mkinitfs not present on system"
exit 1
fi
if [ -f "${loc_mkinitfs}/initramfs-init" ]; then
continue
else
echo "cannot install zlevis-mkinitfs: mkinitfs not present on system"
exit 1
fi
cp "${loc_mkinitfs}/initramfs-init" "${loc_mkinitfs}/initramfs-init.bak"
echo "cp: ${loc_mkinitfs}/initramfs-init to ${loc_mkinitfs}/initramfs-init.bak"
cp "${loc_zlevis_mkinitfs}/initramfs-init" "${loc_mkinitfs}/initramfs-init"
echo "cp: ${loc_zlevis_mkinitfs}/initramfs-init to ${loc_mkinitfs}/initramfs-init"
if grep -q "^features=" "$loc_conf"; then
if grep -q "^features=.*zlevis" "$loc_conf"; then
echo "zlevis is already in features"
exit 0
else
sed -i '/^features=/s/"$/ zlevis"/' "$loc_conf"
echo "zlevis has been added to features"
exit 0
fi
else
echo "partially installed zlevis-mkinitfs: mkinitfs features does not exist"
exit 1
fi
}
# Function to uninstall zlevis from mkinitfs
uninstall() {
if [ -f "${loc_mkinitfs}/initramfs-init.bak" ]; then
mv "${loc_mkinitfs}/initramfs-init.bak" "${loc_mkinitfs}/initramfs-init"
echo "mv: ${loc_mkinitfs}/initramfs-init.bak to ${loc_mkinitfs}/initramfs-init"
if grep -q "^features=" "$loc_conf"; then
if grep -q "^features=.*zlevis" "$loc_conf"; then
sed -i '/^features=/s/ zlevis//g' "${loc_conf}"
echo "zlevis has been removed from features"
exit 0
else
echo "cannot remove zlevis from features: zlevis not present"
exit 2
fi
else
echo "uninstalled zlevis-mkinitfs: mkinitfs features does not exist"
exit 2
fi
else
echo "cannot uninstall zlevis-mkinitfs: zlevis-mkinitfs not installed"
exit 2
fi
}
# Determine the argument path and execute the relevant function
case "$1" in
"install") install;;
"uninstall") uninstall;;
*) info;;
esac