From ae4deb027146109a28b3070904c282dcbb0be4be Mon Sep 17 00:00:00 2001 From: PHO Date: Tue, 16 Feb 2010 19:30:01 +0900 Subject: [PATCH] Working on rc.d friendliness... --- GNUmakefile | 5 +++ Main.hs | 30 +++++++-------- Makefile | 42 --------------------- cabal-package.mk | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 115 insertions(+), 57 deletions(-) create mode 100644 GNUmakefile delete mode 100644 Makefile create mode 100644 cabal-package.mk diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..020afa2 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,5 @@ +RUN_COMMAND = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG -v + +CONFIGURE_ARGS = --disable-optimization -fbuild-test-suite + +include cabal-package.mk \ No newline at end of file diff --git a/Main.hs b/Main.hs index 46eb3e2..736033f 100644 --- a/Main.hs +++ b/Main.hs @@ -41,7 +41,7 @@ data CmdOpt | OptUserName String | OptGroupName String | OptLogLevel Priority - | OptDisableStderrLog + | OptVerbose | OptRebuildIndex | OptHelp deriving (Eq, Show) @@ -85,11 +85,11 @@ options = [ Option ['p'] ["port"] (ReqArg (OptLogLevel . read) "LEVEL") ("The lowest log level to show. (default: " ++ show defaultLogLevel ++ ")") - , Option [] ["disable-stderr-log"] - (NoArg OptDisableStderrLog) - "Disable logging to stderr." + , Option ['v'] ["verbose"] + (NoArg OptVerbose) + "Enable logging to stderr." - , Option [] ["rebuild-index"] + , Option ['r'] ["rebuild-index"] (NoArg OptRebuildIndex) "Rebuild the index database." @@ -213,16 +213,16 @@ getLocalStateDir opts setupLogger :: [CmdOpt] -> IO () setupLogger opts - = do let disableStderrLog = find (== OptDisableStderrLog) opts /= Nothing - logHandlers = if disableStderrLog then - [] - else - [verboseStreamHandler stderr DEBUG] - logLevel = fromMaybe defaultLogLevel - $ do OptLogLevel l <- find (\ x -> case x of - OptLogLevel _ -> True - _ -> False) opts - return l + = do let verbose = find (== OptVerbose) opts /= Nothing + logHandlers = if verbose then + [verboseStreamHandler stderr DEBUG] + else + [] -- FIXME: enable file log + logLevel = fromMaybe defaultLogLevel + $ do OptLogLevel l <- find (\ x -> case x of + OptLogLevel _ -> True + _ -> False) opts + return l logHandlers' <- sequence logHandlers updateGlobalLogger rootLoggerName (setHandlers logHandlers' . setLevel logLevel) diff --git a/Makefile b/Makefile deleted file mode 100644 index d7584a8..0000000 --- a/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -CABAL_FILE = Rakka.cabal -GHC = ghc -EXECUTABLE = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG -#EXECUTABLE = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG +RTS -S -A60M -RTS -#EXECUTABLE = sudo ./dist/build/rakka/rakka -p 8989 -l DEBUG +RTS -p -RTS - -build: dist/setup-config Setup - $(MAKE) -C js $@ - ./Setup build - -run: build - $(EXECUTABLE) - -rebuild-index: build - $(EXECUTABLE) --rebuild-index - -dist/setup-config: $(CABAL_FILE) configure Setup Rakka.buildinfo.in - ./Setup configure --disable-optimization -fbuild-test-suite -# ./Setup configure -fhardest-optimization -# ./Setup configure -fenable-profiling - -configure: configure.ac - autoconf - -Setup: Setup.hs - $(GHC) --make Setup - -clean: - $(MAKE) -C js $@ - rm -rf dist Setup Setup.o Setup.hi - find . -name '*~' -exec rm -f {} \; - -install: build - sudo ./Setup install - -test: build - ./Setup test - -sdist: Setup - ./Setup sdist - -.PHONY: build run clean install doc sdist test diff --git a/cabal-package.mk b/cabal-package.mk new file mode 100644 index 0000000..d8bbaad --- /dev/null +++ b/cabal-package.mk @@ -0,0 +1,95 @@ +# -*- makefile-gmake -*- +# +# Variables: +# +# CONFIGURE_ARGS :: arguments to be passed to ./Setup configure +# default: --disable-optimization +# +# RUN_COMMAND :: command to be run for "make run" +# + +GHC ?= ghc +FIND ?= find +RM_RF ?= rm -rf +SUDO ?= sudo +AUTOCONF ?= autoconf +HLINT ?= hlint + +CONFIGURE_ARGS ?= --disable-optimization + +SETUP_FILE := $(wildcard Setup.*hs) +CABAL_FILE := $(wildcard *.cabal) + +ifeq ($(shell ls configure.ac 2>/dev/null),configure.ac) + AUTOCONF_AC_FILE := configure.ac + AUTOCONF_FILE := configure +else + ifeq ($(shell ls configure.in 2>/dev/null),configure.in) + AUTOCONF_AC_FILE := configure.in + AUTOCONF_FILE := configure + else + AUTOCONF_AC_FILE := + AUTOCONF_FILE := + endif +endif + +BUILDINFO_IN_FILE := $(wildcard *.buildinfo.in) +BUILDINFO_FILE := $(BUILDINFO_IN_FILE:.in=) + +all: build + +build: setup-config build-hook + ./Setup build + +build-hook: + +ifeq ($(RUN_COMMAND),) +run: + @echo "cabal-package.mk: No command to run." + @echo "cabal-package.mk: If you want to run something, define RUN_COMMAND variable." +else +run: build + @echo ".:.:. Let's go .:.:." + $(RUN_COMMAND) +endif + +setup-config: dist/setup-config setup-config-hook $(BUILDINFO_FILE) + +setup-config-hook: + +dist/setup-config: $(CABAL_FILE) Setup $(AUTOCONF_FILE) + ./Setup configure $(CONFIGURE_ARGS) + +$(AUTOCONF_FILE): $(AUTOCONF_AC_FILE) + $(AUTOCONF) + +$(BUILDINFO_FILE): $(BUILDINFO_IN_FILE) configure + ./Setup configure $(CONFIGURE_ARGS) + +Setup: $(SETUP_FILE) + $(GHC) --make Setup + +clean: clean-hook + $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo + $(FIND) . -name '*~' -exec rm -f {} \; + +clean-hook: + +doc: setup-config + ./Setup haddock + +install: build + $(SUDO) ./Setup install + +sdist: setup-config + ./Setup sdist + +test: build + ./Setup test + +lint: + $(HLINT) . --report \ + --ignore="Use string literal" \ + --ignore="Use concatMap" + +.PHONY: build build-hook setup-config setup-config-hook run clean clean-hook install doc sdist test lint -- 2.40.0