From b70dcb9f2d21f73731f135aa95854f19c8de947a Mon Sep 17 00:00:00 2001 From: Yamashita Yuu Date: Thu, 26 Dec 2013 16:31:43 +0900 Subject: [PATCH] Add `list_patches()` to sort patches by their names --- plugins/python-build/bin/python-build | 42 ++++++++++++++++++--------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index ae7242b3..7a8783aa 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -163,31 +163,47 @@ install_package_using() { apply_patches() { local package_name="$1" - # Support PYTHON_PATCH_PATH, PYTHON_PATCH_OPTS, etc. + # Support PYTHON_PATCH, PYTHON_PATCH_OPTS, etc. local package_var_name="$(capitalize "${package_name%%-*}")" local PACKAGE_PATCH="${package_var_name}_PATCH" - local PACKAGE_PATCH_PATH="${package_var_name}_PATCH_PATH" local PACKAGE_PATCH_OPTS="${package_var_name}_PATCH_OPTS" if [ -z "${PATCH_OPTS+defined}" ] && [ -z "${!PACKAGE_PATCH_OPTS+defined}" ]; then local PATCH_OPTS="-p0" fi - local patch_path="${!PACKAGE_PATCH_PATH:-${PYTHON_BUILD_PATCH_PATH}/${package_name}}" - # path may be given in relative from working directory - [ -e "${patch_path}" ] || patch_path="${CWD}/${patch_path}" - - # FIXME: patches should be sorted in their names local patch - for patch in "${patch_path}"/*; do - if [ -f "$patch" ]; then - echo "Applying ${patch##*/} to ${package_name}..." >&2 - { ${!PACKAGE_PATCH:-patch} $PATCH_OPTS ${!PACKAGE_PATCH_OPTS} < "$patch" - } >&4 2>&1 - fi + for patch in $(list_patches "${package_name}"); do + echo "Applying ${patch##*/} to ${package_name}..." >&2 + { ${!PACKAGE_PATCH:-patch} $PATCH_OPTS ${!PACKAGE_PATCH_OPTS} < "$patch" + } >&4 2>&1 done } +list_patches() { + local package_name="$1" + + # Support PYTHON_PATCH_PATH, etc. + local package_var_name="$(capitalize "${package_name%%-*}")" + local PACKAGE_PATCH_PATH="${package_var_name}_PATCH_PATH" + + if [ "${!PACKAGE_PATCH_PATH+defined}" ]; then + # patch path may be given in relative from working directory + if [[ "${!PACKAGE_PATCH_PATH}" != /* ]]; then + local patch_path="${CWD}/${!PACKAGE_PATCH_PATH}" + else + local patch_path="${!PACKAGE_PATCH_PATH}" + fi + else + local patch_path="${PYTHON_BUILD_PATCH_PATH}/${package_name}" + fi + + { for patch in "${patch_path}"/*; do + [ -f "${patch}" ] && echo "${patch}" + done + } | sort +} + make_package() { local package_name="$1" shift