From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: "Eric M. Ludlam" Newsgroups: gmane.emacs.devel Subject: Re: `make' written in elisp Date: Tue, 4 Jan 2005 11:10:07 -0500 Message-ID: <200501041610.j04GA7a2011824@projectile.siege-engine.com> References: NNTP-Posting-Host: deer.gmane.org X-Trace: sea.gmane.org 1104855100 12960 80.91.229.6 (4 Jan 2005 16:11:40 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 4 Jan 2005 16:11:40 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Jan 04 17:11:26 2005 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1ClrHJ-0006JB-00 for ; Tue, 04 Jan 2005 17:11:25 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1ClrSW-0003ss-H6 for ged-emacs-devel@m.gmane.org; Tue, 04 Jan 2005 11:23:00 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1ClrSM-0003sl-TJ for emacs-devel@gnu.org; Tue, 04 Jan 2005 11:22:51 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1ClrSM-0003sR-8Q for emacs-devel@gnu.org; Tue, 04 Jan 2005 11:22:50 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1ClrSM-0003sH-1a for emacs-devel@gnu.org; Tue, 04 Jan 2005 11:22:50 -0500 Original-Received: from [151.204.231.71] (helo=projectile.siege-engine.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1ClrG4-00081w-H0 for emacs-devel@gnu.org; Tue, 04 Jan 2005 11:10:08 -0500 Original-Received: from projectile.siege-engine.com (localhost.localdomain [127.0.0.1]) by projectile.siege-engine.com (8.12.8/8.12.8) with ESMTP id j04GA7D0011828 for ; Tue, 4 Jan 2005 11:10:07 -0500 Original-Received: (from zappo@localhost) by projectile.siege-engine.com (8.12.8/8.12.8/Submit) id j04GA7a2011824; Tue, 4 Jan 2005 11:10:07 -0500 X-Authentication-Warning: projectile.siege-engine.com: zappo set sender to eric@siege-engine.com using -f Original-To: emacs-devel@gnu.org In-reply-to: (emacs-devel-request@gnu.org) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:31828 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:31828 [ ... ] >> Besides writing values to init files the configuration process is used >> to check if external tools required for building or running the >> package are present and provide necessary features. A special case >> might be preview-latex which has a TeX part besides the Elisp part. >> >> Why is it necessary to do this? >> It seems to me that it would be just fine >> to look for these things when the user tries to use them. >> >> to try to use the command when the user asks to do > >I don't think it is feasible to check for program versions every time >a program is called. And instead of letting the user alone with error >messages which don't give him a hint that the program is too old, I >consider it better practice to tell him when he tries to install the >software which relies on the external program. Hi, On the topic of checking version numbers at runtime, I wrote a tool to do this for me which is in the CEDET stuff I maintain. Many tools have a variable, for example, foo.el, might have foo-version be a string that is the version number. This tool can scan for that, and make sure the version you want is compatible via various settings. I also use it to manager save file version numbers so that upgrades can occur among various tools that are not a part of Emacs. The one dilemma is that a package author has to explicitly specify when a version is no longer compatible with older versions. ie, current version is 2.4, but tools depending on 1.5 won't work with 2.4, this needs to be specified for inversion to handle all cases. Here is a CVS link: http://cvs.sourceforge.net/viewcvs.py/cedet/cedet/common/inversion.el?rev=1.20&view=log Enjoy Eric -- Eric Ludlam: zappo@gnu.org, eric@siege-engine.com Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org