aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile.local
Commit message (Collapse)AuthorAge
* 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.
* build system: Check that python bindings have consistent version when releasingGravatar David Bremner2011-09-05
| | | | | | | Thanks to Sebastian Spaeth breaking out version.py, this can be done without loading notmuch.py, or using sed. version.py is not (yet) autogenerated because it seems more important to minimize the differences between the tagged version and the tarball.
* build-system: Add pre-release targetGravatar David Bremner2011-07-29
| | | | | | | This is a lighter weight version of the release target, intended to support uploading release candidates to Debian. As a side effect, filter ~ out of VERSION to make tag names.
* build-system: tag debian-version as part of the release targetGravatar David Bremner2011-07-17
| | | | | | This allows, e.g. gitpkg debian/0.x-1 to do the right thing. It also helps enforce the convention that Debian upload -1 is identical to the release tarball.
* build-system: update version check to support non-native packages.Gravatar David Bremner2011-07-17
| | | | | We could be a bit more flexible about this and support optional Debian versions, but for the moment, we pick a policy and stick to it.
* build-system: guard parts irrevokable parts of release target with REALLY_UPLOADGravatar David Bremner2011-07-17
| | | | | | | This supports both testing and use by non-upload privileged users. Along with previous commits in the series, this lets one do a dry run of the release process and created a tarball, signature file, and release announcement to inspect before uploading.
* build-system: use signed tag to make tar file, if available.Gravatar David Bremner2011-07-17
| | | | | This as the advantage that "make VERSION=n.m dist" will work correctly even if the wrong branch happens to be checked out.
* build-system: tag earlier in the release process.Gravatar David Bremner2011-07-17
| | | | If tagging fails, we really don't want to upload tarballs.
* build-system: remove use of git-buildpackage, dput. Add pristine-tar.Gravatar David Bremner2011-07-17
| | | | | | | | | | | | The previous setup was dependent on the git-buildpackage configuration to find the resulting tar file, and consequently a bit fragile. We use pristine-tar instead to save a checksum-identical copy of the tar file. This will also faciliate "non-native" debian packages, if desired. dput again depends on the local configuration, and mainly is a bit too brave for me to do automatically.
* build-system: run make clean before testing.Gravatar David Bremner2011-07-17
| | | | | | The reasoning is that we might have some error in the build system that causes something not to be rebuilt; this would potentially have the tests run on the wrong version of the code.
* build-system: replace use of ssh with wget for checking the websiteGravatar David Bremner2011-07-17
| | | | | | | The idea is to see if the version we are already releasing exists on the notmuch website. Using wget allows more people to run this target, and also allows people with ssh access to run it without access to their keys.
* Use stock GMimeSession by defaultGravatar Daniel Kahn Gillmor2011-06-03
| | | | | | | | | | | | Our use of GMimeSession was unneeded boilerplate, and we weren't doing anything with it. This simplifies and clarifies that assumption. If we want to do anything fancier later, the examples in the gmime source are a reasonable source to work from in defining a new GMimeSession derivative. Since GMimeSession is going away in GMime 2.6, though, i don't recommend using it.
* Add signature verification of PGP/MIME-signed parts with --verify.Gravatar Jameson Graef Rollins2011-05-27
| | | | | | | | | | | | | | | | This is primarily for notmuch-show, although the functionality is added to show-message. Once signatures are processed a new part_sigstatus formatter is emitted, and the entire multipart/signed part is replaced with the contents of the signed part. At the moment only a json part_sigstatus formatting function is available. Emacs support to follow. The original work for this patch was done by Daniel Kahn Gillmor <dkg@fifthhorseman.net> whose help with this functionality I greatly appreciate.
* notmuch: Implement search-tags as an alias for "search --output=tags *"Gravatar Carl Worth2011-05-24
| | | | | | | | | | | Ever since we added support for "notmuch search --output=tags" the "notmuch search-tags" command has been redundant. The recent addition of alias support makes it easy to drop the explicit search-tags command in favor of a simple alias that runs "notmuch search --output=tags *". So there's no longer any documentation of the search-tags command, but existing scripts will not break at all.
* build: Add support for non-source-directory builds.Gravatar Carl Worth2011-03-09
| | | | | | | | | | | | | | Such as: mkdir build cd build ../configure make This is implemented by having the configure script set a srcdir variable in Makefile.config, and then sprinkling $(srcdir) into various make rules. We also use vpath directives to convince GNU make to find the source files from the original source directory.