summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2020-01-01 00:00:00 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2021-06-19 13:06:24 +0200
commit7065ff343d2e9765fe05351926502d5563461980 (patch)
tree92a7d226983cc31e18c7ad5f32208f84d8ab92ae /src
parent872ab5c677c7187dcaf37d86d7a042138f5c301c (diff)
Set up the guile project
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am33
-rw-r--r--src/inst/webid-oidc/Makefile.am3
-rw-r--r--src/pre-inst/Makefile.am2
-rw-r--r--src/pre-inst/webid-oidc/Makefile.am6
-rw-r--r--src/scm/Makefile.am4
-rw-r--r--src/scm/webid-oidc.scm2
-rw-r--r--src/scm/webid-oidc/Makefile.am7
-rw-r--r--src/scm/webid-oidc/errors.scm30
8 files changed, 86 insertions, 1 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 8cf7635..a508f40 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,14 +2,45 @@ lib_LTLIBRARIES += %reldir%/libwebidoidc.la
AM_CPPFLAGS += -I %reldir% -I $(srcdir)/%reldir%
+GUILD_OPTIONS =
+
+CLEANFILES =
+
+moddir = $(prefix)/share/guile/site/$(GUILE_EFFECTIVE_VERSION)
+godir = $(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache
+
+webidoidcmoddir = $(moddir)/webid-oidc
+webidoidcgodir = $(godir)/webid-oidc
+
+dist_mod_DATA =
+mod_DATA =
+go_DATA =
+
+dist_webidoidcmod_DATA =
+webidoidcmod_DATA =
+webidoidcgo_DATA =
+
+install_go_targets = install-webidoidcgoDATA
+install_mod_targets = install-webidoidcmodDATA install-dist_webidoidcmodDATA
+
include %reldir%/pre-inst/Makefile.am
include %reldir%/inst/Makefile.am
+include %reldir%/scm/Makefile.am
+
+CLEANFILES += $(go_DATA) $(webidoidcgo_DATA) $(mod_DATA) $(webidoidcmod_DATA)
%canon_reldir%_libwebidoidc_la_SOURCES = %reldir%/gettext.h %reldir%/libwebidoidc.c
%canon_reldir%_libwebidoidc_la_LIBADD = $(noinst_LTLIBRARIES) $(GUILE_LIBS) $(NETTLE_LIBS)
INDENTED += $(%canon_reldir%_libwebidoidc_la_SOURCES)
-SUFFIXES += .c .x
+$(go_DATA) $(webidoidcgo_DATA): %reldir%/libwebidoidc.la
+
+SUFFIXES += .c .x .scm .go
.c.x:
$(AM_V_GEN) $(SNARF) -o $@ $< $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(AM_CPPFLAGS) $(AM_CFLAGS) $(GUILE_CFLAGS) $(NETTLE_CFLAGS)
+.scm.go:
+ $(AM_V_GEN) $(top_builddir)/pre-inst-env $(GUILD) compile $(GUILE_WARNINGS) $(GUILD_OPTIONS) -o "$@-t" "$<"
+ @mv "$@-t" "$@"
+
+$(install_go_targets): $(install_mod_targets)
diff --git a/src/inst/webid-oidc/Makefile.am b/src/inst/webid-oidc/Makefile.am
index b76249e..ac2778b 100644
--- a/src/inst/webid-oidc/Makefile.am
+++ b/src/inst/webid-oidc/Makefile.am
@@ -1,3 +1,6 @@
+webidoidcmod_DATA += %reldir%/config.scm
+webidoidcgo_DATA += %reldir%/config.go
+
%reldir%/config.scm: $(top_builddir)/config.status
$(AM_V_GEN) mkdir -p %reldir% && (echo "(define-module (webid-oidc config))" ; \
echo "(define-public libdir \"$(libdir)\")") \
diff --git a/src/pre-inst/Makefile.am b/src/pre-inst/Makefile.am
index 08c3f1c..035a7bb 100644
--- a/src/pre-inst/Makefile.am
+++ b/src/pre-inst/Makefile.am
@@ -1 +1,3 @@
include %reldir%/webid-oidc/Makefile.am
+
+GUILD_OPTIONS += -L %reldir% -L $(srcdir)/%reldir%
diff --git a/src/pre-inst/webid-oidc/Makefile.am b/src/pre-inst/webid-oidc/Makefile.am
index 7fd7fb9..fa8c4e1 100644
--- a/src/pre-inst/webid-oidc/Makefile.am
+++ b/src/pre-inst/webid-oidc/Makefile.am
@@ -1,3 +1,9 @@
+$(go_DATA) $(webidoidcgo_DATA): %reldir%/config.go
+
+CLEANFILES += %reldir%/config.go %reldir%/config.scm
+
+BUILT_SOURCES += %reldir%/config.scm
+
%reldir%/config.scm: $(top_builddir)/config.status
$(AM_V_GEN) mkdir -p %reldir% && (echo "(define-module (webid-oidc config))" ; \
echo "(define-public libdir \"$(abs_top_builddir)/src/.libs\")") \
diff --git a/src/scm/Makefile.am b/src/scm/Makefile.am
new file mode 100644
index 0000000..33855e1
--- /dev/null
+++ b/src/scm/Makefile.am
@@ -0,0 +1,4 @@
+dist_mod_DATA += %reldir%/webid-oidc.scm
+go_DATA += %reldir%/webid-oidc.go
+
+include %reldir%/webid-oidc/Makefile.am
diff --git a/src/scm/webid-oidc.scm b/src/scm/webid-oidc.scm
new file mode 100644
index 0000000..a9a4699
--- /dev/null
+++ b/src/scm/webid-oidc.scm
@@ -0,0 +1,2 @@
+(define-module (webid-oidc)
+ #:use-module (webid-oidc config))
diff --git a/src/scm/webid-oidc/Makefile.am b/src/scm/webid-oidc/Makefile.am
new file mode 100644
index 0000000..48a41f7
--- /dev/null
+++ b/src/scm/webid-oidc/Makefile.am
@@ -0,0 +1,7 @@
+dist_webidoidcmod_DATA += \
+ %reldir%/errors.scm
+
+webidoidcgo_DATA += \
+ %reldir%/errors.go
+
+EXTRA_DIST += %reldir%/ChangeLog
diff --git a/src/scm/webid-oidc/errors.scm b/src/scm/webid-oidc/errors.scm
new file mode 100644
index 0000000..b8d7382
--- /dev/null
+++ b/src/scm/webid-oidc/errors.scm
@@ -0,0 +1,30 @@
+(define-module (webid-oidc errors)
+ #:use-module (ice-9 exceptions)
+ #:use-module (ice-9 optargs)
+ #:use-module (ice-9 i18n))
+
+(define (G_ text)
+ (let ((out (gettext text)))
+ (if (string=? out text)
+ ;; No translation, disambiguate
+ (car (reverse (string-split text #\|)))
+ out)))
+
+;; This is a collection of all errors that can happen, and a function
+;; to log them.
+
+(define*-public (error->str error #:key (max-depth #f))
+ (if (record? error)
+ (let* ((type (record-type-descriptor error))
+ (get
+ (lambda (slot)
+ ((record-accessor type slot) error)))
+ (recurse
+ (if (eqv? max-depth 0)
+ (lambda (err) (G_ "that’s how it is"))
+ (lambda (err)
+ (error->str err #:max-depth (and max-depth (- max-depth 1)))))))
+ (case (record-type-name type)
+ (else
+ (error (format #f "Unhandled exception type ~a." (record-type-name type))))))
+ (format #f "~a" error)))