diff options
author | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-05-03 18:01:49 +0200 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2014-05-03 18:08:57 +0200 |
commit | 782e9eb1882ab5d5792ca0e4ae5f652550bc72aa (patch) | |
tree | 90eee22b7d242afba420f29f6acff1bda9abf8db | |
parent | e161c4f94b75b26f115f6953cdc67a543cf89ec2 (diff) |
Fix parsing of array overrides
If a depends (makedepends, checkdepends, optdepends, conflicts,
provides, replaces, license, groups, source) line appears in a package
section, it replaces the corresponding array from the pkgbase section.
If there is a single "depends = " line in the package section, the
depends array of that package is considered empty.
This partly reverts the behavior introduced in commit 137a9ae (Fix
parsing of array overrides, 2014-05-03).
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r-- | web/html/pkgsubmit.php | 2 | ||||
-rw-r--r-- | web/lib/aur.inc.php | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php index 180a0b2..7b7023b 100644 --- a/web/html/pkgsubmit.php +++ b/web/html/pkgsubmit.php @@ -135,7 +135,7 @@ if ($uid): $pkginfo = array(); $section_info = array(); foreach (explode("\n", $srcinfo_raw) as $line) { - $line = trim($line); + $line = ltrim($line); if (empty($line) || $line[0] == '#') { continue; } diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php index b41b720..ff46455 100644 --- a/web/lib/aur.inc.php +++ b/web/lib/aur.inc.php @@ -577,9 +577,12 @@ function latest_pkgs($numpkgs) { * Merge pkgbase and package options * * Merges entries of the first and the second array. If any key appears in both - * arrays and the corresponding value is an array itself, the arrays are - * merged. If a key appears in both arrays and the corresponding value is not - * an array, the second value replaces the first one. + * arrays and the corresponding value in the second array is either a non-array + * type or a non-empty array, the value from the second array replaces the + * value from the first array. If the value from the second array is an array + * containing a single empty string, the value in the resulting array becomes + * an empty array instead. If the value in the second array is empty, the + * resulting array contains the value from the first array. * * @param array $pkgbase_info Options from the pkgbase section * @param array $section_info Options from the package section @@ -590,7 +593,11 @@ function array_pkgbuild_merge($pkgbase_info, $section_info) { $pi = $pkgbase_info; foreach ($section_info as $opt_key => $opt_val) { if (is_array($opt_val)) { - $pi[$opt_key] += $opt_val; + if ($opt_val == array('')) { + $pi[$opt_key] = array(); + } elseif (count($opt_val) > 0) { + $pi[$opt_key] = $opt_val; + } } else { $pi[$opt_key] = $opt_val; } |