unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: emacs-devel@gnu.org
Subject: Re: build broken: no defun org-float-time.  A workaround.
Date: Tue, 8 Sep 2009 18:17:35 +0000	[thread overview]
Message-ID: <20090908181735.GA11465@muc.de> (raw)
In-Reply-To: <jwvocpl9ydx.fsf-monnier+emacs@gnu.org>

Hi, everybody,

On Tue, Sep 08, 2009 at 12:48:50PM -0400, Stefan Monnier wrote:
> >> Always run `make bootstrap' if you don't want to deal with these issues.

> > That's horrible.  It's very slow, and if the build breaks for any
> > other reason (careless commission), you haven't even got the bulk of
> > your old build left.

> The problem is that we don't have the necessary code right now to
> generate the needed dependency graph, so wile "cvs update; make" often
> works, it sometimes fails for lack of dependency info, in which case
> "make bootstrap" works around the problem.

How about this for a workaround?  Before doing any byte compilation, you
scan the .../lisp directory for stale .elc files, and rename them all.
That way, the byte compiler is forced to load the new .el files in
response to `require', and the like.  At the end of the process, you
either delete or unrename the stale files as appropriate.

Here's a script I've hacked together which does this.  Is it easy to
implement this idea in the makefiles?

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#! /bin/bash
##############################################################################
#
#   m a k e - e m a c s . s h
#
# Invoke make, having first renamed stale .elc files to prevent them being
# loaded spuriously by the byte compiler.  Afterwards, delete or restore each
# renamed file appropriately.
#
# Call this script from the top level of an Emacs tree.
##############################################################################
OLD=ksiwrjcy

STALES=$(for f in `find . -name '*.el'` ; do
            if [ -f ${f}c -a ${f}c -ot $f ] ; then echo ${f}c ; fi
        done)
echo "Stale files: $STALES" >&2
sleep 3
echo

for f in $STALES ; do mv ${f}{,.$OLD} ; done

make

for f in $STALES ; do
    if [ -f $f ]
    then rm ${f}.$OLD
    else mv ${f}{.$OLD,}
        echo $f wasn\'t remade >&2
    fi
done
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).




  reply	other threads:[~2009-09-08 18:17 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-07  9:28 build broken: no defun org-float-time. Who's guilty, and what does he propose? Alan Mackenzie
2009-09-07  9:47 ` Andreas Schwab
2009-09-07  9:52 ` joakim
2009-09-07 10:09   ` Lennart Borgman
2009-09-07 11:37     ` joakim
2009-09-07 10:30   ` Jan D.
2009-09-07 17:42     ` Eli Zaretskii
2009-09-07 17:59       ` Ken Raeburn
2009-09-07 18:32         ` Drew Adams
2009-09-07 18:42           ` Lennart Borgman
2009-09-07 19:22             ` Ken Raeburn
2009-09-07 19:03         ` Glenn Morris
2009-09-07 19:20           ` Drew Adams
2009-09-07 20:08           ` Eli Zaretskii
2009-09-07 21:43             ` more reliable `make' Glenn Morris
2009-09-08 16:46               ` Stefan Monnier
2009-09-10  6:28                 ` Glenn Morris
2009-09-10 13:37                   ` Stefan Monnier
2009-09-07 20:59           ` build broken: no defun org-float-time. Who's guilty, and what does he propose? joakim
2009-09-07 21:39             ` Glenn Morris
2009-09-07 21:55               ` joakim
2009-09-07 21:13           ` Alan Mackenzie
2009-09-08 16:48             ` Stefan Monnier
2009-09-08 18:17               ` Alan Mackenzie [this message]
2009-09-08 19:08                 ` build broken: no defun org-float-time. A workaround Ken Raeburn
2009-09-07 20:06         ` build broken: no defun org-float-time. Who's guilty, and what does he propose? Eli Zaretskii
2009-09-07 23:39           ` Ken Raeburn
2009-09-08  2:41             ` Stephen J. Turnbull
2009-09-08  3:20             ` Eli Zaretskii
2009-09-08  7:54               ` Ken Raeburn
2009-09-08 17:47                 ` Eli Zaretskii
2009-09-08 18:32                   ` Ken Raeburn
2009-09-08 17:01           ` Stefan Monnier
2009-09-08 17:51             ` Eli Zaretskii
2009-09-09  3:14               ` Stefan Monnier
2009-09-08  2:37       ` Stephen J. Turnbull
2009-09-08  3:14         ` Eli Zaretskii
2009-09-08 17:11   ` Stefan Monnier
2009-09-07 10:05 ` Miles Bader
2009-09-07 11:15   ` joakim
2009-09-07 13:35   ` Alan Mackenzie

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.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=20090908181735.GA11465@muc.de \
    --to=acm@muc.de \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    /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.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).