[aur-dev] [PATCH] Fix parsing of array overrides

Lukas Fleischer archlinux at cryptocrack.de
Sat May 3 12:11:36 EDT 2014


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 at cryptocrack.de>
---
This is supposed to replace patch 2/2 (Revert "Handle pkgbase array
overrides gracefully").

 web/html/pkgsubmit.php |  2 +-
 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;
 		}
-- 
1.9.2



More information about the aur-dev mailing list