aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile.local
Commit message (Collapse)AuthorAge
* 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.
* Makefile: Quote variables used as filenames in shell commandsGravatar Carl Worth2011-01-26
| | | | This allows support for filenames with spaces in them.
* configure: add options to disable emacs/zsh/bash and choose install dir.Gravatar Cédric Cabessa2011-01-26
| | | | | | | | | | | | | add --bashcompletiondir and --zshcompletiondir (like --emacslispdir) to choose installation dir for bash/zsh completion files Make some features optional: --without-emacs / --with-emacs=no do not install lisp file --without-bash-completion / --with-bash-completion=no do not install bash files --without-zsh-completion / --with-zsh-completion=no do not install zsh files By default, everything is enabled. You can reenable something with --with-feature=yes
* Makefile: Move the -Wl,-as-needed option earlier in the command line.Gravatar Carl Worth2010-11-01
| | | | | | | This option wasn't having the desired effect, and sure enough, the documentation states that it only affects the linking of libraries that appear after this option on the command line. So put it early for the desired effect.
* lib: Add GCC visibility(hidden) pragmas to private header files.Gravatar Carl Worth2010-11-01
| | | | | | This prevents any of the private functions from being leaked out through the library interface (at least when compiling with a recent-enough gcc to support the visibility pragma).
* Makefile: Build library with -Wl,--as-neededGravatar Carl Worth2010-11-01
| | | | | | Previously, we were building the final binary with this option, but not the library. The library can benefit from it as well, (as pointed out by Debian's lintian).
* configure: Add a check for the -Wl,--as-needed flag.Gravatar Carl Worth2010-10-30
| | | | | | This fits with our general build philosophy of checking at configure time for desired support, (rather than putting platform-specific conditionals into our Makefiles).
* build: only link to what we really useGravatar Felipe Contreras2010-10-30
| | | | | | At least linux has the -Wl,--as-needed option. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* configure: Test for flag to set rpathGravatar Carl Worth2010-10-30
| | | | | This is better than the previous approach which had a hardcoded Linux-specific value in the Makefile.
* Makefile: Fix notmuch binary to directly link against Xapian and GMime.Gravatar Carl Worth2010-10-29
| | | | | | Without this, trying to link with the gold linker would fail, (which meant that notmuch could not be compiled out of the box on recent Fedora, nor even on Debian when the binutils-gold package is installed).
* test: Fix test suite to integrate with our non-recursive Makefile system.Gravatar Carl Worth2010-09-17
| | | | | | | This avoids "make test" emitting messages from three (3!) recursive invocations of make. We change the invocations of the tests themselves to occur directly from the shell script rather than having the shell script invoke make again and using wildcards in the Makefile.
* make install: Run ldconfig or install a DT_RUNPATH in binary as appropriate.Gravatar Carl Worth2010-06-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Various users were confused as to why they couldn't run notmuch immediately after "make install", (with linker errors saying that libnotmuch.so could not be found). The errors came from two different causes: 1. The user had installed to a system library directory, but had not yet run ldconfig. 2. The user had installed to some non-system directory, and had not set the LD_LIBRARY_PATH variable. With this change we fix both problems (on Linux) without the user having to do anything additional. We first use ldconfig to find the system library directories. If the user is installing to one of these, then we run ldconfig as part of "make install". For case (2) we use the -rpath and --enable-new-dtags linker options to install a DT_RUNPATH entry in the binary. This entry tells the dynamic linker where to find libnotmuch. Without the --enable-new-dtags option only a DT_RPATH option would be installed, (which has the drawback of not allowing any override with the LD_LIBRARY_PATH variable). Distributions (such as Debian and Fedora) don't want to see binaries packaged with a DT_RPATH or DT_RUNPATH entry. This should be avoided automatically as long as the packages install to standard locations, (such as /usr/lib).
* Makefile: Improve the "what to do now" message from "make install"Gravatar Carl Worth2010-06-01
| | | | | | | | This was already telling the user how to run notmuch within emacs, but not how to just run the notmuch command-line interface, (which, as it turns out, is a prerequisite for running the emacs interface anyway). So add a small paragraph here.
* make release: Add Debian package building and uploadGravatar Carl Worth2010-04-16
| | | | Finally, a single button to push to do all the uploading.
* make release: Add a check that version and debian/changelog are consistentGravatar Carl Worth2010-04-16
| | | | | | | Eventually I'd like to automate this so that one or the other of these files is canonical and the other is generated from it. Until then, add this check to the release process to avoid a skewed release being shipped.
* Makefile: Avoid complaining about .first-build-message not existingGravatar Carl Worth2010-04-16
| | | | This cleans up a few spurious warnings from the build.
* Fix final link of notmuch binary to use C compiler if possible.Gravatar Carl Worth2010-04-16
| | | | | | | | | On Linux, a C program that depends on a C library which in turn depends on a C++ can be linked with the C compiler, (avoiding a direct link from the program to the C++ runtime libraries). Other platforms with less fancy linkers need to use the C++ compiler for this linking.
* Makefile: Fix conditionals to avoid calling git when no .git is presentGravatar Carl Worth2010-04-16
| | | | | Otherwise, building from a tar-file snapshot or release caused a bunch of error messages from unnecessary git invocations.