rebar.eclass: Optionally provide alternate rebar config to alter
authorAmadeusz Żołnowski <aidecoe@aidecoe.name>
Thu, 26 May 2016 19:59:11 +0000 (20:59 +0100)
committerAmadeusz Żołnowski <aidecoe@gentoo.org>
Sun, 29 May 2016 09:23:21 +0000 (10:23 +0100)
Some packages have separate configs for build and tests. Build config is
always named 'rebar.config' and there seem to be no standard name for
tests config.

eclass/rebar.eclass
eclass/tests/rebar_fix_include_path.sh
eclass/tests/rebar_remove_deps.sh

index 9f3d9e22109ec3da26bfe1b84e00575223d12b22..c8a2cf47c29a11b6a814da43c0ce5aea369764c5 100644 (file)
@@ -93,17 +93,20 @@ erebar() {
 }
 
 # @FUNCTION: rebar_fix_include_path
-# @USAGE: <project_name>
+# @USAGE: <project_name> [<rebar_config>]
 # @DESCRIPTION:
 # Fix path in rebar.config to 'include' directory of dependant project/package,
 # so it points to installation in system Erlang lib rather than relative 'deps'
 # directory.
 #
+# <rebar_config> is optional. Default is 'rebar.config'.
+#
 # The function dies on failure.
 rebar_fix_include_path() {
        debug-print-function ${FUNCNAME} "${@}"
 
        local pn="$1"
+       local rebar_config="${2:-rebar.config}"
        local erl_libs="${EPREFIX}$(get_erl_libs)"
        local p
 
@@ -121,19 +124,24 @@ rebar_fix_include_path() {
        next;
 }
 1
-' rebar.config || die "failed to fix include paths in rebar.config for '${pn}'"
+' "${rebar_config}" || die "failed to fix include paths in ${rebar_config} for '${pn}'"
 }
 
 # @FUNCTION: rebar_remove_deps
+# @USAGE: [<rebar_config>]
 # @DESCRIPTION:
 # Remove dependencies list from rebar.config and deceive build rules that any
 # dependencies are already fetched and built. Otherwise rebar tries to fetch
 # dependencies and compile them.
 #
+# <rebar_config> is optional. Default is 'rebar.config'.
+#
 # The function dies on failure.
 rebar_remove_deps() {
        debug-print-function ${FUNCNAME} "${@}"
 
+       local rebar_config="${1:-rebar.config}"
+
        mkdir -p "${S}/deps" && :>"${S}/deps/.got" && :>"${S}/deps/.built" || die
        gawk -i inplace '
 /^{[[:space:]]*deps[[:space:]]*,/, /}[[:space:]]*\.$/ {
@@ -143,7 +151,7 @@ rebar_remove_deps() {
        next;
 }
 1
-' rebar.config || die "failed to remove deps from rebar.config"
+' "${rebar_config}" || die "failed to remove deps from ${rebar_config}"
 }
 
 # @FUNCTION: rebar_set_vsn
index 9047f8dcd225e4ad06cc20f7060f022fd92db094..c8ab178a705448c99dd3a32415e8ae059c47103c 100755 (executable)
@@ -77,6 +77,25 @@ test_typical_config() {
        [[ ${unit_rc}${diff_rc} = 00 ]]
 }
 
+test_typical_config_with_different_name() {
+       local diff_rc
+       local unit_rc
+
+       # Prepare
+       cd "${S}" || die
+       cp typical.config other.config || die
+
+       # Run unit
+       (rebar_fix_include_path foo other.config)
+       unit_rc=$?
+
+       # Test result
+       diff other.config typical.config.expected
+       diff_rc=$?
+
+       [[ ${unit_rc}${diff_rc} = 00 ]]
+}
+
 test_multiple_versions() {
        local diff_rc
        local unit_rc
@@ -144,6 +163,10 @@ tbegin "rebar_fix_include_path deals with typical config"
 test_typical_config
 tend $?
 
+tbegin "rebar_fix_include_path deals with typical config with different name"
+test_typical_config_with_different_name
+tend $?
+
 tbegin "rebar_fix_include_path fails on multiple versions of dependency"
 test_multiple_versions
 tend $?
index 05207a783cb4ff97b595757f1773a31e5e61f6e4..32351bff03cbdd01255ee52d39aca87476a8f4b7 100755 (executable)
@@ -67,6 +67,25 @@ test_typical_config() {
        [[ ${unit_rc}${diff_rc} = 00 ]]
 }
 
+test_typical_config_with_different_name() {
+       local diff_rc
+       local unit_rc
+
+       # Prepare
+       cd "${S}" || die
+       cp typical.config other.config || die
+
+       # Run unit
+       (rebar_remove_deps other.config)
+       unit_rc=$?
+
+       # Test result
+       diff other.config rebar.config.expected
+       diff_rc=$?
+
+       [[ ${unit_rc}${diff_rc} = 00 ]]
+}
+
 test_deps_in_one_line() {
        local diff_rc
        local unit_rc
@@ -92,6 +111,10 @@ tbegin "rebar_remove_deps deals with typical config"
 test_typical_config
 tend $?
 
+tbegin "rebar_remove_deps deals with typical config with different name"
+test_typical_config_with_different_name
+tend $?
+
 tbegin "rebar_remove_deps deals with all deps in one line"
 test_deps_in_one_line
 tend $?