Number: 2240

Date: 24-Sep-84 13':12':07

Submitter: Masinter

Source: Masinter

Subject: RECOMPILE doesn''t check that .DCOM for copying compiled code from is correct

Assigned To: 

Attn: Masinter

Status: Open

In/By: 

Problem Type: Design - Impl

Impact: Serious

Difficulty: Easy

Frequency: Intermittent

Priority: Hopefully

System: Programming Environment

Subsystem: History

Machine: 

Disk: 

Lisp Version: 24-Sep-84 09':49':01

Source Files: 

Microcode Version: 5124

Memory Size: 4096

File Server: 

Server Software Version: 

Disposition: 

Description: [this was part of what was originally AR#2224]'
'
Date': 15 Sep 84 11':49 PDT'
From': Kaplan.pa'
Subject': FILEPKG SHOW STOPPER'
To': Lispsupport.PA, Lispcore↑.PA'
'
'
...'
'
'
The current file package has screwed me and others in this way several times now, enough to suggest that it is not a cosmic ray.  Without any indication from the system, it has taken compiled code from a file of the appropriate name in my connected directory or on some random directory on DIRECTORIES instead of taking the compiled code that corresponded to the symbolics that I had loaded from one place and was dumping to another.'
'
(This is the common case when you want to remerge a forked development.  You loadfrom your forked directory, make a couple of edits, connect back to lispcore>sources>, then makefile/cleanup.  Result is that your .DCOM file has code drawn from the most recent version on sources, not from your forked directory .)'
'
'
In my opinion, this is dangerous enough to stop the release.  We must either move forward to make the filepkg behave properly in cases like this--make it less dependent on what happens to be where you are connected or what your search path is and more dependent on what and where you loaded things from--OR we must back up the filepkg to its previous behavior.  The previous behavior was ugly, but it was safe.'
'
--Ron'
'
Date': 15 Sep 84 13':19 PDT'
From': vanMelle.pa'
Subject': Re': FILEPKG SHOW STOPPER'
In-reply-to': Kaplan.pa''s message of 15 Sep 84 11':49 PDT'
To': Kaplan.pa'
cc': Lispsupport.PA, Lispcore↑.PA'
'
As I read your complaint':'
'
   "Without any indication from the system, it has taken compiled code from a file of the appropriate name in my connected directory or on some random directory on DIRECTORIES instead of taking the compiled code that corresponded to the symbolics that I had loaded from one place and was dumping to another."'
'
...this is nothing new at all.  This, in fact, is the documented behavior.  The system NEVER has had a pointer from source to compiled code; it always takes from the connected directory (or punts to FINDFILE per normal file-not-found error handling).'
'
If you want to rejoin a fork, you have to be careful, and explicitly give a CFILE argument to BRECOMPILE pointing at the dcom you want to copy from, or else BCOMPL afresh.  I have done this numerous times.'
'
It would be nice if we made the filepkg smarter, or were perhaps more explicit in the documentation about this pitfall, but I fail to see the show stopper.'
'
	Bill'
'
-----'
'
From': masinter.pa'
Date': 16-Sep-84  0':22':10 PDT'
Subject': Re': FILEPKG SHOW STOPPER'
In-reply-to': vanMelle''s message of 15 Sep 84 13':19 PDT'
To': vanMelle'
cc': Kaplan, Lispsupport, Lispcore↑'
'
my intention here, by the way, is to make RECOMPILE work like the CHECKSET library package': to look at the FILECREATED date of the (old) .DCOM to see what it was compiled on. If you are doing a recompile of a file, the "previous date': " of the source needs to match the "compiled on': " of the COM, otherwise, recompile everything (after printing message.)'
'
Safe, will usually only recompile what you need to, and if things are confused, will generate correct results .'
'
'


Workaround: 

Test Case: 

Edit-By: 

Edit-Date: