mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Hosting platform for the Arch User Repository (AUR), a collection of packaging scripts created by the Arch Linux community
The majority of "real world" info requests [1] come in hefty batches. We would be better served to handle these in one request rather than multiple by allowing AUR clients to send multiple arguments. This enables things like this to work: http://aur.test/rpc.php?type=multiinfo&arg[]=cups-xerox&arg[]=cups-mc2430dl&arg[]=10673 Note to RPC users: unfortunately due to the asinine design of PHP, you unfortunately have to use the 'arg[]' syntax if you want more than one query argument, or you will only get the package satisfying the last arg you pass. [1] Rough data from April 11, 2011, with a total hit count of 1,109,163: 12 /login.php 13 /rpc.php?type=sarch 15 /rpc.php?type=msearch 16 /pingserver.php 16 /rpc.php 22 /logout.php 163 /passreset.php 335 /account.php 530 /pkgsubmit.php 916 /rss2.php 3838 /index.php 6752 /rss.php 9699 / 42478 /rpc.php?type=search 184737 /packages.php 681725 /rpc.php?type=info That means a whopping 61.5% of our requests were for info over the RPC interface; package pages are a distant second at only 16.7%. Lukas: Introduce "multiinfo" query instead of extending "info" (for the sake of backward compatibility). Signed-off-by: Dan McGee <dan@archlinux.org> Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de> |
||
---|---|---|
.tx | ||
po | ||
scripts | ||
support/schema | ||
web | ||
.gitignore | ||
AUTHORS | ||
COPYING | ||
HACKING | ||
README | ||
TODO | ||
TRANSLATING | ||
UPGRADING |
This is the finalized draft of the project requirements for the new Arch package submittal process. AUR (Arch User-community Repo). The sub-directories contain more specific implementation notes for each component of the project. Requirements: ------------- 1) User accounts (users, TUs) - Create account. (email address required) - Update account (change password/email address) - Log in/out 2) Search for packages (public) - needs knowledge of ALL pkgs (OfficalRepos/AUR/Unsupported). This should be easy enough if this site lives on the same machine as the current package database (dragon?), or is allowed to query the db. - Display official repo (current/extra) a package lives in. 3) Manual voting (requires user acct) - reset/clear all votes (for starting over, this can be added later if there is any demand for it) 4) Package Management - A package can be submitted by anyone (as long as they create an account with a valid email address on the web site). From there, a TU inspects the package and works with the submitter to resolve any bugs/issues. Once approved, the TU can place the package in the AUR. From there, if the package is popular enough (or deemed necessary), a developer can move the package from the AUR to extra/current/etc. A developer can also downgrade a package from extra/current/etc to the AUR. - The person that uploaded the new package can make changes to it before it has been added to the AUR. - TUs need to be able to purge packages in "Unsupported" if the package is no longer maintained and there is no interest in keeping it. - Packages in the AUR/Unsupported need some sort of 'flag out of date' support. - Interested users can download the package from "Unsupported" and build/install it by hand. - Provide a separate installation of flyspray for tracking bugs for packages living in the AUR. All bugs should be resolved in either flyspray (AUR/official) prior to a package being promoted/demoted. 5) Reports - package popularity by number of votes 6) Wiki Docs (UID/GID db, provides db, irc nicks/names TUs/devs) - Move the appropriate dev wiki pages to the new system's wiki area. The devs will just need to consult the UID/GID list from the new system site rather than our own wiki. 7) Submitting 'new' packages by users. Initially start with a simple web upload page where users submit a tgz containing the PKGBUILD, scriptlets, patches, etc. The script will unpack the tgz in an appropriate location and update the backend database to 'register' the pacakge. 8) TU package management - A TU adopts a package from "Unsupported" and that shows users and other TUs that the package is being reviewed. - When the TU is ready to move the package to the AUR, they use a custom utility/script that allows them to upload the pkg.tar.gz (web uploads are inadequate for this process). The upload utility/script has a server counterpart that performs TU authentication and updates the database. - A cronjob on the server can handle the new AUR package, update the database, and rebuild the AUR sync db, and send email notices to the TU about errors if any occur. - The TUs should also be able to demote a package from the AUR via the web interface. - TUs will use cvs/svn interface (just like devs) to pull down the PKGBUILD tree. This tree should reflect the same layout as extra for easier package migration. They make changes to their local copy, test, and then commit. They use the xfer utility to upload the binary package to the server. No shell access is required. Automated Voting Tool (similar to ArchStats client) ===================== Requirements: ------------- 1) Name of tool is 'pkgvote' 2) Requires registered account on web - email address not required 3) Casts 'yes' votes for all installed packages (except itself?) Implementation: --------------- A statically compiled C program that gathers the list of installed packages and casts the vote to the web site. Very similar to the way that ArchStats works now. When making the HTTP Post, it adds a custom HEADER that the PHP script(s) can detect to know that it is receiving a vote from a 'pkgvote' client. If the PHP script does not see the special HEADER, it assumes it is a web browser and gives the user HTML output. Once installed, the user edits the config file and supplies their username/password. If no username/password exists in the config file when it starts, it spits out an error message and exits.