> I installed the chicken-blob egg and then it gives:
> Syntax error: (sqlite3.scm:552) - malformed expression: (db name n step-proc
> seed . final-proc)
> inside expression `(case-lambda ...)'
I think that's just a case of needing (scheme case-lambda).
> Is someone working on the sqlite3 egg?
I gave it a go, but some tests are failing with what looks like encoding
issues. I did change an argument's foreign type, perhaps incorrectly? I don't
have time to continue now but I've attached my WIP patch in case it's helpful.
Diego
Only in /tmp/sqlite3/: sqlite3.build.sh
diff '--color=auto' -ur /home/dieggsy/.cache/chicken-install/sqlite3/sqlite3.egg /tmp/sqlite3/sqlite3.egg
--- /home/dieggsy/.cache/chicken-install/sqlite3/sqlite3.egg 2026-09-08 12:47:47.407897919 -0400
+++ /tmp/sqlite3/sqlite3.egg 2026-09-08 12:41:50.080311982 -0400
@@ -5,7 +5,8 @@
(version "3.7.3")
(dependencies
srfi-1 srfi-13 srfi-18 srfi-69 object-evict
- check-errors synch miscmacros matchable sql-null)
+ check-errors synch miscmacros matchable sql-null
+ chicken-blob)
(test-dependencies test)
(components
(extension sqlite3
Only in /tmp/sqlite3/: sqlite3.import.scm
Only in /tmp/sqlite3/: sqlite3.import.so
Only in /tmp/sqlite3/: sqlite3.install.sh
Only in /tmp/sqlite3/: sqlite3.link
diff '--color=auto' -ur /home/dieggsy/.cache/chicken-install/sqlite3/sqlite3.scm /tmp/sqlite3/sqlite3.scm
--- /home/dieggsy/.cache/chicken-install/sqlite3/sqlite3.scm 2026-09-08 12:47:47.407897919 -0400
+++ /tmp/sqlite3/sqlite3.scm 2026-09-08 12:43:28.859535306 -0400
@@ -118,6 +118,11 @@
matchable
sql-null)
+(cond-expand
+ (chicken-6
+ (import (scheme case-lambda))
+ (import (only (scheme base) exact-integer?)))
+ (else))
;;; Foreign types & values
;; Enumeration and constant definitions
@@ -194,12 +199,14 @@
(ptr database-ptr database-ptr-set!)
(busy-handler database-busy-handler database-busy-handler-set!))
-(define-record-printer (sqlite3:database db out)
- (display
+(set-record-printer!
+ sqlite3:database
+ (lambda (db out)
+ (display
(if (database-ptr db)
- "#<sqlite3:database>"
- "#<sqlite3:database zombie>")
- out))
+ "#<sqlite3:database>"
+ "#<sqlite3:database zombie>")
+ out)))
(define-check+error-type database)
@@ -214,12 +221,14 @@
(ptr statement-ptr statement-ptr-set!)
(database statement-database))
-(define-record-printer (sqlite3:statement stmt out)
- (display
+(set-record-printer!
+ sqlite3:statement
+ (lambda (stmt out)
+ (display
(if (statement-ptr stmt)
- (sprintf "#<sqlite3:statement sql=~s>" (source-sql stmt))
- "#<sqlite3:statement zombie>")
- out))
+ (sprintf "#<sqlite3:statement sql=~s>" (source-sql stmt))
+ "#<sqlite3:statement zombie>")
+ out)))
(define-check+error-type statement)
@@ -702,10 +711,10 @@
(let-location ([stmt c-pointer] [tail c-string])
(cond
[((foreign-safe-lambda sqlite3:status "sqlite3_prepare_v2"
- sqlite3:database scheme-pointer int
+ sqlite3:database (const c-string) int
(c-pointer sqlite3:statement)
(c-pointer (const c-string)))
- db (string-append sql "\x00") (string-length sql) #$stmt #$tail)
+ db (string-append sql) (string-length sql) #$stmt #$tail)
=> (lambda (err)
(case err
[(busy)
Only in /tmp/sqlite3/: sqlite3.so
Only in /tmp/sqlite3/: sqlite3.static.o
diff '--color=auto' -ur /home/dieggsy/.cache/chicken-install/sqlite3/TIMESTAMP /tmp/sqlite3/TIMESTAMP
--- /home/dieggsy/.cache/chicken-install/sqlite3/TIMESTAMP 2026-09-08 12:47:47.407897919 -0400
+++ /tmp/sqlite3/TIMESTAMP 2026-09-08 12:26:20.155237029 -0400
@@ -1 +1 @@
-1788886067
\ No newline at end of file
+1788884757
\ No newline at end of file