[PATCH 06/10] cli: Introduce "notmuch address" command
[notmuch-archives.git] / 77 / c0ee99b5babe355c5f6db00d06319c8b8b6ced
1 Return-Path: <tomi.ollila@iki.fi>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id 99E47431FBC\r
6         for <notmuch@notmuchmail.org>; Fri, 14 Feb 2014 11:24:28 -0800 (PST)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: 0\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
12         autolearn=disabled\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id bQ-++ifRqVFv for <notmuch@notmuchmail.org>;\r
16         Fri, 14 Feb 2014 11:24:23 -0800 (PST)\r
17 Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
18         by olra.theworths.org (Postfix) with ESMTP id 8C7CF431FB6\r
19         for <notmuch@notmuchmail.org>; Fri, 14 Feb 2014 11:24:23 -0800 (PST)\r
20 Received: from guru.guru-group.fi (localhost [IPv6:::1])\r
21         by guru.guru-group.fi (Postfix) with ESMTP id 8D71C1000FA;\r
22         Fri, 14 Feb 2014 21:24:15 +0200 (EET)\r
23 From: Tomi Ollila <tomi.ollila@iki.fi>\r
24 To: Austin Clements <amdragon@MIT.EDU>\r
25 Subject: Re: [PATCH 1/1] emacs: always write emacs/.eldeps when the target is\r
26         remade\r
27 In-Reply-To: <20140213074944.GY4375@mit.edu>\r
28 References: <1390645309-2326-1-git-send-email-tomi.ollila@iki.fi>\r
29         <20140213071026.GX4375@mit.edu> <m2sirn1nik.fsf@guru.guru-group.fi>\r
30         <20140213074944.GY4375@mit.edu>\r
31 User-Agent: Notmuch/0.17+69~g761b031 (http://notmuchmail.org) Emacs/24.3.1\r
32         (x86_64-unknown-linux-gnu)\r
33 X-Face: HhBM'cA~<r"^Xv\KRN0P{vn'Y"Kd;zg_y3S[4)KSN~s?O\"QPoL\r
34         $[Xv_BD:i/F$WiEWax}R(MPS`^UaptOGD`*/=@\1lKoVa9tnrg0TW?"r7aRtgk[F\r
35         !)g;OY^,BjTbr)Np:%c_o'jj,Z\r
36 Date: Fri, 14 Feb 2014 21:24:15 +0200\r
37 Message-ID: <m2bny9ebvk.fsf@guru.guru-group.fi>\r
38 MIME-Version: 1.0\r
39 Content-Type: text/plain\r
40 Cc: notmuch@notmuchmail.org\r
41 X-BeenThere: notmuch@notmuchmail.org\r
42 X-Mailman-Version: 2.1.13\r
43 Precedence: list\r
44 List-Id: "Use and development of the notmuch mail system."\r
45         <notmuch.notmuchmail.org>\r
46 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
47         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
48 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
49 List-Post: <mailto:notmuch@notmuchmail.org>\r
50 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
51 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
52         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
53 X-List-Received-Date: Fri, 14 Feb 2014 19:24:28 -0000\r
54 \r
55 On Thu, Feb 13 2014, Austin Clements <amdragon@MIT.EDU> wrote:\r
56 \r
57 > Quoth Tomi Ollila on Feb 13 at  9:26 am:\r
58 >> On Thu, Feb 13 2014, Austin Clements <amdragon@MIT.EDU> wrote:\r
59 >> \r
60 >> > Quoth Tomi Ollila on Jan 25 at 12:21 pm:\r
61 >> >> So that the target is newer than its prerequisites.\r
62 >> >> ---\r
63 >> >>  emacs/Makefile.local | 3 +--\r
64 >> >>  1 file changed, 1 insertion(+), 2 deletions(-)\r
65 >> >> \r
66 >> >> diff --git a/emacs/Makefile.local b/emacs/Makefile.local\r
67 >> >> index 42bfbd9..d5d402e 100644\r
68 >> >> --- a/emacs/Makefile.local\r
69 >> >> +++ b/emacs/Makefile.local\r
70 >> >> @@ -32,8 +32,7 @@ emacs_bytecode = $(emacs_sources:.el=.elc)\r
71 >> >>  ifeq ($(HAVE_EMACS),1)\r
72 >> >>  $(dir)/.eldeps: $(dir)/Makefile.local $(dir)/make-deps.el $(emacs_sources)\r
73 >> >>   $(call quiet,EMACS) --directory emacs -batch -l make-deps.el \\r
74 >> >> -         -f batch-make-deps $(emacs_sources) > $@.tmp && \\r
75 >> >> -         (cmp -s $@.tmp $@ || mv $@.tmp $@)\r
76 >> >> +         -f batch-make-deps $(emacs_sources) > $@.tmp && mv $@.tmp $@\r
77 >> >>  -include $(dir)/.eldeps\r
78 >> >>  endif\r
79 >> >>  CLEAN+=$(dir)/.eldeps $(dir)/.eldeps.tmp\r
80 >> >\r
81 >> > Is this just so the rule doesn't get run again on the next make\r
82 >> > invocation (unless, of course, a dependent changed)?\r
83 >> \r
84 >> Basically yes. I did multiple builds in rapid succession when developing\r
85 >> something and this thing confused me quite a lot in the beginning...\r
86 >> \r
87 >> > Interestingly, if any of the dependents have changed, but in ways that\r
88 >> > don't affect .eldeps, this change will make the build more expensive\r
89 >> > because it will trigger a make restart after .eldeps is updated.\r
90 >> \r
91 >> I wondered what was the reason for the recipe you've chosen here, has\r
92 >> it something to do with inodes or something ;) (and were going to ask\r
93 >> an alternative to touch (or even : > $@) the target...\r
94 >> \r
95 >> ... but now I understand. E.g. change in notmuch-lib.el will cause *all* \r
96 >> .el files to be re-bytecompiled after this change. \r
97 >\r
98 > This is unrelated to the cmp in the recipe.  A change in\r
99 > notmuch-lib.el *must* cause almost all .el files to be recompiled\r
100 > because they almost all require it and may use macros from it.  If you\r
101 > touch, e.g., notmuch-hello.el, you'll see that very little is rebuilt\r
102 > (with or without this patch).\r
103 >\r
104 >> An alternative to this patch would be adding a message to the rule\r
105 >> which informs user to touch .eldeps to avoid re-doing .eldeps if\r
106 >> that irritates one :D\r
107 >> \r
108 >> something like:\r
109 >> \r
110 >> (cmp -s $@.tmp $@ && \\r
111 >>      echo "touch $@ to avoid redoing this target" || mv $@.tmp $@)\r
112 >\r
113 > I think this patch is good as it is; I was just pointing out that the\r
114 > change also has a performance drawback in some situations.  (Knowing\r
115 > make, there's probably *some* way to get the best of both worlds and\r
116 > it's probably really ugly.)\r
117 \r
118 Ah, now I understand, because emacs/Makefile.local includes emacs/.eldeps\r
119 when it notices mtime of emacs/.eldeps changes it restarts itself...\r
120 \r
121 ... to compare with current behaviour:\r
122 \r
123 $ make\r
124 ...\r
125 $ touch emacs/notmuch.el\r
126 $ make\r
127 ...\r
128 $ make\r
129 Use "make V=1" to see the verbose compile lines.\r
130 EMACS emacs/.eldeps\r
131 make: Nothing to be done for `all'.\r
132 $ make\r
133 Use "make V=1" to see the verbose compile lines.\r
134 EMACS emacs/.eldeps\r
135 make: Nothing to be done for `all'.\r
136 $ make\r
137 Use "make V=1" to see the verbose compile lines.\r
138 EMACS emacs/.eldeps\r
139 make: Nothing to be done for `all'.\r
140 \r
141 It will rerun emacs -L emacs -batch -l make-deps.el -f batch-make-deps ...\r
142 over and over again...\r
143 \r
144 I thought I figured out a solution involving .eldeps.stamp file but\r
145 that turned out to be no-go... (circular dependency netween .eldeps.stamp\r
146 and Makefile.local).\r
147 \r
148 So, with this if one edits emacs/* files and keeps building byte-compiled\r
149 versions often, make will both run EMACS emacs/.eldeps and restarting\r
150 -- and when moving to edit other files both of the above stops. Without\r
151 this change after editing emacs/* files EMACS emacs/.eldeps will be\r
152 executed until it is touched or make clean executed (I wonder how make\r
153 handles rebuilding emacs/.eldeps while doing make clean ;)\r
154 \r
155 \r
156 Tomi\r