On Thu, Jul 28, 2011 at 01:59:07PM -0500, Dan McGee wrote: > This implements the following scheme: > > * /packages/cower/ --> /packages/co/cower/ > * /packages/j/ --> /packages/j/j/ > * /packages/zqy/ --> /packages/zq/y/
This should be fixed, as I mentioned before :) > > We take up to the first two characters of each package name as a > intermediate subdirectory, and then the full package name lives > underneath that. > > Why, you ask? Well because earlier today the AUR hit 32,000 entries in > the unsupported/ directory, making new package uploads impossible. While > some might argue we shouldn't have so many damn packages in the repos, > we should be able to handle this case. > > Why two characters instead of one? Our two biggest two-char groups, 'pe' > and 'py', both start with 'p', and have nearly 2000 packages each. Go > Python and Perl. > > Still needed is a "move the existing data" script, as well as a set of > rewrite rules for those wishing to preserve backward compatible URLs for > any helper programs doing the wrong thing and relying on them. > > Signed-off-by: Dan McGee <[email protected]> > --- > scripts/cleanup | 24 ++++++++++++++++-------- > web/html/pkgsubmit.php | 2 +- > web/lib/aurjson.class.php | 2 +- > web/template/pkg_details.php | 2 +- > 4 files changed, 19 insertions(+), 11 deletions(-) > > diff --git a/scripts/cleanup b/scripts/cleanup > index f287350..813d577 100755 > --- a/scripts/cleanup > +++ b/scripts/cleanup > @@ -22,16 +22,24 @@ include("pkgfuncs.inc.php"); > > $count = 0; > > -$files = scandir(INCOMING_DIR); > -foreach ($files as $pkgname) { > - if ($pkgname == '.' || $pkgname == '..') { > +$buckets = scandir(INCOMING_DIR); > +foreach ($buckets as $bucket) { > + $bucketpath = INCOMING_DIR . $bucket; > + if ($bucket == '.' || $bucket == '..' || !is_dir($bucketpath)) { > continue; > } > - $fullpath = INCOMING_DIR . $pkgname; > - if (!package_exists($pkgname) && is_dir($fullpath)) { > - echo 'Removing ' . $fullpath . "\n"; > - rm_tree($fullpath); > - $count++; > + $files = scandir(INCOMING_DIR . $bucket); > + foreach ($files as $pkgname) { > + if ($pkgname == '.' || $pkgname == '..') { > + continue; > + } > + $fullpath = INCOMING_DIR . $bucket . "/" . $pkgname; > + echo $fullpath . "\n"; > + if (!package_exists($pkgname) && is_dir($fullpath)) { > + echo 'Removing ' . $fullpath . "\n"; > + #rm_tree($fullpath); Any reason you did comment this out here? > + $count++; > + } > } > } > > diff --git a/web/html/pkgsubmit.php b/web/html/pkgsubmit.php > index fd51c7e..9637dcd 100644 > --- a/web/html/pkgsubmit.php > +++ b/web/html/pkgsubmit.php > @@ -256,7 +256,7 @@ if ($uid): > } > > if (isset($pkg_name)) { > - $incoming_pkgdir = INCOMING_DIR . $pkg_name; > + $incoming_pkgdir = INCOMING_DIR . substr($pkg_name, 0, > 2) . "/" . $pkg_name; This won't work. You need to patch the mkdir() invocation below and enable "$recursive": ---- if (!@mkdir($incoming_pkgdir, 0777, true)) { ---- > } > > if (!$error) { > diff --git a/web/lib/aurjson.class.php b/web/lib/aurjson.class.php > index 5d15b89..277c824 100644 > --- a/web/lib/aurjson.class.php > +++ b/web/lib/aurjson.class.php > @@ -125,7 +125,7 @@ class AurJSON { > $search_data = array(); > while ( $row = mysql_fetch_assoc($result) ) { > $name = $row['Name']; > - $row['URLPath'] = URL_DIR . $name . "/" . $name . ".tar.gz"; > + $row['URLPath'] = URL_DIR . substr($name, 0, 2) . "/" . > $name . "/" . $name . ".tar.gz"; > > if ($type == 'info') { > $search_data = $row; > diff --git a/web/template/pkg_details.php b/web/template/pkg_details.php > index 0658063..5239123 100644 > --- a/web/template/pkg_details.php > +++ b/web/template/pkg_details.php > @@ -90,7 +90,7 @@ $out_of_date_time = ($row["OutOfDateTS"] == 0) ? $msg : > gmdate("r", intval($row[ > > <p><span class='f3'> > <?php > - $urlpath = URL_DIR . $row['Name']; > + $urlpath = URL_DIR . substr($row['Name'], 0, 2) . "/" . > $row['Name']; > print "<a href='$urlpath/" . $row['Name'] . > ".tar.gz'>".__("Tarball")."</a> :: "; > print "<a > href='$urlpath/PKGBUILD'>".__("PKGBUILD")."</a></span>"; > > -- > 1.7.6
