From 443e4291f8eca1dcafe92cecc897bdb67ca353a0 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Mon, 24 Jun 2019 17:43:20 -0400 Subject: ob_get_binary_packages(), *ob_*_binary_parameter(): Improve "clean" naming And fix unbound variables in ob_get_binary_parameter() and _ob_set_binary_parameter(). Fixes: FAIL: tests/lib/ob_get_binary_parameter ======================================= 1..5 [...]/lib/libopkbuild.shso.2: line 568: pkg: unbound variable ok 1 - ob_init_package() PASS: tests/lib/ob_get_binary_parameter.sh 1 - ob_init_package() not ok 2 - foo Architecture FAIL: tests/lib/ob_get_binary_parameter.sh 2 - foo Architecture # Failed test 'foo Architecture' # got: '' [...]/lib/libopkbuild.shso.2: line 568: pkg: unbound variable # expected: 'any-linux-any' not ok 3 - foo Platform FAIL: tests/lib/ob_get_binary_parameter.sh 3 - foo Platform # Failed test 'foo Platform' # got: '' [...]/lib/libopkbuild.shso.2: line 568: pkg: unbound variable # expected: 'all' not ok 4 - bar Architecture FAIL: tests/lib/ob_get_binary_parameter.sh 4 - bar Architecture # Failed test 'bar Architecture' # got: '' [...]/lib/libopkbuild.shso.2: line 568: pkg: unbound variable # expected: 'all' not ok 5 - bar Platform FAIL: tests/lib/ob_get_binary_parameter.sh 5 - bar Platform # Failed test 'bar Platform' # got: '' # expected: 'all' --- diff --git a/NEWS b/NEWS index efb7d19..57f3322 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,14 @@ Utilities: libopkbuild: + * Binary package parameters are stored internally now with fewer + conflicts. Specifically, binary package names such as + "libncurses.6" and "libncurses++.6" no longer conflict, because the + non-alphanumeric parts of the names are different lengths. + * An unbound variable that could cause ob_get_binary_parameter() to + fail has been fixed. The utilities called ob_get_binary_parameter() + after setting a variable of the same name, so the bug went + unnoticed. * ob_get_binary_parameter() is now covered by the test suite. Build system: diff --git a/lib/package.sh b/lib/package.sh index 6501ba2..27ea8cb 100644 --- a/lib/package.sh +++ b/lib/package.sh @@ -125,10 +125,8 @@ ob_get_binary_packages() fi # Make sure the "clean" name is unique. - pkg_clean="$({ tr 'a-z' 'A-Z' | tr -dC 'A-Z0-9';} <<-EOF - "${pkg}" - EOF - )" + pkg_clean="$(printf '%s' "${pkg}" | tr 'a-z' 'A-Z' | \ + tr -C 'A-Z0-9' '_')" case "${pkgs_clean}" in *" ${pkg_clean} "*) _ob_warn_msg 'duplicate_clean_binary_name' \ "${pkg_clean}" @@ -211,10 +209,8 @@ ob_get_binary_parameter() fi # Convert package name to its uppercase "clean" form. - package="$({ tr 'a-z' 'A-Z' | tr -dC 'A-Z0-9'; } <<-EOF - "${pkg}" - EOF - )" + package="$(printf '%s' "${package}" | tr 'a-z' 'A-Z' | \ + tr -C 'A-Z0-9' '_')" # Convert field name to uppercase and validate. case "${name}" in *[!A-Za-z0-9-]* | '') @@ -323,10 +319,8 @@ _ob_set_binary_parameter() fi # Convert package name to its uppercase "clean" form. - package="$({ tr 'a-z' 'A-Z' | tr -dC 'A-Z0-9'; } <<-EOF - "${pkg}" - EOF - )" + package="$(printf '%s' "${package}" | tr 'a-z' 'A-Z' | \ + tr -C 'A-Z0-9' '_')" # Convert field name to uppercase and validate. case "${name}" in *[!A-Za-z0-9-]* | '') -- cgit v0.9.1