Changeset 15522 in project
- Timestamp:
- 08/20/09 17:48:07 (10 years ago)
- bzr:base-revision:
- chust@web.de-20090818161810-onimypazkxt2bgbd
- bzr:committer:
- Thomas Chust <chust@web.de>
- bzr:file-ids:
.bzrignore bzrignore-20090807105757-7e2ie9t28vdpz67q-1
Makefile makefile-20090807105733-xckh9kh901i74p1k-1
demo.scm demo.scm-20090820155252-p2ti8ziw8jpygxh9-1
doc.scm doc.scm-20090807105733-xckh9kh901i74p1k-2
pandora-postgresql.scm pandorapostgresql.sc-20090808201827-2ehfdzdm1lijsubu-1
pandora.html pandora.html-20090807105733-xckh9kh901i74p1k-4
pandora.meta pandora.meta-20090807105733-xckh9kh901i74p1k-5
pandora.setup pandora.setup-20090807105733-xckh9kh901i74p1k-7
postgresql.import.scm postgresql.import.sc-20090820134928-zbnzjki945diu1z1-1
sqlite3.import.scm sqlite3.import.scm-20090820134928-zbnzjki945diu1z1-2- bzr:mapping-version:
- v4
- bzr:merge:
chust@web.de-20090820155626-pjnvvw5q9wd302a6- bzr:repository-uuid:
- fca3e652-9b03-0410-8d7b-ac86a6ce46c4
- bzr:revision-id:
- chust@web.de-20090820160449-h4henxyemdad6663
- bzr:revno:
- 4
- bzr:revprop:branch-nick:
- release/4/pandora/trunk
- bzr:root:
- release/4/pandora/trunk
- bzr:text-parents:
.bzrignore chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820155626-pjnvvw5q9wd302a6
Makefile chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820155626-pjnvvw5q9wd302a6
demo.scm chust@web.de-20090820155626-pjnvvw5q9wd302a6
doc.scm chust@web.de-20090818161810-onimypazkxt2bgbd chust@web.de-20090820155626-pjnvvw5q9wd302a6
pandora-postgresql.scm chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090819213455-0as44x8nbsbko228
pandora.html chust@web.de-20090818161810-onimypazkxt2bgbd chust@web.de-20090820155626-pjnvvw5q9wd302a6
pandora.meta chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820134931-98lgdka826cre64e
pandora.setup chust@web.de-20090816002930-twnw289tvuzwrlui chust@web.de-20090820134931-98lgdka826cre64e
postgresql.import.scm chust@web.de-20090820134931-98lgdka826cre64e
sqlite3.import.scm chust@web.de-20090820134931-98lgdka826cre64e- bzr:timestamp:
- 2009-08-20 18:04:49.141000032 +0200
- bzr:user-agent:
- bzr1.17+bzr-svn0.6.3
- svn:original-date:
- 2009-08-20T16:04:49.141000Z
- Location:
- release/4/pandora/trunk
- Files:
-
- 3 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
release/4/pandora/trunk/.bzrignore
r15500 r15522 3 3 pandora-sqlite3.import.scm 4 4 pandora-postgresql.import.scm 5 demo.html -
release/4/pandora/trunk/Makefile
r15500 r15522 5 5 CSI=csi 6 6 CSC=csc 7 CHICKEN-INSTALL=chicken-install 8 ENSCRIPT=enscript 7 9 TAR=tar 8 10 … … 16 18 .PHONY: all clean 17 19 18 all: $(NAME).egg $(NAME).so $(NAME)-sqlite3.so $(NAME)-postgresql.so 20 all: $(NAME).egg 21 $(CHICKEN-INSTALL) -n 19 22 20 23 clean: … … 24 27 $(RM) $(addprefix $(NAME)-postgresql,.so .import.so -static.o) 25 28 26 $(NAME).egg: $(addprefix $(NAME),.scm -sqlite3.scm -postgresql.scm .html .setup .meta) \ 27 tests/run.scm egg.jpg doc.scm Makefile 29 $(NAME).egg: $(addprefix $(NAME),.scm .html .setup .meta) \ 30 $(NAME)-sqlite3.scm sqlite3.import.scm \ 31 $(NAME)-postgresql.scm postgresql.import.scm \ 32 tests/run.scm egg.jpg doc.scm demo.scm Makefile 28 33 $(TAR) czf $@ $^ 29 34 30 $(NAME).html: doc.scm 35 $(NAME).html: doc.scm demo.html 31 36 $(CSI) -s $< >$@ 32 37 … … 38 43 echo "(compile $(CSCFLAGS)" >>$@; \ 39 44 echo " -c \"$(NAME).scm\" -unit \"$(NAME)\" -o \"$(NAME)-static.o\")" >>$@; \ 40 echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \ 45 echo "(install-extension" >>$@; \ 46 echo " '$(NAME)" >>$@; \ 47 echo " '(\"$(NAME).so\" \"$(NAME).import.so\" \"$(NAME)-static.o\")" >>$@; \ 48 echo " '((version \"$(VERSION)\")" >>$@; \ 49 echo " (static \"$(NAME)-static.o\")" >>$@; \ 50 echo " (documentation \"$(NAME).html\" \"egg.jpg\")))" >>$@; \ 51 echo "(compile $(CSCFLAGS)" >>$@; \ 41 52 echo " -s \"$(NAME)-sqlite3.scm\" $(LDLIBS) -j \"$(NAME)-sqlite3\")" >>$@; \ 42 53 echo "(compile $(IMPORT_CSCFLAGS)" >>$@; \ 43 54 echo " -s \"$(NAME)-sqlite3.import.scm\")" >>$@; \ 44 echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \55 echo "(compile $(CSCFLAGS)" >>$@; \ 45 56 echo " -c \"$(NAME)-sqlite3.scm\" -unit \"$(NAME)-sqlite3\" -o \"$(NAME)-sqlite3-static.o\")" >>$@; \ 46 echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \ 57 echo "(install-extension" >>$@; \ 58 echo " '$(NAME)-sqlite3" >>$@; \ 59 echo " '(\"$(NAME)-sqlite3.so\" \"$(NAME)-sqlite3.import.so\" \"$(NAME)-sqlite3-static.o\")" >>$@; \ 60 echo " '((version \"$(VERSION)\")" >>$@; \ 61 echo " (static \"$(NAME)-sqlite3-static.o\")))" >>$@; \ 62 echo "(compile $(CSCFLAGS)" >>$@; \ 47 63 echo " -s \"$(NAME)-postgresql.scm\" $(LDLIBS) -j \"$(NAME)-postgresql\")" >>$@; \ 48 64 echo "(compile $(IMPORT_CSCFLAGS)" >>$@; \ 49 65 echo " -s \"$(NAME)-postgresql.import.scm\")" >>$@; \ 50 echo "(compile $(CSCFLAGS) -X \"$(NAME)\"" >>$@; \66 echo "(compile $(CSCFLAGS)" >>$@; \ 51 67 echo " -c \"$(NAME)-postgresql.scm\" -unit \"$(NAME)-postgresql\" -o \"$(NAME)-postgresql-static.o\")" >>$@; \ 52 68 echo "(install-extension" >>$@; \ 53 echo " '$(NAME)" >>$@; \ 54 echo " '(\"$(NAME).so\" \"$(NAME).import.so\" \"$(NAME)-static.o\"" >>$@; \ 55 echo " \"$(NAME)-sqlite3.so\" \"$(NAME)-sqlite3.import.so\" \"$(NAME)-sqlite3-static.o\"" >>$@; \ 56 echo " \"$(NAME)-postgresql.so\" \"$(NAME)-postgresql.import.so\" \"$(NAME)-postgresql-static.o\")" >>$@; \ 69 echo " '$(NAME)-postgresql" >>$@; \ 70 echo " '(\"$(NAME)-postgresql.so\" \"$(NAME)-postgresql.import.so\" \"$(NAME)-postgresql-static.o\")" >>$@; \ 57 71 echo " '((version \"$(VERSION)\")" >>$@; \ 58 echo " (static \"$(NAME)-static.o\" \"$(NAME)-sqlite3-static.o\" \"$(NAME)-postgresql-static.o\")" >>$@; \ 59 echo " (documentation \"$(NAME).html\" \"egg.jpg\")))" >>$@ 72 echo " (static \"$(NAME)-postgresql-static.o\")))" >>$@ 60 73 61 %. so: %.scm62 $( CSC) $(CSCFLAGS) -s $< $(LDLIBS)-o $@74 %.html: %.scm 75 $(ENSCRIPT) --color --pretty-print=scheme --language=html $< -o $@ 63 76 64 $(NAME)-sqlite3.so: CSCFLAGS += -X $(NAME)65 66 $(NAME)-postgresql.so: CSCFLAGS += -X $(NAME) -
release/4/pandora/trunk/doc.scm
r15516 r15522 3 3 ;;;; Documentation for pandora 4 4 5 (use eggdoc )6 7 (define doc '(5 (use eggdoc htmlprag sxpath) 6 7 (define doc `( 8 8 (eggdoc:begin 9 9 … … 17 17 (requires 18 18 "check-errors" "matchable" "prometheus" 19 "uri-generic" "lru-cache" "sql-null" 20 "sqlite3" "postgresql") 19 "uri-generic" "lru-cache" "sql-null") 21 20 22 21 (documentation … … 24 23 (p "Pandora provides utilities to access SQL datastores by manipulating object graphs. No SQL statements have to be written by hand.") 25 24 (p "If SQL source is passed to Pandora directly, it is in the form of fragment lists, that is lists containing strings or the symbol " (tt "?") " where a statement parameter placeholder should be inserted by the database driver.") 26 (p "Pandora comes with backends for SQLite3 and PostgreSQL databases. Additional backends can be added easily.") 25 (p "Pandora comes with backends for SQLite3 and PostgreSQL databases. If you want to use these backends, you also have to install the " (tt "sqlite3") " and/or " (tt "postgresql") " eggs respectively. Additional backends can be added easily.") 26 (p "Pandora and its bundled backends all support static linking.") 27 27 28 28 (subsection "Prototypical objects" … … 44 44 (p (tt "URI") " may be a string or a " (tt "uri-generic") " record, but is always passed to the connection prototype's " (tt "clone") " method as a record.") 45 45 (p "The drivers bundled with pandora will handle the URI schemes " (tt "sqlite3") " or " (tt "memory") " for access to SQLite3 databases (the latter always creates a database in memory) and " (tt "postgresql") " or " (tt "psql") " for access to PostgreSQL databases.") 46 (pre #<<EOD 47 ;; Example: 46 (p "Before using a backend, it must be loaded, but it doesn't have to be imported.") 47 (pre #<<EOD 48 ;; Example using SQLite3: 49 (require-extension pandora) 48 50 (require-library pandora-sqlite3) 49 51 (define store (*sql-datastore* 'connect "sqlite3:test.db")) 52 53 ;; Example using PostgreSQL: 54 (require-extension pandora) 55 (require-library pandora-postgresql) 56 (define store (*sql-datastore* 'connect "psql:")) 50 57 EOD 51 58 )) … … 270 277 271 278 ) 279 280 (examples 281 ,(lambda () 282 (write-shtml-as-html 283 (car 284 ((sxpath '(// pre)) 285 (call-with-input-file "demo.html" html->sxml)))))) 272 286 273 287 (history … … 306 320 (append (eggdoc:make-stylesheet doc) 307 321 `((object *macro* . ,eggdoc:make-defsig) 308 (parent *macro* . ,eggdoc:make-defsig)309 322 (method *macro* . ,eggdoc:make-defsig)))) -
release/4/pandora/trunk/pandora-postgresql.scm
r15500 r15522 118 118 119 119 (define-method (*postgresql-datastore* 'with-transaction self resend thunk) 120 (let ([db (self 'db)] [success? #f] [exception #f]) 121 (dynamic-wind 122 (lambda () 123 (clear-result! (query db "BEGIN TRANSACTION"))) 124 (lambda () 125 (handle-exceptions exn 126 (begin 127 (set! exception exn) 128 (print-error-message exn (current-error-port) "Error in transaction")) 129 (set! success? (thunk)) 130 success?)) 131 (lambda () 132 (clear-result! 133 (query db 134 (if success? 135 "COMMIT TRANSACTION" 136 "ROLLBACK TRANSACTION"))) 137 (and-let* ([exn exception]) 138 (set! exception #f) 139 (signal exn)))))) 120 (with-transaction (self 'db) thunk)) 140 121 141 122 (for-each -
release/4/pandora/trunk/pandora.html
r15516 r15522 166 166 <li>uri-generic</li> 167 167 <li>lru-cache</li> 168 <li>sql-null</li> 169 <li>sqlite3</li> 170 <li>postgresql</li></ul></div> 168 <li>sql-null</li></ul></div> 171 169 <div class="section"> 172 170 <h3>Documentation</h3> 173 171 <p>Pandora provides utilities to access SQL datastores by manipulating object graphs. No SQL statements have to be written by hand.</p> 174 172 <p>If SQL source is passed to Pandora directly, it is in the form of fragment lists, that is lists containing strings or the symbol <tt>?</tt> where a statement parameter placeholder should be inserted by the database driver.</p> 175 <p>Pandora comes with backends for SQLite3 and PostgreSQL databases. Additional backends can be added easily.</p> 173 <p>Pandora comes with backends for SQLite3 and PostgreSQL databases. If you want to use these backends, you also have to install the <tt>sqlite3</tt> and/or <tt>postgresql</tt> eggs respectively. Additional backends can be added easily.</p> 174 <p>Pandora and its bundled backends all support static linking.</p> 176 175 <div class="subsection"> 177 176 <h4>Prototypical objects</h4> … … 191 190 <p><tt>URI</tt> may be a string or a <tt>uri-generic</tt> record, but is always passed to the connection prototype's <tt>clone</tt> method as a record.</p> 192 191 <p>The drivers bundled with pandora will handle the URI schemes <tt>sqlite3</tt> or <tt>memory</tt> for access to SQLite3 databases (the latter always creates a database in memory) and <tt>postgresql</tt> or <tt>psql</tt> for access to PostgreSQL databases.</p> 193 <pre>;; Example: 192 <p>Before using a backend, it must be loaded, but it doesn't have to be imported.</p> 193 <pre>;; Example using SQLite3: 194 (require-extension pandora) 194 195 (require-library pandora-sqlite3) 195 (define store (*sql-datastore* 'connect "sqlite3:test.db"))</pre></dd> 196 (define store (*sql-datastore* 'connect "sqlite3:test.db")) 197 198 ;; Example using PostgreSQL: 199 (require-extension pandora) 200 (require-library pandora-postgresql) 201 (define store (*sql-datastore* 'connect "psql:"))</pre></dd> 196 202 <dt class="definition"><strong>method:</strong> (DATASTORE 'disconnect!) ⇒ VOID</dt> 197 203 <dd> … … 375 381 <dd> 376 382 <p>Adds parentheses around an SQL statement unless they are already present.</p></dd></div></div> 383 <div class="section"> 384 <h3>Examples</h3> 385 <div id="examples"><pre> 386 <i><font color="#B22222">;;;; demo.scm 387 </font></i><i><font color="#B22222">;;;; :tabSize=2:indentSize=2:noTabs=true: 388 </font></i><i><font color="#B22222">;;;; This example creates a database that can be used to store discussion 389 </font></i><i><font color="#B22222">;;;; threads and shows how to access it using Pandora. 390 </font></i>(require-extension extras sql-null pandora) 391 (require-library pandora-sqlite3) 392 393 <i><font color="#B22222">;; The datastore and its schema 394 </font></i>(<b><font color="#A020F0">define</font></b> <b><font color="#0000FF">store</font></b> (*sql-datastore* 'connect <b><font color="#BC8F8F">"sqlite3:demo.db"</font></b>)) 395 396 (for-each 397 (cut store 'execute <> '()) 398 '((<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS Authors ("</font></b> 399 <b><font color="#BC8F8F">" id INTEGER, name TEXT,"</font></b> 400 <b><font color="#BC8F8F">" PRIMARY KEY (id),"</font></b> 401 <b><font color="#BC8F8F">" UNIQUE (name)"</font></b> 402 <b><font color="#BC8F8F">")"</font></b>) 403 (<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS Tags ("</font></b> 404 <b><font color="#BC8F8F">" id INTEGER, name INTEGER,"</font></b> 405 <b><font color="#BC8F8F">" PRIMARY KEY (id),"</font></b> 406 <b><font color="#BC8F8F">" UNIQUE (name)"</font></b> 407 <b><font color="#BC8F8F">")"</font></b>) 408 (<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS Posts ("</font></b> 409 <b><font color="#BC8F8F">" id INTEGER, author INTEGER, in_reply_to INTEGER, content TEXT,"</font></b> 410 <b><font color="#BC8F8F">" PRIMARY KEY (id),"</font></b> 411 <b><font color="#BC8F8F">" FOREIGN KEY (author) REFERENCES Authors (id),"</font></b> 412 <b><font color="#BC8F8F">" FOREIGN KEY (in_reply_to) REFERENCES Posts (id)"</font></b> 413 <b><font color="#BC8F8F">")"</font></b>) 414 (<b><font color="#BC8F8F">"CREATE TABLE IF NOT EXISTS PostTags ("</font></b> 415 <b><font color="#BC8F8F">" post INTEGER, tag INTEGER,"</font></b> 416 <b><font color="#BC8F8F">" PRIMARY KEY (post, tag),"</font></b> 417 <b><font color="#BC8F8F">" FOREIGN KEY (post) REFERENCES Posts (id),"</font></b> 418 <b><font color="#BC8F8F">" FOREIGN KEY (tag) REFERENCES Tags (id)"</font></b> 419 <b><font color="#BC8F8F">")"</font></b>))) 420 421 <i><font color="#B22222">;; Datasets representing the tables 422 </font></i>(define-values (authors posts tags post-tags) 423 (apply values 424 (map 425 (cut store 'table <>) 426 '(authors posts tags post-tags)))) 427 428 <i><font color="#B22222">;; Establish link relations between the tables 429 </font></i>(authors 'add-link-slots! 'posts* 430 '((id author)) posts) 431 (posts 'add-link-slots! 'author* 'set-author*! 432 '((author id)) authors) 433 434 (tags 'add-link-slots! 'posts* 435 '((id tag)) post-tags '((post id)) posts) 436 (posts 'add-link-slots! 'tags* 'set-tags*! 437 '((id post)) post-tags '((tag id)) tags) 438 439 (posts 'add-link-slots! 'in-reply-to* 'set-in-reply-to*! 440 '((in-reply-to id)) posts) 441 (posts 'add-link-slots! 'replies* 442 '((id in-reply-to)) posts) 443 444 <i><font color="#B22222">;; Add a few authors 445 </font></i>(define-values (alice bob eve) 446 (apply values 447 (map 448 (<b><font color="#A020F0">lambda</font></b> (name) 449 (authors 'insert! name: name) 450 (authors 'filter name: name)) 451 '(<b><font color="#BC8F8F">"Alice"</font></b> <b><font color="#BC8F8F">"Bob"</font></b> <b><font color="#BC8F8F">"Eve"</font></b>)))) 452 453 <i><font color="#B22222">;; Add some useless tags 454 </font></i>(for-each 455 (cut tags 'insert! name: <>) 456 '(<b><font color="#BC8F8F">"red"</font></b> <b><font color="#BC8F8F">"green"</font></b> <b><font color="#BC8F8F">"blue"</font></b>)) 457 458 <i><font color="#B22222">;; Start a discussion 459 </font></i>(<b><font color="#A020F0">define</font></b> <b><font color="#0000FF">a-post</font></b> 460 (<b><font color="#A020F0">begin</font></b> 461 (posts 'insert! author: (alice 'id) content: <b><font color="#BC8F8F">"Hello everybody!"</font></b>) 462 ((posts 'filter author: (alice 'id)) 'first))) 463 464 <i><font color="#B22222">;; Verify that the first post is not a reply to anything 465 </font></i>(pretty-print (sql-null? (a-post 'in-reply-to))) 466 (pretty-print ((a-post 'in-reply-to*) 'count)) 467 468 <i><font color="#B22222">;; Reply 469 </font></i>(for-each 470 (<b><font color="#A020F0">lambda</font></b> (author content) 471 (posts 'insert! author: (author 'id) in-reply-to: (a-post 'id) content: content)) 472 (list bob eve) 473 '(<b><font color="#BC8F8F">"Hi, nice to hear from you."</font></b> <b><font color="#BC8F8F">"Hi there."</font></b>)) 474 475 <i><font color="#B22222">;; Tag all replies both "red" and "blue" 476 </font></i>((a-post 'replies*) 'set-tags*! (tags 'filter name: '(<b><font color="#BC8F8F">"red"</font></b> <b><font color="#BC8F8F">"blue"</font></b>))) 477 478 <i><font color="#B22222">;; List all posts tagged "blue" 479 </font></i>(pretty-print (((tags 'filter name: <b><font color="#BC8F8F">"blue"</font></b>) 'posts*) 'content #f)) 480 481 <i><font color="#B22222">;; List all posts by Eve 482 </font></i>(pretty-print ((eve 'posts*) 'content #f)) 483 484 <i><font color="#B22222">;; List the tags of all posts by Eve 485 </font></i>(pretty-print (((eve 'posts*) 'tags*) 'name #f)) 486 487 </pre></div></div> 377 488 <div class="section"> 378 489 <h3>Version</h3> -
release/4/pandora/trunk/pandora.meta
r15500 r15522 6 6 (category db) 7 7 (eggdoc "doc.scm") 8 (needs check-errors matchable prometheus uri-generic lru-cache sql-null sqlite3 postgresql)8 (needs check-errors matchable prometheus uri-generic lru-cache sql-null) 9 9 (license "BSD") 10 10 (author "Thomas Chust") 11 (files "pandora.scm" "pandora-sqlite3.scm" " pandora-postgresql.scm" "pandora.html" "pandora.setup" "tests/run.scm" "egg.jpg"))11 (files "pandora.scm" "pandora-sqlite3.scm" "sqlite3.import.scm" "pandora-postgresql.scm" "postgresql.import.scm" "pandora.html" "pandora.setup" "tests/run.scm" "egg.jpg")) -
release/4/pandora/trunk/pandora.setup
r15500 r15522 5 5 (compile -O2 -d1 6 6 -c "pandora.scm" -unit "pandora" -o "pandora-static.o") 7 (compile -O2 -d1 -X "pandora" 7 (install-extension 8 'pandora 9 '("pandora.so" "pandora.import.so" "pandora-static.o") 10 '((version "1.0.0") 11 (static "pandora-static.o") 12 (documentation "pandora.html" "egg.jpg"))) 13 (compile -O2 -d1 8 14 -s "pandora-sqlite3.scm" -j "pandora-sqlite3") 9 15 (compile -O2 -d0 10 16 -s "pandora-sqlite3.import.scm") 11 (compile -O2 -d1 -X "pandora"17 (compile -O2 -d1 12 18 -c "pandora-sqlite3.scm" -unit "pandora-sqlite3" -o "pandora-sqlite3-static.o") 13 (compile -O2 -d1 -X "pandora" 19 (install-extension 20 'pandora-sqlite3 21 '("pandora-sqlite3.so" "pandora-sqlite3.import.so" "pandora-sqlite3-static.o") 22 '((version "1.0.0") 23 (static "pandora-sqlite3-static.o"))) 24 (compile -O2 -d1 14 25 -s "pandora-postgresql.scm" -j "pandora-postgresql") 15 26 (compile -O2 -d0 16 27 -s "pandora-postgresql.import.scm") 17 (compile -O2 -d1 -X "pandora"28 (compile -O2 -d1 18 29 -c "pandora-postgresql.scm" -unit "pandora-postgresql" -o "pandora-postgresql-static.o") 19 30 (install-extension 20 'pandora 21 '("pandora.so" "pandora.import.so" "pandora-static.o" 22 "pandora-sqlite3.so" "pandora-sqlite3.import.so" "pandora-sqlite3-static.o" 23 "pandora-postgresql.so" "pandora-postgresql.import.so" "pandora-postgresql-static.o") 31 'pandora-postgresql 32 '("pandora-postgresql.so" "pandora-postgresql.import.so" "pandora-postgresql-static.o") 24 33 '((version "1.0.0") 25 (static "pandora-static.o" "pandora-sqlite3-static.o" "pandora-postgresql-static.o") 26 (documentation "pandora.html" "egg.jpg"))) 34 (static "pandora-postgresql-static.o")))
Note: See TracChangeset
for help on using the changeset viewer.