web: generate correct pages for submodules.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 22 Nov 2012 00:32:21 +0000 (11:02 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 22 Nov 2012 00:32:21 +0000 (11:02 +1030)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Makefile-web
tools/list_files.sh [new file with mode: 0755]
web/static-configuration
web/staticall.php
web/staticmoduleinfo.php

index 78954661da0b1091329c01f20ce72a6ba8e826b4..20a1a2f3e70c039d121282ddc7fa379124487ae8 100644 (file)
@@ -1,9 +1,9 @@
 # This can be overridden on cmdline to generate pages elsewhere.
 WEBDIR=/home/rusty/www/html/ccan
 
-ALL_PAGES=$(patsubst %, $(WEBDIR)/info/%.html, $(MODS_NORMAL) $(MODS_EXTERNAL))
-DIRECT_TARBALLS=$(patsubst %, $(WEBDIR)/tarballs/%.tar.bz2, $(MODS_NORMAL) $(MODS_EXTERNAL))
-DEPEND_TARBALLS=$(patsubst %, $(WEBDIR)/tarballs/with-deps/%.tar.bz2, $(MODS_NORMAL) $(MODS_EXTERNAL))
+ALL_PAGES=$(patsubst %, $(WEBDIR)/info/%.html, $(MODS))
+DIRECT_TARBALLS=$(patsubst %, $(WEBDIR)/tarballs/%.tar.bz2, $(MODS))
+DEPEND_TARBALLS=$(patsubst %, $(WEBDIR)/tarballs/with-deps/%.tar.bz2, $(MODS))
 WEB_SUBDIRS=$(WEBDIR)/tarballs $(WEBDIR)/junkcode $(WEBDIR)/tarballs/with-deps $(WEBDIR)/info
 JUNKDIRS=$(wildcard junkcode/*)
 JUNKPAGES=$(JUNKDIRS:%=$(WEBDIR)/%.html)
@@ -40,7 +40,7 @@ $(WEBDIR)/ccan.tar.bz2: config.h Makefile Makefile-ccan $(shell git ls-files cca
 $(ALL_PAGES): tools/doc_extract web/staticmoduleinfo.php
 
 $(WEBDIR)/list.html: web/staticall.php tools/doc_extract $(DIRECT_TARBALLS) $(DEPEND_TARBALLS) $(WEBDIR)/ccan.tar.bz2 $(JUNKBALLS)
-       php5 web/staticall.php ccan/ junkcode/ $(WEBDIR) > $@
+       php5 web/staticall.php ccan/ junkcode/ $(WEBDIR) $(MODS) > $@
 
 $(WEBDIR)/upload.html: web/staticupload.php
        php5 web/staticupload.php > $@
@@ -62,13 +62,16 @@ $(WEBDIR)/ccan.jpg: web/ccan.jpg
        cp $< $@
 
 $(WEBDIR)/info/%.html: $(WEBDIR)/tarballs/%.tar.bz2 $(WEBDIR)/tarballs/with-deps/%.tar.bz2
-       URLPREFIX=../ php5 web/staticmoduleinfo.php `pwd`/ccan/$* > $@
+       @mkdir -p `dirname $@`
+       URLPREFIX=../`echo $* | tr -dc '/' | sed s',/,../,g'` php5 web/staticmoduleinfo.php `pwd`/ccan/$* $* > $@
 
 $(WEBDIR)/tarballs/%.tar.bz2: ccan/%/_info clean-tree
-       tar -c -j -f $@ $$(git ls-files ccan/$*) $$(git ls-files ccan/$* | xargs -n1 -r readlink | sed -n 's,^../../,,p' | sort -u)
+       @mkdir -p `dirname $@`
+       FILES=$$(tools/list_files.sh ccan/$*) && tar -c -j -f $@ $$FILES $$(echo $$FILES | xargs -n1 -r readlink | sed 's,^\(../\)*,,' | sort -u)
 
 $(WEBDIR)/tarballs/with-deps/%.tar.bz2: ccan/%/_info tools/ccan_depends clean-tree
-       tar -c -j -f $@ $$(git ls-files $$(echo ccan/$* $$(tools/ccan_depends ccan/$*) ) ) $$(git ls-files $$(echo ccan/$* $$(tools/ccan_depends ccan/$*) ) | xargs -n1 -r readlink | sed -n 's,^../../,,p' | sort -u)
+       @mkdir -p `dirname $@`
+       FILES=$$(tools/list_files.sh ccan/$* $$(tools/ccan_depends ccan/$*) ) && tar -c -j -f $@ $$FILES $$(echo $$FILES | xargs -n1 -r readlink | sed 's,^\(../\)*,,' | sort -u)
 
 distclean: distclean-web
 
diff --git a/tools/list_files.sh b/tools/list_files.sh
new file mode 100755 (executable)
index 0000000..b1125e3
--- /dev/null
@@ -0,0 +1,22 @@
+#! /bin/sh
+# Script to list all files, for making tarballs.
+
+set -e
+if [ $# -eq 0 ]; then
+    echo Usage: list_files.sh '<ccandir>...' >&2
+    exit 1
+fi
+
+for d; do
+    # git ls-files recurses, but we want ignores correct :(
+    for f in `git ls-files $d | sed "s,^\($d/[^/]*\)/.*,\1," | uniq`; do
+        # Include subdirs, unless it's a separate module.
+       if [ -d "$f" ]; then
+           if [ ! -f "$f"/_info ]; then
+               $0 "$f"
+           fi
+       else
+           echo "$f"
+       fi
+    done
+done
index 163a93272f96df719bfd33ddd36eb6933257b0f5..6686380521e1cf89dcbfb0cf9d66bb5f02107fd1 100644 (file)
@@ -5,9 +5,6 @@ $tempfolder = "/home/ccan/upload-temp/";
 //location of upload script (for posting uploads)
 $uploadscript = "http://ccodearchive.net/uploader.php";
 
-//infofile
-$infofile = '/_info';
-
 //ccan admin
 $ccanadmin = "rusty@rustcorp.com.au";
 
index 1998e147718aa4667ac55f271952f14714edccde..e976406b3330a9082d20c5c5c69e38eca90869a9 100644 (file)
@@ -25,13 +25,7 @@ Or you can just download the <a href="ccan.tar.bz2">tarball of everything includ
 <th align="right">Download</th>
 
 <?php 
-$d = dir($argv[1]);
-$modules = array();
-while (false !== ($entry = $d->read())) {
-       if ($entry[0] != '.' && is_file($argv[1].$entry."/_info")) {
-               array_push($modules, $entry);
-       }
-}
+$modules = array_slice($argv, 4);
 sort($modules);
 
 foreach ($modules as $module) {
@@ -49,7 +43,6 @@ foreach ($modules as $module) {
        </tr>
        <?php
 }
-$d->close();
 ?>
 </table>
 
index 17c3454af0a40d8fbddf4188f8d3ffe6da598f1a..2174f7a598c8c78ef11bed1141010e46684a7791 100644 (file)
@@ -4,7 +4,7 @@ include('logo.html');
 include('menulist.html');
 include('static-configuration');
 $module_path=$argv[1];
-$module=basename($module_path);
+$module=$argv[2];
 $maintainer=extract_field('maintainer',$module_path);
 $author=extract_field('author',$module_path);
 $summary=extract_field('summary',$module_path);
@@ -15,6 +15,7 @@ $dependencies=htmlspecialchars(shell_exec('tools/ccan_depends --direct '.$module
 $extdepends=htmlspecialchars(shell_exec('tools/ccan_depends --compile --non-ccan '.$module_path));
 $licence=extract_field('licence',$module_path);
 $license=extract_field('license',$module_path);
+$url_prefix = getenv("URLPREFIX");
 ?>
 <table align="center" bgcolor="lightblue" width="70%" border="0" cellpadding="3" cellspacing="1">
 <tr align="center" bgcolor="FFFFCC">
@@ -22,8 +23,8 @@ $license=extract_field('license',$module_path);
 <a href="<?=$repo_base.$module?>">Browse Source</a>
 </td>
 <td>
-<a href="../<?=$tar_dir?>/with-deps/<?=$module?>.tar.bz2">Download</a>
-<a href="../<?=$tar_dir?>/<?=$module?>.tar.bz2">(without any required ccan dependencies)</a>
+<a href="<?=$url_prefix?><?=$tar_dir?>/with-deps/<?=$module?>.tar.bz2">Download</a>
+<a href="<?=$url_prefix?><?=$tar_dir?>/<?=$module?>.tar.bz2">(without any required ccan dependencies)</a>
 </tr>
 </table>