From 457db1af9f697a6dff4189cb46031688c78a61dc Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 26 Jun 2011 19:09:24 -0400 Subject: functions: add missing 'command' before install Without this, we hit an infinte loop and crash when a legacy 'install' function in a hook is encountered. Thanks-to: Gerardo Exequiel Pozzi Signed-off-by: Dave Reisner --- functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions b/functions index ee6921c..8e3588a 100644 --- a/functions +++ b/functions @@ -221,7 +221,7 @@ _add_file() { [[ -e "$BUILDROOT$1" ]] && return $EEXIST (( QUIET )) || plain "adding file: %s" "$1" - install -Dm$3 "$2" "$BUILDROOT$1" + command install -Dm$3 "$2" "$BUILDROOT$1" } _add_dir() { -- cgit v1.2.3-24-g4f1b From f00e41b98d2d3a89e36763a4c613d16bbe6e216c Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 26 Jun 2011 19:11:20 -0400 Subject: functions: s/basedir/BASEDIR/ Thanks-to: Gerardo Exequiel Pozzi Signed-off-by: Dave Reisner --- functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions b/functions index 8e3588a..54442c8 100644 --- a/functions +++ b/functions @@ -278,9 +278,9 @@ add_binary() { if [[ ! -L $sodep ]]; then _add_file "$sodep" "$BASEDIR$sodep" "$(stat -c %a "$sodep")" else - resolved=$(readlink -e "$basedir$sodep") + resolved=$(readlink -e "$BASEDIR$sodep") dirname=${resolved%/*} - _add_dir "${dirname#$basedir}" 755 + _add_dir "${dirname#$BASEDIR}" 755 _add_symlink "$sodep" "${resolved#$BASEDIR}" _add_file "${resolved#$BASEDIR}" "$resolved" 755 fi -- cgit v1.2.3-24-g4f1b From 84f474bfc3ceedf9d34bde1df75734fcfcdca239 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 26 Jun 2011 19:28:18 -0400 Subject: functions: fix pathing issue with $BASEDIR Thanks-to: Gerardo Exequiel Pozzi Signed-off-by: Dave Reisner --- functions | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions b/functions index 54442c8..9c095bc 100644 --- a/functions +++ b/functions @@ -182,7 +182,7 @@ add_module() { # get module firmware while read -r -d '' fw; do if [[ -e "$BASEDIR/lib/firmware/$fw" ]]; then - add_file "$BASEDIR/lib/firmware/$fw" + add_file "/lib/firmware/$fw" fi done < <(kmodinfo -0F firmware "$module") @@ -193,7 +193,7 @@ add_module() { done ADDED_MODULES+=("${module//-/_}") - add_file "$path" || return + add_file "${path#$BASEDIR}" || return else error "module '$module' not found" return 1 @@ -265,7 +265,7 @@ add_binary() { mode=$(stat -c %a "$binary") # always add the binary itself - _add_file "${dest#$BASEDIR}" "${binary#$BASEDIR}" "$mode" + _add_file "${dest#$BASEDIR}" "$binary" "$mode" $LD_SO --verify "$binary" &>/dev/null || return # not a binary! -- cgit v1.2.3-24-g4f1b From 8cc35dc1822efd83d38472b1cd3bc78fe889565d Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 26 Jun 2011 20:04:44 -0400 Subject: install/base: use private API call to add config We can't let add_file get its hands on the config file, because we need to be sure that an absolute path is honored. As a side effect, ensure that $BASEDIR is appended to the config file during preset processing. Thanks-to: Gerardo Exequiel Pozzi Signed-off-by: Dave Reisner --- install/base | 4 +++- mkinitcpio | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/install/base b/install/base index d5fcef7..446167c 100644 --- a/install/base +++ b/install/base @@ -11,8 +11,10 @@ build() { add_file "/lib/initcpio/init_functions" "/init_functions" add_file "/lib/initcpio/init" "/init" - add_file "$CONFIG" "/config" add_file "/etc/modprobe.d/usb-load-ehci-first.conf" + + # private API call is required here + _add_file "/config" "$CONFIG" 644 } help() { diff --git a/mkinitcpio b/mkinitcpio index 7a30be0..5389aca 100755 --- a/mkinitcpio +++ b/mkinitcpio @@ -209,7 +209,7 @@ if [[ $PRESET ]]; then preset_config=${p}_config if [[ ${!preset_config:-$ALL_config} ]]; then - preset_cmd+=(-c "${!preset_config:-$ALL_config}") + preset_cmd+=(-c "$BASEDIR${!preset_config:-$ALL_config}") else warning "No configuration file specified. Skipping image '%s'" "$p" continue -- cgit v1.2.3-24-g4f1b From f09aff2cec29806356b800e1c13b711668b1fc26 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 26 Jun 2011 20:10:41 -0400 Subject: mkinitcpio: fix resolution issues with RTLD The _add_dir call is all wrong. The necessary paths are created by reversing the order of the _add_symlink and _add_file calls, as _add_file will take care of creating parent directories. Thanks-to: Gerardo Exequiel Pozzi Signed-off-by: Dave Reisner --- mkinitcpio | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mkinitcpio b/mkinitcpio index 5389aca..459c828 100755 --- a/mkinitcpio +++ b/mkinitcpio @@ -306,9 +306,8 @@ if (( ${#LD_SO[*]} != 1 )); then # uh oh... fi resolved=$(readlink -e "$LD_SO") -_add_dir "${resolved%/*}" 755 -_add_symlink "${LD_SO#$BASEDIR}" "${resolved#$BASEDIR}" -_add_file "${resolved#$BASEDIR}" "${resolved#$BASEDIR}" 755 +_add_file "${resolved#$BASEDIR}" "$resolved" 755 +_add_symlink "${LD_SO#$BASEDIR}" "$resolved" unset resolved for hook in ${HOOKS}; do -- cgit v1.2.3-24-g4f1b