;; Core Server: Web Application Server
;; Copyright (C) 2006-2008 Metin Evrim Ulu, Aycan iRiCAN
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see .
;;;; -*- Mode: lisp; indent-tabs-mode: nil; outline-regexp: ";;;;;*"; -*-
(in-package :asdf)
;; CFFI-Grovel is needed
(cl:eval-when (:load-toplevel :execute)
(asdf:operate 'asdf:load-op 'cffi-grovel))
;; Add distribution based features
(eval-when (:compile-toplevel :load-toplevel :execute)
(pushnew :core-server *features*)
(cond
((probe-file "/etc/pardus-release")
(pushnew :pardus *features*))
((probe-file "/etc/gentoo-release")
(pushnew :gentoo *features*))
((probe-file "/etc/debian_version")
(pushnew :debian *features*))))
(defsystem :core-server
:description "Core Server"
:version "0.1"
:author "Evrim Ulu "
:licence "MIT License"
:components ((:static-file "core-server.asd")
(:module :src
:serial t
:components
((:file "core-server")
(:file "bootstrap")
(:module :util
:serial t
:components
((:file "helper")
(:file "turkiye")
(:file "mop")))
(:module :class+
:serial t
:components
((:file "protocol")
(:file "class+")
(:file "lift")
(:file "command")))
(:module :compat
:serial t
:components
((:file "sockets")
(:file "threads")
;; (:file "prevalence")
))
(:module :units
:serial t
:components
((:file "units")))
;;; (:module :gss
;;; :serial t
;;; :components
;;; ((cffi-grovel:grovel-file "grovel")
;;; (:file "gss")
;;; (:file "interface")))
;; (:module :io
;; :serial t
;; :components
;; ((cffi-grovel:grovel-file "grovel")
;; (:file "errno")
;; (:file "bsd")
;; (:file "uuid")
;; (:file "interface")
;; (:file "events")
;; ;; (:module :libevent
;; ;; :serial t
;; ;; :components
;; ;; ((:file "libevent-lib")
;; ;; (cffi-grovel:grovel-file "grovel")
;; ;; (:file "libevent")))
;; (:module :libev
;; :serial t
;; :components
;; ((:file "libev-lib")
;; (cffi-grovel:grovel-file "grovel")
;; (:file "libev")
;; (:file "interface")))
;; ))
(:module :lisp
:serial t
:components
((:file "successors")
(:file "cps")))
(:module :streams
:serial t
:components
((:file "streams")
(:file "faster")
(:file "grammar")
(:file "util")
(:file "parser")
(:file "render")))
(:module :commands
:serial t
:components
((:file "shell")
(:file "admin")
(:file "scm")
;; (:file "hxpath")
(:file "image")
(:file "http")
(:file "facebook")
(:file "openid")
(:file "google")
(:file "paypal")
(:file "twitter")))
(:module :install
:serial t
:components
((:file "install")))
(:file "vars")
;; (:file "classes")
(:file "protocol")
(:file "application")
(:file "server")
(:file "peer")
(:module :javascript
:serial t
:components
((:file "util")
(:file "render")
(:file "transform")
(:file "interface")
(:file "cps")
(:file "macro")
(:file "library")))
(:module :rfc
:serial t
:components
((:file "2109") ;;cookie
(:file "2396") ;;uri
(:file "2822") ;;text messages
(:file "2617") ;;http auth
(:file "2616") ;;http
(:file "2045") ;;mime-part1
(:file "2046") ;;mime-part2
(:file "2388") ;;multpart/form-data
(:file "2821"))) ;;smtp
(:module :markup
:serial t
:components
((:file "xml")
(:file "dom")
(:file "html")
(:file "css")
;; (:file "rss")
(:file "atom")
(:file "gphoto")
(:file "media")
(:file "open-search")
(:file "wordpress")
(:file "content")
(:file "dc")
(:file "excerpt")))
(:module :database
:serial t
:components
((:file "serialize")
(:file "database")
(:file "object")
(:file "crud")))
(:module :applications
:components
((:file "web")
(:file "mail")
(:file "dns")
(:file "serializable-application")
(:file "darcs" :depends-on ("serializable-application"))
(:file "git" :depends-on ("serializable-application"))
(:file "apache" :depends-on ("web"))
(:file "http")
(:file "postfix" :depends-on ("mail"))))
(:module :servers
:components
((:file "tinydns")
(:file "apache")
(:file "mail")
(:file "postfix" :depends-on ("mail"))
(:file "logger")
;; (:file "ticket")
(:file "socket")
(:file "http" :depends-on ("socket" "logger"))))
(:module :services
:components
((:file "whois")
(:file "mail")
(:file "filesystem")))
(:module :web
:serial t
:components
((:file "macros")
(:file "json")
(:file "mime-types")
(:file "tags")
(:file "component")
(:file "service")
(:file "jquery")
(:file "form")
(:file "dialog")
(:file "extra")
(:file "auth")
(:file "table")
(:file "crud")
(:file "tab")
(:file "image")
(:file "video")
(:file "editor")
(:file "dojo")
(:file "picasa"))))))
:depends-on (:swank :bordeaux-threads ;; :cl-prevalence
:sb-bsd-sockets :arnesi :cl-ppcre :cl-fad :cffi
:salza2 :ironclad)
:serial t)
(defmethod perform :after ((o load-op) (c (eql (find-system :core-server))))
(in-package :core-server))
(defsystem :core-server.test
:components ((:module :t
:serial t
:components ((:file "packages")
(:file "test-harness")
(:file "method")
(:file "class+")
(:file "postfix")
(:file "parser")
(:file "streams")
(:file "sockets")
(:file "markup")
(:file "json")
(:file "units")
(:module :rfc
:components ((:file "2109")
(:file "2396")
(:file "2045")
(:file "2388")
(:file "2616"))
:serial t)
(:module :database
:components ((:file "serialization")
(:file "database")))
;; (:file "database")
;; (:file "dns")
;; (:file "apache")
;; (:file "ucw")
;; (:file "core")
(:file "javascript")
(:file "component"))))
:depends-on (:core-server :rt))
;; (defmethod perform ((op asdf::load-op) (system (eql (find-system :core-server.test))))
;; (core-server::with-package (find-package :core-server.test)
;; (rt:do-tests)))
;; (defmethod perform ((op asdf:test-op) (system (eql (find-system :core-server))))
;; (asdf:oos 'asdf:load-op :core-server.test)
;; (funcall (intern (string :run!) (string :it.bese.FiveAM)) :core-server))