Skip to content

Commit

Permalink
Add make dev target. Use ./utils/run to launch CouchDB from the s…
Browse files Browse the repository at this point in the history
…ource tree and without `make install`. Useful for development. Patch my Hunter Morris, thanks! Closes COUCHDB-114.

git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@707480 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
janl committed Oct 23, 2008
1 parent f98d836 commit efe07f9
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 8 deletions.
11 changes: 10 additions & 1 deletion Makefile.am
Expand Up @@ -10,7 +10,7 @@
## License for the specific language governing permissions and limitations ## License for the specific language governing permissions and limitations
## under the License. ## under the License.


SUBDIRS = bin etc src/couchdb src/mochiweb share test var SUBDIRS = bin etc src/couchdb src/mochiweb share test var utils


localdoc_DATA = AUTHORS.gz BUGS.gz CHANGES.gz NEWS.gz README.gz THANKS.gz localdoc_DATA = AUTHORS.gz BUGS.gz CHANGES.gz NEWS.gz README.gz THANKS.gz


Expand All @@ -36,6 +36,14 @@ README.gz: $(top_srcdir)/README
THANKS.gz: $(top_srcdir)/THANKS THANKS.gz: $(top_srcdir)/THANKS
-gzip -9 < $< > $@ -gzip -9 < $< > $@


dev: all
@echo "This command is intended for developers to use;"
@echo "it creates development ini files as well as a"
@echo "$(top_srcdir)/tmp structure for development runtime files"
mkdir -p $(top_srcdir)/tmp/lib
mkdir -p $(top_srcdir)/tmp/log
mkdir -p $(top_srcdir)/tmp/run

