Closed Bug 11988 Opened 26 years ago Closed 21 years ago

Fix makecopy to use symlinks instead of copying (win32)

Categories

(SeaMonkey :: Build Config, defect, P3)

x86
Windows NT
defect

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: jband_mozilla, Assigned: dveditz)

Details

If I touch a .cpp file and rebuild my dll then Autoregistration will not re-register the dll the next time the app is run. However, it does do so the time after... {my tree is a couple of days old] [x:\raptor\mozilla\js\src\xpconnect\src]xpcshell nsComponentManager: Autoregistration begins. dir = X:\RAPTOR\MOZILLA\DIST\WIN32_ D.OBJ\BIN\components nsComponentManager: Autoregistration ends. dir = X:\RAPTOR\MOZILLA\DIST\WIN32_D. OBJ\BIN\components js> ^C [x:\raptor\mozilla\js\src\xpconnect\src]touch nsXPConnect.cpp 8/16/99 16:15:12 X:\raptor\mozilla\js\src\xpconnect\src\nsXPConnect.cpp [x:\raptor\mozilla\js\src\xpconnect\src]nmake -f makefile.win Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. nsXPConnect.cpp +++ make: Creating DLL: .\WIN32_D.OBJ\xpc3250.dll Symlinking .\WIN32_D.OBJ\xpc3250.dll into ..\..\..\..\dist\WIN32_D.OBJ\bin\c omponents\xpc3250.dll [x:\raptor\mozilla\js\src\xpconnect\src]xpcshell nsComponentManager: Autoregistration begins. dir = X:\RAPTOR\MOZILLA\DIST\WIN32_ D.OBJ\BIN\components nsComponentManager: Autoregistration ends. dir = X:\RAPTOR\MOZILLA\DIST\WIN32_D. OBJ\BIN\components js> ^C [x:\raptor\mozilla\js\src\xpconnect\src]xpcshell nsComponentManager: Autoregistration begins. dir = X:\RAPTOR\MOZILLA\DIST\WIN32_ D.OBJ\BIN\components *** Register XPConnect nsComponentManager: Autoregistration ends. dir = X:\RAPTOR\MOZILLA\DIST\WIN32_D. OBJ\BIN\components js> ^C [x:\raptor\mozilla\js\src\xpconnect\src]
Status: NEW → ASSIGNED
Target Milestone: M10
This might have something to do with linking dlls as opposed to copying them on windows. Dan what would the modified date on a link be. Would it be the same as the original file it points to. It is wierd why it works the second time though.
funny - I was amending the bug to cc dan and add a similar comment to dp's above.
a couple more data points that make me suspect this symlink stuff... after making I can not copy the real dll over the symlink: X:\>copy \raptor\mozilla\js\src\xpconnect\src\WIN32_D.OBJ\xpc3250.dll \raptor\mo zilla\dist\WIN32_D.OBJ\bin\components The process cannot access the file because it is being used by another process. 0 file(s) copied. If I touch, make, delete symlink in components dir, copy dll to components dir from build dir, and then run: I see the registration happen as expected.
Boy, that's too bad. The Symlinking saves build time and space. But it's a strange Posix-compliance feature and I guess not too surprising not everything plays nice with it. It's definitely a link because you can edit a text file and have the changes show up in the linked file (going both ways on the link). But some of the directory information and utilities seem to get confused since they don't know all that much about the Posix layer. Eventually I was planning on changing DLL exports to a separate rule, which we could then tweak to turn off Symlinking for that rule only. Meanwhile if you want to turn it off go to mozilla/config/config.mak and find the definition of MAKE_INSTALL. Remove the -s option.
Removing the -s made this problem go away for me. I think that lots of people might waste time chasing spurious bugs if we leave this as it is. However, just removing the -s without blowing away the existing symlinks causes makecopy to fail. If we turn off the -s we have to tell people to blow away their (entire?) dist dirs and rebuilt. Is there a less painful solution that anyone can think of?
Assignee: dp → dveditz
Status: ASSIGNED → NEW
Dan we got to fix this soon Like soon after the tree opens. Requiring clobber is fine. People will do that anyway for M10
I turned off symlinking. I'm not going to mark this "fixed" because I want to fix the makecopy tool and then turn symlinking back on.
Target Milestone: M10 → M14
remember this later, no time before beta
QA Contact: beppe → dp
Pushing way out, saving build space is not a beta requirement :-)
Summary: dll not registered on first run after modified → Fix makecopy to use symlinks instead of copying
Target Milestone: M14 → M17
Status: NEW → ASSIGNED
Resetting missed milestones
Target Milestone: M17 → ---
dp is no longer @netscape.com. changing qa contact to default for this product
QA Contact: dp → kandrot
Fixing component
Component: XPCOM → Build Config
QA Contact: kandrot → leaf
Summary: Fix makecopy to use symlinks instead of copying → Fix makecopy to use symlinks instead of copying (win32)
We no longer use the makecopy tool in windows, we share nsinstall.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → WONTFIX
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.