summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fleischer <archlinux@cryptocrack.de>2014-07-23 10:48:48 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2014-07-23 10:48:48 +0200
commit9048030da7e724801e33e61b5b6a49bcea7cb698 (patch)
tree4b19d93c9b9aa9033d937c79961ef270204f4f6f
parentc36f0e885af6f6a34c3f59a64af7b4f23eaf25ad (diff)
Drop support for source packages without .AURINFO
Disallow uploading source tarballs that do not contain .AURINFO. Also, drop the PKGBUILD parser which is no longer needed. Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--web/html/pkgsubmit.php30
-rw-r--r--web/lib/pkgbuild-parser.inc.php139
2 files changed, 4 insertions, 165 deletions
diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php
index f07580b..7d89425 100644
--- a/web/html/pkgsubmit.php
+++ b/web/html/pkgsubmit.php
@@ -24,7 +24,6 @@ if ($uid):
# Track upload errors
$error = "";
- $ignore_missing_aurinfo = 0;
if (isset($_REQUEST['pkgsubmit'])) {
@@ -117,18 +116,14 @@ if ($uid):
$error = __("Error - source tarball may not contain files outside a directory.");
}
- if (empty($pkgbuild_raw)) {
- $pkgbuild_raw = '';
- if (!$error) {
- $error = __("Error trying to unpack upload - PKGBUILD does not exist.");
- }
+ if (empty($pkgbuild_raw) && !$error) {
+ $error = __("Error trying to unpack upload - PKGBUILD does not exist.");
}
if (empty($srcinfo_raw)) {
$srcinfo_raw = '';
- if (!$error && (!isset($_POST['ignore_missing_aurinfo']) || $_POST['ignore_missing_aurinfo'] != 1)) {
- $ignore_missing_aurinfo = 1;
- $error = __("The source package does not contain any meta data. Please use `mkaurball` to create AUR source packages. Support for source packages without .AURINFO entries will be removed in an upcoming release! You can resubmit the package if you want to proceed anyway.");
+ if (!$error) {
+ $error = __("The source package does not contain any meta data. Please use `mkaurball` to create AUR source packages.");
}
}
@@ -193,22 +188,6 @@ if ($uid):
} elseif (isset($section_info['pkgname'])) {
$pkginfo[] = array_pkgbuild_merge($pkgbase_info, $section_info);
}
- } else {
- /* Use data from the PKGBUILD parser (deprecated!) */
- include('pkgbuild-parser.inc.php');
-
- $pkgbase_info = $new_pkgbuild;
- if (!isset($pkgbase_info['pkgbase'])) {
- $pkgbase_info['pkgbase'] = $pkgbase_info['pkgname'];
- }
- foreach (array('license', 'groups', 'source', 'depends', 'makedepends', 'checkdepends', 'optdepends', 'conflicts', 'provides', 'replaces') as $array_opt) {
- if (empty($pkgbase_info[$array_opt])) {
- $pkgbase_info[$array_opt] = array();
- } else {
- $pkgbase_info[$array_opt] = explode(" ", $pkgbase_info[$array_opt]);
- }
- }
- $pkginfo[] = $pkgbase_info;
}
/* Validate package base name. */
@@ -437,7 +416,6 @@ html_header("Submit");
<fieldset>
<div>
<input type="hidden" name="pkgsubmit" value="1" />
- <input type="hidden" name="ignore_missing_aurinfo" value="<?= $ignore_missing_aurinfo ?>" />
<input type="hidden" name="token" value="<?= htmlspecialchars($_COOKIE['AURSID']) ?>" />
</div>
<p>
diff --git a/web/lib/pkgbuild-parser.inc.php b/web/lib/pkgbuild-parser.inc.php
deleted file mode 100644
index e112a55..0000000
--- a/web/lib/pkgbuild-parser.inc.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-if (!$error) {
- # process PKGBUILD - remove line concatenation
- #
- $pkgbuild = array();
- $line_no = 0;
- $lines = array();
- $continuation_line = 0;
- $current_line = "";
- $paren_depth = 0;
- foreach (explode("\n", $pkgbuild_raw) as $line) {
- $line = trim($line);
- # Remove comments
- $line = preg_replace('/\s*#.*/', '', $line);
-
- $char_counts = count_chars($line, 0);
- $paren_depth += $char_counts[ord('(')] - $char_counts[ord(')')];
- if (substr($line, strlen($line)-1) == "\\") {
- # continue appending onto existing line_no
- #
- $current_line .= substr($line, 0, strlen($line)-1);
- $continuation_line = 1;
- } elseif ($paren_depth > 0) {
- # assumed continuation
- # continue appending onto existing line_no
- #
- $current_line .= $line . " ";
- $continuation_line = 1;
- } else {
- # maybe the last line in a continuation, or a standalone line?
- #
- if ($continuation_line) {
- # append onto existing line_no
- #
- $current_line .= $line;
- $lines[$line_no] = $current_line;
- $current_line = "";
- } else {
- # it's own line_no
- #
- $lines[$line_no] = $line;
- }
- $continuation_line = 0;
- $line_no++;
- }
- }
-
- # Now process the lines and put any var=val lines into the
- # 'pkgbuild' array.
- while (list($k, $line) = each($lines)) {
- # Neutralize parameter substitution
- $line = preg_replace('/\${(\w+)#(\w*)}?/', '$1$2', $line);
-
- $lparts = Array();
- # Match variable assignment only.
- if (preg_match('/^\s*[_\w]+=[^=].*/', $line, $matches)) {
- $lparts = explode("=", $matches[0], 2);
- }
-
- if (!empty($lparts)) {
- # this is a variable/value pair, strip
- # out array parens and any quoting,
- # except in pkgdesc for pkgname or
- # pkgdesc, only remove start/end pairs
- # of " or '
- if ($lparts[0] == "pkgname" || $lparts[0] == "pkgdesc") {
- if ($lparts[1]{0} == '"' &&
- $lparts[1]{strlen($lparts[1])-1} == '"') {
- $pkgbuild[$lparts[0]] = substr($lparts[1], 1, -1);
- }
- elseif
- ($lparts[1]{0} == "'" &&
- $lparts[1]{strlen($lparts[1])-1} == "'") {
- $pkgbuild[$lparts[0]] = substr($lparts[1], 1, -1);
- } else {
- $pkgbuild[$lparts[0]] = $lparts[1];
- }
- } else {
- $pkgbuild[$lparts[0]] = str_replace(array("(",")","\"","'"), "",
- $lparts[1]);
- }
- }
- }
-
- # some error checking on PKGBUILD contents - just make sure each
- # variable has a value. This does not do any validity checking
- # on the values, or attempts to fix line continuation/wrapping.
- $req_vars = array("url", "pkgdesc", "license", "pkgrel", "pkgver", "arch", "pkgname");
- foreach ($req_vars as $var) {
- if (!array_key_exists($var, $pkgbuild)) {
- $error = __('Missing %s variable in PKGBUILD.', $var);
- break;
- }
- }
-}
-
-# Now, run through the pkgbuild array, and do "eval" and simple substituions.
-$new_pkgbuild = array();
-if (!$error) {
- while (list($k, $v) = each($pkgbuild)) {
- if (strpos($k,'eval ') !== false) {
- $k = preg_replace('/^eval[\s]*/', "", $k);
- ##"eval" replacements
- $pattern_eval = '/{\$({?)([\w]+)(}?)}/';
- while (preg_match($pattern_eval,$v,$regs)) {
- $pieces = explode(",",$pkgbuild["$regs[2]"]);
- ## nongreedy matching! - preserving the order of "eval"
- $pattern = '/([\S]*?){\$'.$regs[1].$regs[2].$regs[3].'}([\S]*)/';
- while (preg_match($pattern,$v,$regs_replace)) {
- $replacement = "";
- for ($i = 0; $i < sizeof($pieces); $i++) {
- $replacement .= $regs_replace[1].$pieces[$i].$regs_replace[2]." ";
- }
- $v=preg_replace($pattern, $replacement, $v, 1);
- }
- }
- }
-
- # Simple variable replacement
- $pattern_var = '/\$({?)([_\w]+)(}?)/';
- $offset = 0;
- while (preg_match($pattern_var, $v, $regs, PREG_OFFSET_CAPTURE, $offset)) {
- $var = $regs[2][0];
- $pos = $regs[0][1];
- $len = strlen($regs[0][0]);
-
- if (isset($new_pkgbuild[$var])) {
- $replacement = substr($new_pkgbuild[$var], strpos($new_pkgbuild[$var], " "));
- }
- else {
- $replacement = '';
- }
-
- $v = substr_replace($v, $replacement, $pos, $len);
- $offset = $pos + strlen($replacement);
- }
- $new_pkgbuild[$k] = $v;
- }
-}