.PHONY: local-clean .PHONY: local-clean
local-clean: maintainer-clean local-clean: maintainer-clean
@echo "This command is intended for maintainers to use;" @echo "This command is intended for maintainers to use;"
Expand All @@ -49,6 +57,7 @@ local-clean: maintainer-clean
rm -f $(top_srcdir)/*.tar.gz.* rm -f $(top_srcdir)/*.tar.gz.*
rm -fr $(top_srcdir)/build-aux rm -fr $(top_srcdir)/build-aux
rm -fr $(top_srcdir)/m4 rm -fr $(top_srcdir)/m4
rm -fr $(top_srcdir)/tmp
find $(top_srcdir) -name Makefile.in -exec rm {} \; find $(top_srcdir) -name Makefile.in -exec rm {} \;


.PHONY: distsign .PHONY: distsign
Expand Down
19 changes: 17 additions & 2 deletions bin/Makefile.am
Expand Up @@ -11,12 +11,13 @@
## under the License. ## under the License.


bin_SCRIPTS = couchdb couchjs bin_SCRIPTS = couchdb couchjs
noinst_SCRIPTS = couchjs_dev


if HELP2MAN if HELP2MAN
dist_man1_MANS = couchdb.1 couchjs.1 dist_man1_MANS = couchdb.1 couchjs.1
endif endif


CLEANFILES = $(bin_SCRIPTS) $(dist_man1_MANS) CLEANFILES = $(bin_SCRIPTS) $(dist_man1_MANS) $(noinst_SCRIPTS)


transform = @program_transform_name@ transform = @program_transform_name@
couchdb_command_name = `echo couchdb | sed '$(transform)'` couchdb_command_name = `echo couchdb | sed '$(transform)'`
Expand All @@ -26,8 +27,11 @@ couchdb: couchdb.tpl
sed -e "s|%ERL%|$(ERL)|g" \ sed -e "s|%ERL%|$(ERL)|g" \
-e "s|%ICU_CONFIG%|$(ICU_CONFIG)|g" \ -e "s|%ICU_CONFIG%|$(ICU_CONFIG)|g" \
-e "s|%bindir%|@bindir@|g" \ -e "s|%bindir%|@bindir@|g" \
-e "s|%localerlangbindir%|@localerlangbindir@|g" \
-e "s|%localerlanglibdir%|@localerlanglibdir@|g" \ -e "s|%localerlanglibdir%|@localerlanglibdir@|g" \
-e "s|%mochiwebebindir%|couch-@version@/ebin|g" \
-e "s|%couchdbebindir%|mochiweb-r82/ebin|g" \
-e "s|%defaultini%|default.ini|g" \
-e "s|%localini%|local.ini|g" \
-e "s|%localconfdir%|@localconfdir@|g" \ -e "s|%localconfdir%|@localconfdir@|g" \
-e "s|%localstatelogdir%|@localstatelogdir@|g" \ -e "s|%localstatelogdir%|@localstatelogdir@|g" \
-e "s|%localstatelibdir%|@localstatelibdir@|g" \ -e "s|%localstatelibdir%|@localstatelibdir@|g" \
Expand All @@ -52,6 +56,17 @@ couchjs: couchjs.tpl
$@ < $< $@ < $<
chmod +x $@ chmod +x $@


couchjs_dev: couchjs.tpl
sed -e "s|%locallibbindir%|$(abs_top_srcdir)/src/couchdb|g" \
-e "s|%bug_uri%|@bug_uri@|g" \
-e "s|%package_author_address%|@package_author_address@|g" \
-e "s|%package_author_name%|@package_author_name@|g" \
-e "s|%package_name%|@package_name@|g" \
-e "s|%version%|@version@|g" \
-e "s|%couchjs_command_name%|$(couchjs_command_name)|g" > \
$@ < $<
chmod +x $@

HELP2MAN_OPTION=--no-info --help-option="-h" --version-option="-V" HELP2MAN_OPTION=--no-info --help-option="-h" --version-option="-V"


# XXX: Because the scripts are made at build time for the user we need to # XXX: Because the scripts are made at build time for the user we need to
Expand Down
8 changes: 4 additions & 4 deletions bin/couchdb.tpl.in
Expand Up @@ -23,8 +23,8 @@ RECURSED_BOOLEAN=false


RESPAWN_TIMEOUT=0 RESPAWN_TIMEOUT=0


DEFAULT_INI_FILE=%localconfdir%/default.ini DEFAULT_INI_FILE=%localconfdir%/%defaultini%
LOCAL_INI_FILE=%localconfdir%/local.ini LOCAL_INI_FILE=%localconfdir%/%localini%


PID_FILE=%localstatedir%/run/couchdb.pid PID_FILE=%localstatedir%/run/couchdb.pid


Expand Down Expand Up @@ -181,8 +181,8 @@ start_couchdb () {
done done
command="`%ICU_CONFIG% --invoke` \ command="`%ICU_CONFIG% --invoke` \
%ERL% $interactive_option -smp auto -sasl errlog_type error +K true \ %ERL% $interactive_option -smp auto -sasl errlog_type error +K true \
-pa %localerlanglibdir%/couch-%version%/ebin \ -pa %localerlanglibdir%/%couchdbebindir% \
%localerlanglibdir%/mochiweb-r82/ebin \ %localerlanglibdir%/%mochiwebebindir% \
-eval \"application:load(inets)\" \ -eval \"application:load(inets)\" \
-eval \"application:load(crypto)\" \ -eval \"application:load(crypto)\" \
-eval \"application:load(couch)\" \ -eval \"application:load(couch)\" \
Expand Down
1 change: 1 addition & 0 deletions configure.ac
Expand Up @@ -248,6 +248,7 @@ AC_CONFIG_FILES([src/couchdb/couch.app.tpl])
AC_CONFIG_FILES([src/couchdb/Makefile]) AC_CONFIG_FILES([src/couchdb/Makefile])
AC_CONFIG_FILES([src/mochiweb/Makefile]) AC_CONFIG_FILES([src/mochiweb/Makefile])
AC_CONFIG_FILES([test/Makefile]) AC_CONFIG_FILES([test/Makefile])
AC_CONFIG_FILES([utils/Makefile])
AC_CONFIG_FILES([var/Makefile]) AC_CONFIG_FILES([var/Makefile])


AC_OUTPUT AC_OUTPUT
Expand Down
15 changes: 14 additions & 1 deletion etc/couchdb/Makefile.am
Expand Up @@ -11,14 +11,17 @@
## under the License. ## under the License.


couchprivlibdir = $(localerlanglibdir)/couch-$(version)/priv/lib couchprivlibdir = $(localerlanglibdir)/couch-$(version)/priv/lib
devcouchprivlibdir = $(abs_top_srcdir)/src/couchdb/.libs


localconf_DATA = default.ini localconf_DATA = default.ini
EXTRA_DIST = local.ini EXTRA_DIST = local.ini
noinst_DATA = default_dev.ini


CLEANFILES = $(localconf_DATA) CLEANFILES = $(localconf_DATA) $(noinst_DATA)


transform = @program_transform_name@ transform = @program_transform_name@
couchjs_command_name = `echo couchjs | sed '$(transform)'` couchjs_command_name = `echo couchjs | sed '$(transform)'`
couchjs_dev_command_name = `echo couchjs_dev | sed '$(transform)'`


default.ini: default.ini.tpl default.ini: default.ini.tpl
sed -e "s|%bindir%|$(bindir)|g" \ sed -e "s|%bindir%|$(bindir)|g" \
Expand All @@ -30,6 +33,16 @@ default.ini: default.ini.tpl
-e "s|%couchjs_command_name%|$(couchjs_command_name)|g" \ -e "s|%couchjs_command_name%|$(couchjs_command_name)|g" \
< $< > $@ < $< > $@


default_dev.ini: default.ini.tpl
sed -e "s|%bindir%|$(abs_top_srcdir)/bin|g" \
-e "s|%localconfdir%|$(abs_top_srcdir)/etc/couchdb|g" \
-e "s|%localdatadir%|$(abs_top_srcdir)/share|g" \
-e "s|%localstatelibdir%|$(abs_top_srcdir)/tmp/lib|g" \
-e "s|%localstatelogdir%|$(abs_top_srcdir)/tmp/log|g" \
-e "s|%couchprivlibdir%|$(devcouchprivlibdir)|g" \
-e "s|%couchjs_command_name%|$(couchjs_dev_command_name)|g" \
< $< > $@

install-data-hook: install-data-hook:
if test ! -f "$(DESTDIR)/$(localconfdir)/local.ini"; then \ if test ! -f "$(DESTDIR)/$(localconfdir)/local.ini"; then \
cp local.ini "$(DESTDIR)/$(localconfdir)/local.ini"; \ cp local.ini "$(DESTDIR)/$(localconfdir)/local.ini"; \
Expand Down
26 changes: 26 additions & 0 deletions etc/couchdb/local_dev.ini
@@ -0,0 +1,26 @@
; CouchDB Configuration Settings

; Custom settings should be made in this file. They will override settings
; in default.ini, but unlike changes made to default.ini, this file won't be
; overwritten on server upgrade.

[couchdb]
;max_document_size = 4294967296 ; bytes

[httpd]
;port = 5984
;bind_address = 127.0.0.1

[log]
;level = info

[update_notification]
;unique notifier name=/full/path/to/exe -with "cmd line arg"



[test]
foo = bar

[test]
foo = bar
41 changes: 41 additions & 0 deletions utils/Makefile.am
@@ -0,0 +1,41 @@
## Licensed under the Apache License, Version 2.0 (the "License"); you may not
## use this file except in compliance with the License. You may obtain a copy
## of the License at
##
## http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
## License for the specific language governing permissions and limitations
## under the License.

noinst_SCRIPTS = run

CLEANFILES = $(noinst_SCRIPTS)

transform = @program_transform_name@
couchdb_command_name = `echo couchdb | sed '$(transform)'`

run: ../bin/couchdb.tpl
sed -e "s|%ERL%|$(ERL)|g" \
-e "s|%ICU_CONFIG%|$(ICU_CONFIG)|g" \
-e "s|%bindir%|$(abs_top_srcdir)/bin|g" \
-e "s|%localerlanglibdir%|$(abs_top_srcdir)/src|g" \
-e "s|%mochiwebebindir%|mochiweb|g" \
-e "s|%couchdbebindir%|couchdb|g" \
-e "s|%defaultini%|default_dev.ini|g" \
-e "s|%localini%|local_dev.ini|g" \
-e "s|%localerlanglibdir%|$(abs_top_srcdir)/src|g" \
-e "s|%localconfdir%|$(abs_top_srcdir)/etc/couchdb|g" \
-e "s|%localstatelogdir%|$(abs_top_srcdir)/tmp/log|g" \
-e "s|%localstatelibdir%|$(abs_top_srcdir)/tmp/lib|g" \
-e "s|%localstatedir%|$(abs_top_srcdir)/tmp|g" \
-e "s|%bug_uri%|@bug_uri@|g" \
-e "s|%package_author_address%|@package_author_address@|g" \
-e "s|%package_author_name%|@package_author_name@|g" \
-e "s|%package_name%|@package_name@|g" \
-e "s|%version%|@version@|g" \
-e "s|%couchdb_command_name%|$(couchdb_command_name)|g" > \
$@ < $<
chmod +x $@

0 comments on commit efe07f9

Please sign in to comment.