aboutsummaryrefslogtreecommitdiff
path: root/Makefile.local
AgeCommit message (Collapse)Author
2015-10-30release: disable wget certificate checkdebian/0.21-10.21David Bremner
this is a minor security hole, but no worse than what we had before. In particular the worst that happens is someone prevents us from making a release. Which is hardly worth the trouble of jacking the URL.
2015-09-20cli: add utility routine to print error status.David Bremner
No attention to formatting here, initially just focus on getting the relevant strings out of the library.
2015-06-12build: integrate building ruby bindings into notmuch build processDavid Bremner
Because ruby generates a Makefile, we have to use recursive make. Because mkmf.rb hardcodes the name Makefile, put our Makefile{.local} in the parent directory.
2015-03-08python: replace hardcoding of SONAME versionDavid Bremner
Failing to update this string in globals.py causes failures when the SONAME changes. In order to hopefully reduce the number of such errors, automate the process of setting the SONAME in the python bindings.
2014-07-13build: generate sh.config for feeding configure results to shell scriptsJani Nikula
Only include the relevant information. Amended by David Bremner: Use a prefix NOTMUCH_ to minimize collisions with other variables.
2014-07-09build: check .git directory existence in srcdir (for out-of-tree builds)Tomi Ollila
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.
2014-05-28build: add datacleanDavid Bremner
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.
2014-05-28build: remove .tar.gz.tmp files in cleanDavid Bremner
Most people won't see these, but they annoy anyone running release or pre-release targets.
2014-05-28Merge branch 'release'David Bremner
A point release is slowly being built on branch release. Merge those changes into master.
2014-05-28build: fix order of rpathFelipe Contreras
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>
2014-05-04Merge tag '0.18_rc1'David Bremner
notmuch 0.18~rc1 release
2014-05-04build: use UPSTREAM_TAG and not VERSION to generate tarballdebian/0.18_rc1-10.18_rc1David Bremner
The latter can have "~" in it, which is not legal for a git tag.
2014-04-24building from git: use --abbrev=7 for version stringTomi Ollila
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.
2014-04-12dump: support gzipped and atomic outputDavid Bremner
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.
2014-04-10build: write version.stamp file containing $(VERSION) stringTomi Ollila
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.
2014-03-18doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MANDavid Bremner
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.
2014-03-09doc: install sphinx version of man pagesDavid Bremner
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.
2014-01-25build: delete the default .SUFFIXESTomi Ollila
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.
2014-01-13build: remove trailing '/.' when doing mkdir -p .deps/.Tomi Ollila
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.
2013-10-25Place extra_cflags before CONFIGURE_CFLAGSMoritz Wilhelmy
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)
2013-10-09notmuch-compact: Initial commit of CLIBen Gamari
Introduce the user command exposing the new compaction facility. Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
2013-08-17reply: Use RFC 2822/MIME wholly for text format templateAustin Clements
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.)
2013-06-29cli: add insert commandPeter Wang
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.
2013-06-02build: pass CPPFLAGS to C and C++ compilersDavid Bremner
This is used in particular by hardening flags.
2012-12-09tag-util.[ch]: New files for common tagging routinesDavid Bremner
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).
2012-12-08Adding an S-expression structured output printer.Peter Feigl
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 ]
2012-10-31build: build parse-time-string as part of the notmuch lib and static cliJani Nikula
2012-09-05{., man}/Makefile.local: edit/remove release-checks.sh related targetsTomi Ollila
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.
2012-08-12cli: Remove now-unused json.cAustin Clements
The string buffer quoting functions in json.c have been superseded by the new sprinter interface and are no longer used. Remove them.
2012-08-02build system: remove configure output in Make distclean.David Bremner
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.
2012-08-02build system: remove directories created by tests in "make clean"David Bremner
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.
2012-07-24Add structured output formatter for JSON and plain text (but don't use them yet).craven@gmx.net
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.
2012-06-10cli: new crypto structure to store crypto contexts and parameters, and functions to support itJameson Graef Rollins
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.
2012-04-15Record dependencies during build instead of beforeAustin Clements
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.
2012-04-15Remove show-message.cAustin Clements
There are no more calls to show_message_body.
2012-01-19Fix dependency generation for CLI sourcesAustin Clements
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.
2011-12-31build-system: update for split man pagesDavid Bremner
- 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.
2011-12-25Introduce a generic tree-like abstraction for MIME traversal.Austin Clements
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.
2011-12-18build-system: use a shell variable for TMPFILE in debian-snapshotDavid Bremner
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.
2011-12-11cli: introduce the concept of user defined hooksJani Nikula
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>
2011-12-08command-line-arguments.[ch]: new argument parsing framework for notmuch.David Bremner
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.
2011-12-06Merge branch 'release'David Bremner
Conflicts: NEWS Conflicts resolved by inserting the 0.10.2 stanza before 0.11
2011-12-06make release: remove LATEST-$(PACKAGE)-*Tomi Ollila
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.
2011-12-06have LATEST-notmuch-<version>.tar.gz on releases web pageTomi Ollila
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.
2011-12-05build system: allow decreasing debian versions for debian-snapshotDavid Bremner
This allows the debian-snapshot to continue working between when debian/changelog is updated and when the release is tagged.
2011-11-24make release: use sed to check debian versionTomi Ollila
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.
2011-11-24make release: added goal verify-version-manpageTomi Ollila
Check that the version mentioned in notmuch manual page is consistent with the version file.
2011-11-24make release: verify-version-*: change comparison logicTomi Ollila
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'
2011-11-19build system: add target update-versions to propagate versionDavid Bremner
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.
2011-11-19build system: use $(filter ...) to test MAKECMDGOALSDavid Bremner
This makes the test easier to extend to more targets. It also corrects a bug where "special" targets were only detected when given alone.