emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Holger Hoefling <hhoeflin@gmail.com>
To: Carsten Dominik <carsten.dominik@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Not overwriting unchanged source code files when tangling
Date: Fri, 18 Nov 2011 20:01:55 +0100	[thread overview]
Message-ID: <CAFDswJtMzFZgRQqsFtiQNT7c1uFE7HV4kek5j9akx1yAdWZZEg@mail.gmail.com> (raw)
In-Reply-To: <D8B8E4A0-4476-4949-A738-5E0BF16A8146@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2505 bytes --]

Hi Carsten,

thanks for the suggestion, but as I agree with Brian. If there is more than
one source file in the org-file, then the whole project would still be
recompiled, not just the updated file.

To be more exact, I actually don't want to compile things, but run R
scripts using make. So the waiting time if a computationally intensive step
is repeated although it is not necessary can be substantial.

I wonder how difficult the following change would be (no emacs lisp
experience, also do not know the org source code):

- would it be possible to write out the source files when tangling into a
temporary directory, then compare to the actual target files and overwrite
only if something has changed? Then the time stamps would stay fixed.
Hopefully, this would not involve too much work:
- creating temporary files and remembering the mapping to true files
- tangling out as usual into temporary files (so probably little change
there)
- compare temporary file to true file (does emacs already have a diff
utility that could be used?)
- overwrite true file if any changes
- delete temporary files

Especially, with this method no dependencies would be necessary and it
would not be necessary to keep track in the org files which source blocks
have been changed since the last tangling

Thank you for your suggestion

Holger

On Fri, Nov 18, 2011 at 6:02 PM, Carsten Dominik
<carsten.dominik@gmail.com>wrote:

>
> On 18.11.2011, at 14:17, Holger Hoefling wrote:
>
> > Hi,
> >
> > I have a problem/request for org-mode and was looking for help. I am
> using org-mode to write source code files and tangle them out. I want to
> compile them using make. My problem now is that org-mode overwrites the old
> files every time I tangle them out, therefore also updating the time stamp
> - even if nothing has changed. Subsequently, when I run make, everything
> gets recompiled, not just the changed source code files as all time stamps
> have changed.
> >
> > Is there an option for org-mode to only overwrite source code files that
> get tangled out if they have truly changed?
>
> How about changing the make file so that the dependence is on the Org
> file, not on the source file?
> You could then arrange for make to call emacs in batch-mode to tangle the
> source file and then compile it?
>
> Something along the lines of.... (untested, and probably wrong in this
> way...)
>
> file.o: somefile.org
>   emacs -batch --eval '(org-babel-tangle-file "somefile.org")'
>   cc file.o ....
>
> - Carsten

[-- Attachment #2: Type: text/html, Size: 3062 bytes --]

  parent reply	other threads:[~2011-11-18 19:02 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-18 13:17 Not overwriting unchanged source code files when tangling Holger Hoefling
2011-11-18 14:23 ` Brian Wightman
2011-11-18 16:46   ` Tom Prince
2011-11-18 17:14     ` Brian Wightman
2011-11-18 14:27 ` Sebastien Vauban
2011-11-18 17:02 ` Carsten Dominik
2011-11-18 17:28   ` Brian Wightman
2011-11-18 19:42     ` Eric Schulte
2011-11-18 20:10       ` Achim Gratz
2011-11-18 20:24         ` Eric Schulte
2011-11-19  0:49       ` Holger Hoefling
2011-11-18 19:01   ` Holger Hoefling [this message]
2011-11-18 19:32     ` Nick Dokos
2011-11-19  0:51       ` Holger Hoefling
2011-11-19  4:00         ` Nick Dokos
2011-11-19  6:58           ` Holger Hoefling
2011-11-19 18:32             ` Holger Hoefling
2011-11-22 21:17               ` Allen S. Rout
2011-11-22 21:43                 ` Nick Dokos
2011-11-19 18:06     ` cberry
2011-11-18 19:51 ` Achim Gratz
  -- strict thread matches above, loose matches on Subject: below --
2011-11-19 15:31 Rustom Mody
2011-11-19 15:51 ` Rustom Mody

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAFDswJtMzFZgRQqsFtiQNT7c1uFE7HV4kek5j9akx1yAdWZZEg@mail.gmail.com \
    --to=hhoeflin@gmail.com \
    --cc=carsten.dominik@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).