aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile.local
Commit message (Collapse)AuthorAge
* build: generate sh.config for feeding configure results to shell scriptsGravatar Jani Nikula2014-07-13
| | | | | | | | | Only include the relevant information. Amended by David Bremner: Use a prefix NOTMUCH_ to minimize collisions with other variables.
* build: check .git directory existence in srcdir (for out-of-tree builds)Gravatar Tomi Ollila2014-07-09
| | | | | | | | | | So that $(VERSION) and version.stamp uses the git-describe -based version data instead of the content of `version' file. For consistency also the git commands in Makefile[.local] target `verify-no-dirty-code' uses the git --git-dir=$srcdir/.git ... commands (inside ifeq($(IS_GIT),yes)). Attempting to make this target outside of the tree will fail in any case.
* build: add datacleanGravatar David Bremner2014-05-28
| | | | | | | | | It turns out to be inconvenient to delete the downloaded datafiles with distclean, so I propose a new target which does that instead. The closest conventional target is 'maintainer-clean'; the difference here is that having the original source tarball is not enough to reconstruct these files.
* build: remove .tar.gz.tmp files in cleanGravatar David Bremner2014-05-28
| | | | | Most people won't see these, but they annoy anyone running release or pre-release targets.
* Merge branch 'release'Gravatar David Bremner2014-05-28
|\ | | | | | | | | A point release is slowly being built on branch release. Merge those changes into master.
| * build: fix order of rpathGravatar Felipe Contreras2014-05-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In my system `pkg-config --libs talloc` returns 'Wl,-rpath,/usr/lib -ltalloc' (probably wrongly) which causes the final LDFLAGS to be something like '-Wl,-rpath,/usr/lib -Wl,-rpath,/opt/notmuch/lib', which causes the RUNPATH to be '/usr/lib:/opt/notmuch/lib', so basically defeating the whole purpose of RUNPATH. I noticed this when my /opt/notmuch/bin/notmuch (0.17) started updating the database after I updated the system (which updated the system's notmuch). This shouldn't happen. Let's move the RUNPATH flags before other external flags have a chance of screwing the build. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* | Merge tag '0.18_rc1'Gravatar David Bremner2014-05-04
|\| | | | | | | notmuch 0.18~rc1 release
| * build: use UPSTREAM_TAG and not VERSION to generate tarballGravatar David Bremner2014-05-04
| | | | | | | | The latter can have "~" in it, which is not legal for a git tag.
* | building from git: use --abbrev=7 for version stringGravatar Tomi Ollila2014-04-24
|/ | | | | | | Users may have set core.abbrev=n, where n != 7 in their git config file(s) which would give them different than expected version strings when building notmuch from git. This fixes the commit hash part of version string to 7 hexadecimal values.
* dump: support gzipped and atomic outputGravatar David Bremner2014-04-12
| | | | | | | | | | | | | The main goal is to support gzipped output for future internal calls (e.g. from notmuch-new) to notmuch_database_dump. The additional dependency is not very heavy since xapian already pulls in zlib. We want the dump to be "atomic", in the sense that after running the dump file is either present and complete, or not present. This avoids certain classes of mishaps involving overwriting a good backup with a bad or partial one.
* build: write version.stamp file containing $(VERSION) stringGravatar Tomi Ollila2014-04-10
| | | | | | | | | | This version file will be as prerequisite to the target files that use the version info for some purpose, like printing it for the user to examine. The contents of the version.stamp file is seldom read by the build system itself as the $(VERSION) variable has the same information. Thanks to Trevor, David and Mark for their contributions.
* doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MANGravatar David Bremner2014-03-18
| | | | | | | | This helps avoid build artifacts (namely, nroff and gzipped-nroff man pages) owned by root. The variables allow choosing which generator to use for the man page. These will be hooked to configure in a following commit.
* doc: install sphinx version of man pagesGravatar David Bremner2014-03-09
| | | | | | | | The python script mkdocdeps.py is used to import the list of man pages from the sphinx configuration to make. This will delete the (release only) target update-man-versions. This will be replaced in a followup commit.
* build: delete the default .SUFFIXESGravatar Tomi Ollila2014-01-25
| | | | | | | All implicit rules in notmuch Makefiles are "pattern rules"; Deleting the default suffixes (to support obsolete, old-fashioned "suffix rules") from make reduces the output of 'make -d' by 40 to 90 percent, helping e.g. debugging make problems.
* build: remove trailing '/.' when doing mkdir -p .deps/.Gravatar Tomi Ollila2014-01-13
| | | | | | | | When make variable $@ does not contain directory part, $(@D) resolves as '.'. In this case .deps/$(@D) is '.deps/.' In some systems `mkdir [-p] directory/.` fails. To make this compatible with more system substitute trailing '/.' (slashdot) with '' (empty string) whenever it occurs there.
* Place extra_cflags before CONFIGURE_CFLAGSGravatar Moritz Wilhelmy2013-10-25
| | | | | | | This ensures that the build will not attempt to use an existing notmuch.h when an older version of notmuch is already installed elsewhere (e.g. in /usr/local) and /usr/local/include is added to CONFIGURE_CFLAGS by one of the libraries (talloc, in my case)
* notmuch-compact: Initial commit of CLIGravatar Ben Gamari2013-10-09
| | | | | | Introduce the user command exposing the new compaction facility. Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
* reply: Use RFC 2822/MIME wholly for text format templateGravatar Austin Clements2013-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, reply's default text format used an odd mix of RFC 2045 MIME encoding for the reply template's body and some made-up RFC 2822-like UTF-8 format for the headers. The intent was to present the headers to the user in a nice, un-encoded format, but this assumed that whatever ultimately sent the email would RFC 2047-encode the headers, while at the same time the body was already RFC 2045 encoded, so it assumed that whatever sent the email would *not* re-encode the body. This can be fixed by either producing a fully decoded UTF-8 reply template, or a fully encoded MIME-compliant RFC 2822 message. This patch does the latter because it is a) Well-defined by RFC 2822 and MIME (while any UTF-8 format would be ad hoc). b) Ready to be piped to sendmail. The point of the text format is to be minimal, so a user should be able to pop up the template in whatever editor they want, edit it, and push it to sendmail. c) Consistent with frontend capabilities. If a frontend has the smarts to RFC 2047 encode the headers before sending the mail, it probably has the smarts to RFC 2047 decode them before presenting the template to a user for editing. Also, as far as I know, nothing automated consumes the reply text format, so changing this should not cause serious problems. (And if anything does still consume this format, it probably gets these encoding issues wrong anyway.)
* cli: add insert commandGravatar Peter Wang2013-06-29
| | | | | | | | | | | | The notmuch insert command reads a message from standard input, writes it to a Maildir folder, and then incorporates the message into the notmuch database. Essentially it moves the functionality of notmuch-deliver into notmuch. Though it could be used as an alternative to notmuch new, the reason I want this is to allow my notmuch frontend to add postponed or sent messages to the mail store and notmuch database, without resorting to another tool (e.g. notmuch-deliver) nor directly modifying the maildir.
* build: pass CPPFLAGS to C and C++ compilersGravatar David Bremner2013-06-02
| | | | This is used in particular by hardening flags.
* tag-util.[ch]: New files for common tagging routinesGravatar David Bremner2012-12-09
| | | | | | | | | These are meant to be shared between notmuch-tag and notmuch-restore. The bulk of the routines implement a "tag operation list" abstract data type act as a structured representation of a set of tag operations (typically coming from a single tag command or line of input).
* Adding an S-expression structured output printer.Gravatar Peter Feigl2012-12-08
| | | | | | | | | | | | | | | This commit adds a structured output printer for Lisp S-Expressions. Later commits will use this printer in notmuch search, show and reply. The structure is the same as json, but: - arrays are written as lists: ("foo" "bar" "baaz" 1 2 3) - maps are written as p-lists: (:key "value" :other-key "other-value") - true is written as t - false is written as nil - null is written as nil [ whitespace changes by db ]
* build: build parse-time-string as part of the notmuch lib and static cliGravatar Jani Nikula2012-10-31
|
* {., man}/Makefile.local: edit/remove release-checks.sh related targetsGravatar Tomi Ollila2012-09-05
| | | | | | | Use new target release-checks in place of verify-version-debian, verify-version-python verify-version-manpage. This target executes devel/release-checks.sh which does all the verifications the three dropped targets did, and some more.
* cli: Remove now-unused json.cGravatar Austin Clements2012-08-12
| | | | | The string buffer quoting functions in json.c have been superseded by the new sprinter interface and are no longer used. Remove them.
* build system: remove configure output in Make distclean.Gravatar David Bremner2012-08-02
| | | | | | | | | | | | Create a variable DISTCLEAN which contains a list of things to clean in the distclean target (in addition to running the clean target). The deleted comment seems to be false these days, since we do create files during configuration. Use "rm -rf" here as well in case we want to add directories to DISTCLEAN.
* build system: remove directories created by tests in "make clean"Gravatar David Bremner2012-08-02
| | | | | | | | | These extra directories cause problems for building on Debian twice in a row. In order to remove directories, we need to us "rm -rf" instead of "rm -f". So now we should be extra careful what we add to the variable CLEAN.
* Add structured output formatter for JSON and plain text (but don't use them ↵Gravatar craven@gmx.net2012-07-24
| | | | | | | | | | | | | yet). Using the new structured printer support in sprinter.h, implement sprinter_json_create, which returns a new JSON structured output formatter. The formatter prints output similar to the existing JSON, but with differences in whitespace (mostly newlines, --output=summary prints the entire message summary on one line, not split across multiple lines). Also implement a "structured" formatter for plain text that prints prefixed strings, to be used with notmuch-search.c plain text output.
* cli: new crypto structure to store crypto contexts and parameters, and ↵Gravatar Jameson Graef Rollins2012-06-10
| | | | | | | | | | | | | | | | functions to support it This new structure, notmuch_crypto_t, keeps all relevant crypto contexts and parameters together, and will make it easier to pass the stuff around and clean it up. The name of the crypto context inside this new struct will change, to reflect that it is actually a GPG context, which is a sub type of Crypto context. There are other types of Crypto contexts (Pkcs7 in particular, which we hope to support) so we want to be clear. The new crypto.c contains functions to return the proper context from the struct for a given protocol (and initialize it if needed), and to cleanup a struct by releasing the crypto contexts.
* Record dependencies during build instead of beforeGravatar Austin Clements2012-04-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the makefile created dependency files in a separate, first pass. In particular, include-ing the dependency files would cause make to attempt to rebuild those files using the dependency-generation rules in the makefile. Unfortunately, this approach required obtuse rules and silently delayed the start of the build process (by quite a bit on a clean tree without any dependency files). Worse, this required the dependency files to themselves depend on all of the headers the source file depended on, which meant that, if a header file was removed, the depedency file could not be updated because of a missing dependency (!), which would cause make to silently fail. This patch eliminates the dependency generation rules and instead generates dependency files as a side-effect of the regular build rule. On the first build, we don't need to know the dependencies beforehand; the object file doesn't exist, so it will be built anyway. On subsequent builds, if a header file is updated, the dependency rules generated by the previous build will force a rebuild. If a source file is updated, the dependency rules may be stale, but it doesn't matter because the updated source file will force a rebuild. In the final case above, the stale dependency rules may refer to a header file that no longer exists but is also no longer needed. In order to prevent this from breaking the build, we also pass gcc the -MP option, which generates phony targets for every depended-on header file, so make won't complain if it can't find them during a later build.
* Remove show-message.cGravatar Austin Clements2012-04-15
| | | | There are no more calls to show_message_body.
* Fix dependency generation for CLI sourcesGravatar Austin Clements2012-01-19
| | | | | | Previously, the dependency file list was generated before the CLI sources were added to SRCS, so dependency files weren't generated for CLI sources. This moves that code to after the CLI sources are added.
* build-system: update for split man pagesGravatar David Bremner2011-12-31
| | | | | | | | | | | | | | | | | | - We have to remove the installation of notmuch.1.gz from the top level Makefile.local. - Man pages with multiple names are handled by making relative symlinks in the install-man target. - update version tests and convenience rules for split man pages The man page version test still only checks notmuch.1, but the location is updated. update-man-versions is longer than the one-line previously in update-versions mainly because I decided to take the high road and stick to POSIX sed (thus, no sed -i). The sed regex itself is more complicated to cope with variations in the headers.
* Introduce a generic tree-like abstraction for MIME traversal.Gravatar Austin Clements2011-12-25
| | | | | | | | | | | | | | This wraps all of the complex MIME part handling in a single, simple function that gets part N from *any* MIME object, so traversing a MIME part tree becomes a two-line for loop. Furthermore, the MIME node structure provides easy access to envelopes for message parts as well as cryptographic information. This code is directly derived from the current show_message_body code (much of it is identical), but the control relation is inverted: instead of show_message_body controlling the traversal of the MIME structure and invoking callbacks, the caller controls the traversal of the MIME structure.
* build-system: use a shell variable for TMPFILE in debian-snapshotGravatar David Bremner2011-12-18
| | | | | | | | | | | | | | | Aaron Ecay points out in id:"1324136185-4509-1-git-send-email-aaronecay@gmail.com" that the mktemp in debian-snapshot: TMPFILE := $(shell mktemp) Is being evaluated for every target. As best I can tell, this is because make is evaluating the right hand side, even though it is not doing the assignment. Of course, it isn't quite as nice to edit with the line continuations, but it is ideomatic make.
* cli: introduce the concept of user defined hooksGravatar Jani Nikula2011-12-11
| | | | | | | | | | | | Add mechanism for running user defined hooks. Hooks are executables or symlinks to executables stored under the new notmuch hooks directory, <database-path>/.notmuch/hooks. No hooks are introduced here, but adding support for a hook is now a simple matter of calling the new notmuch_run_hook() function at an appropriate location with the hook name. Signed-off-by: Jani Nikula <jani@nikula.org>
* command-line-arguments.[ch]: new argument parsing framework for notmuch.Gravatar David Bremner2011-12-08
| | | | | | | | | | As we noticed when Jani kindly converted things to getopt_long, much of the work in argument parsing in notmuch is due to the the key-value style arguments like --format=(raw|json|text). The framework here provides positional arguments, simple switches, and --key=value style arguments that can take a value being an integer, a string, or one of a set of keywords.
* Merge branch 'release'Gravatar David Bremner2011-12-06
|\ | | | | | | | | | | | | Conflicts: NEWS Conflicts resolved by inserting the 0.10.2 stanza before 0.11
* | make release: remove LATEST-$(PACKAGE)-*Gravatar Tomi Ollila2011-12-06
| | | | | | | | | | | | | | The tar file of particular package (notmuch in this case) is named as $(PACKAGE)-$(VERSION).tar.gz. Therefore the best way to remove previous link to LATEST is to remove all files beginning with LATEST-$(PACKAGE)- and not relying how $(VERSION) string is constructed.
* | have LATEST-notmuch-<version>.tar.gz on releases web pageGravatar Tomi Ollila2011-12-06
| | | | | | | | | | | | | | | | | | | | The notmuchmail/releases page used to have LATEST-notmuch-<version> to link to the latest notmuch source tarball. This is confusing on web page and on disk when the file has been downloaded. This change looks a bit inconsistent with the 'rm' command just executed before. $(TAR_FILE) is defined (currently) as $(PACKAGE)-$(VERSION).tar.gz; as long as the prefix stays $(PACKAGE)-$(VERSION) and version begins with a digit then this line is good in execution point of view.
| * build system: allow decreasing debian versions for debian-snapshotGravatar David Bremner2011-12-05
| | | | | | | | | | This allows the debian-snapshot to continue working between when debian/changelog is updated and when the release is tagged.
* | make release: use sed to check debian versionGravatar Tomi Ollila2011-11-24
| | | | | | | | | | | | Use common sed tool instead of dpkg-parsechangelog (which is usually available on debian systems only) to verify that debian version information is consistent with version file.
* | make release: added goal verify-version-manpageGravatar Tomi Ollila2011-11-24
| | | | | | | | | | Check that the version mentioned in notmuch manual page is consistent with the version file.
* | make release: verify-version-*: change comparison logicGravatar Tomi Ollila2011-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | verfy-version-debian, verify-version-python and verify-version-components checked noneqality of the comparison strings and if got "positive" answer then made that goal fail. But in case of the test ([ ]) execution failed it never got to the 'then' part of the line (and the 'if [ ... ] then ... fi ' construct doesn't make the script line fail in case of problems inside [ ]. This commit inverses the "logic", so that only if the comparison for equality succeeds the script line will exit with 0 and execution can continue past the failure case to the next line (executed by another shell) with '@echo done'
* | build system: add target update-versions to propagate versionGravatar David Bremner2011-11-19
| | | | | | | | | | | | The version from file "version" is propagated to the man page and the python bindings via sed. Note that the git version is ignored because of the check for MAKECMDGOALS.
* | build system: use $(filter ...) to test MAKECMDGOALSGravatar David Bremner2011-11-19
|/ | | | | This makes the test easier to extend to more targets. It also corrects a bug where "special" targets were only detected when given alone.
* build system: tweak VERSION so that debian-snapshot works for N.NN~rcNGravatar David Bremner2011-11-17
| | | | | The problem was that the version is recovered from the git tag, which has the ~ replaced by _. This broke the sequencing of version numbers.
* xutil.c: remove duplicate copies, create new library libutil.a to contain xutil.Gravatar David Bremner2011-10-30
| | | | | | | We keep the lib/xutil.c version. As a consequence, also factor out _internal_error and associated macros. It might be overkill to make a new file error_util.c for this, but _internal_error does not really belong in database.cc.
* build system: target to make a Debian snapshot package.Gravatar David Bremner2011-10-28
| | | | | | | | | | Currently this builds a native package, but since the source package is throw away, it should not matter too much, except for the extra warnings from lintian. The extra +1 is so that if $(VERSION) is the same as the last released version (for example outside a git repo) then the versions still order correctly.
* build system: remove dashes from git-describe generated version.Gravatar David Bremner2011-10-28
| | | | | This makes it less confusing with released Debian versions, now that we have non-native Debian versions.