On 28/05/10 00:35, Cedric Staniewski wrote:
Move the absolute filename detection to a new function to reduce code
duplication.
This patch also fixes the --allsource option that did not include remote
source files if they reside in $startdir instead of $SRCDEST.
Signed-off-by: Cedric Staniewski<[email protected]>
---
Changes:
- renamed error_source_file_not_found to missing_source_exit
- removed differentiation in download_sources: now it prints "Found %s" instead
of "Found %s in build dir" and "Using cached copy of %s"
I have very minor comments below. Suggested naming comments are
debatable...
scripts/makepkg.sh.in | 99 ++++++++++++++++++++++++-------------------------
1 files changed, 48 insertions(+), 51 deletions(-)
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 8c0da8b..00167f7 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -179,6 +179,33 @@ trap 'trap_exit "$(gettext "An unknown error has occurred.
Exiting...")"' ERR
# 1) "filename::http://path/to/file"
# 2) "http://path/to/file"
+# Return the absolute filename of a source entry
+#
+# This function accepts a source entry or the already extracted filename of a
+# source entry as input
+get_absolute_filename() {
get_filepath()?
+ local file="$(get_filename "$1")"
+
+ if [[ -f "$startdir/$file" ]] ; then
+ file="$startdir/$file"
+ else
I'd prefer and "elif" here as it seems cleaner.
+ if [[ -f "$SRCDEST/$file" ]] ; then
+ file="$SRCDEST/$file"
+ else
+ return 1
+ fi
+ fi
+
+ echo "$file"
+}
+
+# Print 'source not found' error message and exit makepkg
+missing_source_exit() {
I do not really think a three line function needs documented. Also, I
think "missing_source_file" sounds a better name especially when you
read it after a "||" as it is used.
+ error "$(gettext "Unable to find source file %s.")" "$(get_filename
"$1")"
+ plain "$(gettext "Aborting...")"
+ exit 1 # $E_MISSING_FILE
+}
+
# extract the filename from a source entry
get_filename() {
# if a filename is specified, use it
<snip>
@@ -645,25 +653,17 @@ extract_sources() {
msg "$(gettext "Extracting Sources...")"
local netfile
for netfile in "${sour...@]}"; do
- file=$(get_filename "$netfile")
+ absfile="$(get_absolute_filename "$netfile")" || missing_source_exit
"$netfile"
+ file=${absfile##*/}
if in_array "$file" ${noextra...@]}; then
#skip source files in the noextract=() array
# these are marked explicitly to NOT be extracted
continue
fi
- if [[ ! -f $file ]] ; then
- if [[ ! -f $SRCDEST/$file ]] ; then
- error "$(gettext "Unable to find source file %s for
extraction.")" "$file"
- plain "$(gettext "Aborting...")"
- exit 1
- else
- file="$SRCDEST/$file"
- fi
- fi
# fix flyspray #6246
- local file_type=$(file -bizL "$file")
+ local file_type=$(file -bizL "$absfile")
I do not think that this change is not needed.
local ext=${file##*.}
local cmd=''
case "$file_type" in
@@ -693,10 +693,10 @@ extract_sources() {
local ret=0
msg2 "$(gettext "Extracting %s with %s")" "$file" "$cmd"
if [[ $cmd = bsdtar ]]; then
- $cmd -xf "$file" || ret=$?
+ $cmd -xf "$absfile" || ret=$?
else
rm -f "${file%.*}"
- $cmd -dcf "$file"> "${file%.*}" || ret=$?
+ $cmd -dcf "$absfile"> "${file%.*}" || ret=$?
or these two. We have set up symlinks in $srcdir so we should just use them
fi
if (( ret )); then
error "$(gettext "Failed to extract %s")" "$file"
@@ -1097,13 +1097,10 @@ create_srcpackage() {
local netfile
for netfile in "${sour...@]}"; do
- local file=$(get_filename "$netfile")
- if [[ -f $netfile ]]; then
- msg2 "$(gettext "Adding %s...")" "$netfile"
- ln -s "${startdir}/$netfile" "${srclinks}/${pkgbase}"
- elif (( SOURCEONLY == 2 ))&& [[ -f $SRCDEST/$file ]]; then
- msg2 "$(gettext "Adding %s...")" "$file"
- ln -s "$SRCDEST/$file" "${srclinks}/${pkgbase}/"
+ if [[ -f $netfile ]] || (( SOURCEONLY == 2 )); then
+ local file=$(get_absolute_filename "$netfile") ||
missing_source_exit "$netfile"
+ msg2 "$(gettext "Adding %s...")" "${file##*/}"
+ ln -s "$file" "${srclinks}/${pkgbase}"
fi
done
While this works, I would prefer to keep the distinction between local
and downloaded files. So something like:
local file
for file in "${sour...@]}"; do
if [[ -f $file ]]; then
msg2 "$(gettext "Adding %s...")" "$file"
ln -s "${startdir}/$file" "${srclinks}/${pkgbase}"
elif (( SOURCEONLY == 2 )); then
local absfile=$(get_absolute_filename "$file") ||
missing_source_exit "$file"
msg2 "$(gettext "Adding %s...")" "${absfile##*/}"
ln -s "$absfile" "${srclinks}/${pkgbase}"
fi
done
Note the renaming of "netfile" as the name makes little sense anymore...
With those comments addressed, this patch is good to go.
I would like this in the 3.4 release if possible since it is a bug fix.
Given it has string changes, that would mean it would need resubmitted
soon. I apologize for rushing you after taking so long to comment, but
I can take care of the changes if you are busy at the moment.
Allan