Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/pkgapi
diff options
context:
space:
mode:
Diffstat (limited to 'pkgapi')
-rw-r--r--pkgapi/index.html5
-rw-r--r--pkgapi/pacman-i486.conf64
-rw-r--r--pkgapi/pacman-i686.conf64
-rw-r--r--pkgapi/pkginfo.php53
4 files changed, 186 insertions, 0 deletions
diff --git a/pkgapi/index.html b/pkgapi/index.html
new file mode 100644
index 0000000..aca92a7
--- /dev/null
+++ b/pkgapi/index.html
@@ -0,0 +1,5 @@
+<html>
+ <body>
+ This is the pkgapi for archlinux32 - query it <a href="/i486/core/gcc">like so.</a>
+ </bod>
+</html>
diff --git a/pkgapi/pacman-i486.conf b/pkgapi/pacman-i486.conf
new file mode 100644
index 0000000..3dee4f9
--- /dev/null
+++ b/pkgapi/pacman-i486.conf
@@ -0,0 +1,64 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = /
+DBPath = /var/lib/pacman-i486/
+CacheDir = /var/cache/pacman-i486/pkg/
+LogFile = /dev/null
+#GPGDir = /etc/pacman.d/gnupg/
+#HookDir = /etc/pacman.d/hooks/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+#UseDelta = 0.7
+Architecture = i486
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg =
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+#Color
+#TotalDownload
+CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+[staging]
+Include = /etc/pacman.d/mirrorlist32
+
+[community-staging]
+Include = /etc/pacman.d/mirrorlist32
+
+[testing]
+Include = /etc/pacman.d/mirrorlist32
+
+[community-testing]
+Include = /etc/pacman.d/mirrorlist32
+
+[core]
+Include = /etc/pacman.d/mirrorlist32
+
+[extra]
+Include = /etc/pacman.d/mirrorlist32
+
+[community]
+Include = /etc/pacman.d/mirrorlist32
diff --git a/pkgapi/pacman-i686.conf b/pkgapi/pacman-i686.conf
new file mode 100644
index 0000000..442b10e
--- /dev/null
+++ b/pkgapi/pacman-i686.conf
@@ -0,0 +1,64 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = /
+DBPath = /var/lib/pacman-i686/
+CacheDir = /var/cache/pacman-i686/pkg/
+LogFile = /dev/null
+#GPGDir = /etc/pacman.d/gnupg/
+#HookDir = /etc/pacman.d/hooks/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -L -C - -f -o %o %u
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+#UseDelta = 0.7
+Architecture = i686
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg =
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+#Color
+#TotalDownload
+CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+[staging]
+Include = /etc/pacman.d/mirrorlist32
+
+[community-staging]
+Include = /etc/pacman.d/mirrorlist32
+
+[testing]
+Include = /etc/pacman.d/mirrorlist32
+
+[community-testing]
+Include = /etc/pacman.d/mirrorlist32
+
+[core]
+Include = /etc/pacman.d/mirrorlist32
+
+[extra]
+Include = /etc/pacman.d/mirrorlist32
+
+[community]
+Include = /etc/pacman.d/mirrorlist32
diff --git a/pkgapi/pkginfo.php b/pkgapi/pkginfo.php
new file mode 100644
index 0000000..d9301ed
--- /dev/null
+++ b/pkgapi/pkginfo.php
@@ -0,0 +1,53 @@
+<?php
+require_once "../init.php";
+
+include BASE . "/lib/http.php";
+
+foreach (array('arch', 'repo', 'pkgname') as $must_have_key) {
+ if (!array_key_exists($must_have_key, $_GET))
+ throw_http_error(400, 'Malformed request', 'Key ' . $must_have_key . ' was not given.');
+ if (!preg_match('/^[-+_.a-zA-Z0-9]+$/', $_GET[$must_have_key]))
+ throw_http_error(400, 'Malformed request', 'Value for ' . $must_have_key . ' is invalid.');
+}
+
+if (($_GET['arch'] != 'i486') && ($_GET['arch'] != 'i686'))
+ throw_http_error(400, 'Malformed request', 'Architecture ' . $_GET['arch'] . ' is unkown.');
+
+$infos = trim(
+ shell_exec(
+ 'pacinfo' .
+ ' --config=' . BASE . '/pkgapi/pacman-' . $_GET['arch'] . '.conf ' .
+ $_GET['repo'] . '/' .
+ $_GET['pkgname'] .
+ ' | grep "^Build Date:"; ' .
+ 'pacinfo' .
+ ' --raw' .
+ ' --config=' . BASE . '/pkgapi/pacman-' . $_GET['arch'] . '.conf ' .
+ $_GET['repo'] . '/' .
+ $_GET['pkgname'] .
+ ' | grep -v "^Build Date:"'
+ )
+);
+
+if (!isset($infos))
+ throw_http_error(404, 'Package not found.');
+
+function parse_pacinfo_line($line) {
+ return preg_split('/: +/', $line, 2);
+}
+
+function extract_first($array) {
+ return $array[0];
+}
+
+$infos = explode("\n", $infos);
+$infos = array_map('parse_pacinfo_line', $infos);
+$merged_infos = array();
+foreach ($infos as $info)
+ $merged_infos = array_merge_recursive($merged_infos, array($info[0] => $info[1]));
+
+header ("Content-type: application/json");
+print json_encode(
+ $merged_infos,
+ JSON_UNESCAPED_SLASHES
+);