Compare commits
2 commits
4c08915c56
...
6e769464cf
| Author | SHA1 | Date | |
|---|---|---|---|
| 6e769464cf | |||
| 9ae590e097 |
3 changed files with 124 additions and 5 deletions
12
meson.build
12
meson.build
|
|
@ -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
14
src/meson.build
Normal 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
103
src/zlevis-mkinitfs.in
Executable 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue