From 256e5f5ea55a1a19bc2b540af38b856dcafcc687 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Wed, 9 Oct 2013 13:50:34 -0400 Subject: [PATCH] Added slas and slvm targets and commented out server spawning code in slpkg --- SConstruct | 37 ++++++++++++----------------------- source/slas/main.c | 7 +++++++ source/slpkg/main.scm | 24 +++++++++++++++++------ source/slpkg/server.scm | 43 +++++++++++++++++++++++++++++++++++++++++ source/slvm/main.c | 7 +++++++ 5 files changed, 87 insertions(+), 31 deletions(-) create mode 100644 source/slas/main.c create mode 100644 source/slpkg/server.scm create mode 100644 source/slvm/main.c diff --git a/SConstruct b/SConstruct index 9e62a2f..b3dd088 100644 --- a/SConstruct +++ b/SConstruct @@ -1,7 +1,6 @@ #------------------------------------------------------------------------------ # Environment Setup and Utilities #------------------------------------------------------------------------------ - import platform import fnmatch import os @@ -55,7 +54,7 @@ scheme = Environment( CCFLAGS = [ '-explicit-use', '-I', 'inc'], LDFLAGS = [], BUILDERS = { - 'Program': scheme_linker, + 'Program': scheme_linker, 'TestRunner': scheme_tester }) #------------------------------------------------------------------------------ @@ -63,40 +62,28 @@ scheme = Environment( #------------------------------------------------------------------------------ # SOF Shared Library -c_cpp.SharedLibrary( - target = 'build/sof', - source = find_files('source/libsof/','*.c')) +c_cpp.SharedLibrary('build/sof', find_files('source/libsof/','*.c')) # SBC Shared Library -c_cpp.SharedLibrary( - target = 'build/sbc', - source = find_files('source/libsbc/','*.c')) +c_cpp.SharedLibrary('build/sbc', find_files('source/libsbc/','*.c')) # readsof Command Line Utility readsof = c_cpp.Clone( CPPPATH = [ 'source/libsof/' ], LIBS = [ 'sof' ], LIBPATH = [ 'build' ]) -readsof.Program( - target = 'build/readsof', - source = find_files('source/readsof/','*.c')) +readsof.Program('build/readsof', find_files('source/readsof/','*.c')) readsof.Depends('readsof', 'sof') # SCLPL Compiler -src_files = find_files('source/compiler/','*.scm') -scheme.Program( - target = 'build/slc', - source = src_files) +scheme.Program('build/slc', find_files('source/compiler/','*.scm')) # SCLPL Package Manager -src_files = find_files('source/slpkg/','*.scm') -scheme.Program( - target = 'build/slpkg', - source = src_files) - -# Compiler Test Suite -#scheme.TestRunner( -# target = 'build/tests/sclpl-cc-tests', -# source = [s for s in src_files if not s.endswith("main.scm")] + -# find_files('tests/compiler/','*.scm')) +scheme.Program('build/slpkg', find_files('source/slpkg/','*.scm')) + +# SCLPL Assembler +c_cpp.Program('build/slas', find_files('source/slas/','*.c')) + +# SCLPL Virtual Machine +c_cpp.Program('build/slvm', find_files('source/slvm/','*.c')) diff --git a/source/slas/main.c b/source/slas/main.c new file mode 100644 index 0000000..5a883f1 --- /dev/null +++ b/source/slas/main.c @@ -0,0 +1,7 @@ +#include + +int main(int argc, char** argv) +{ + puts("Hello, World!"); + return 0; +} diff --git a/source/slpkg/main.scm b/source/slpkg/main.scm index a968c28..eccc64e 100644 --- a/source/slpkg/main.scm +++ b/source/slpkg/main.scm @@ -1,4 +1,4 @@ -(declare (uses library)) +(declare (uses library server)) (define slpkg-usage "Package manager for SCLPL (Simple Concurrent List Processing Language). @@ -12,27 +12,39 @@ Commands: publish Publish a package to a specified repository. remove Remove one or more packages from this machine. search Search the repositories for packages matching a pattern. + server Start a package server to host packages. show Show detailed information about a specific package or packages. source Manage the sources from which packages will be retrieved. update Update the package lists for all configured sources. upgrade Upgrade a given package or packages. - upgrade-all Upgrade all packages installed on this machine.\n") +") ;------------------------------------------------------------------------------ (define (help-cmd args) (print args)) +;------------------------------------------------------------------------------ (define install-cmd help-cmd) +;------------------------------------------------------------------------------ (define publish-cmd help-cmd) +;------------------------------------------------------------------------------ (define remove-cmd help-cmd) +;------------------------------------------------------------------------------ (define search-cmd help-cmd) +;------------------------------------------------------------------------------ + +(define (server-cmd args) + (start-pkg-server (cadr args) (caddr args))) + +;------------------------------------------------------------------------------ (define show-cmd help-cmd) +;------------------------------------------------------------------------------ (define source-cmd help-cmd) +;------------------------------------------------------------------------------ (define update-cmd help-cmd) +;------------------------------------------------------------------------------ (define upgrade-cmd help-cmd) -(define upgrade-all help-cmd) - ;------------------------------------------------------------------------------ (define slpkg-commands @@ -41,11 +53,11 @@ Commands: ("publish" . ,publish-cmd) ("remove" . ,remove-cmd) ("search" . ,search-cmd) + ("server" . ,server-cmd) ("show" . ,show-cmd) ("source" . ,source-cmd) ("update" . ,update-cmd) - ("upgrade" . ,upgrade-cmd) - ("upgrade-all" . ,upgrade-all))) + ("upgrade" . ,upgrade-cmd))) ;------------------------------------------------------------------------------ diff --git a/source/slpkg/server.scm b/source/slpkg/server.scm new file mode 100644 index 0000000..23dd7fa --- /dev/null +++ b/source/slpkg/server.scm @@ -0,0 +1,43 @@ +(declare (unit server) );(uses spiffy intarweb posix)) + +(define index-template +" + + + Index of ~a + + +
~a
+ +") + +(define entry-template "~a
\n") + +(define (html-response html) + (with-headers `((content-type text/html) + (content-length ,(string-length html))) + (lambda () + (write-logged-response) + (display html (response-port (current-response)))))) + +(define (generate-index path) + (define curr_root (string-append (root-path) path)) + (define entries (glob (string-append curr_root "/*"))) + (apply string-append + (map (lambda (e) + (define pth (if (equal? "/" path) path (string-append path "/" e))) + (sprintf entry-template pth e)) + (map (lambda (e) (car (reverse (string-split e "/")))) + entries)))) + +(define (index-handler path) + (html-response (sprintf index-template path (generate-index path)))) + +(define (start-pkg-server port root) + (server-port 8080) + (root-path "./") + (handle-directory index-handler) + (start-server)) + diff --git a/source/slvm/main.c b/source/slvm/main.c new file mode 100644 index 0000000..5a883f1 --- /dev/null +++ b/source/slvm/main.c @@ -0,0 +1,7 @@ +#include + +int main(int argc, char** argv) +{ + puts("Hello, World!"); + return 0; +} -- 2.52.0