Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 367503

Summary: Symlinks must not be resolved (e.g. when creating project based on existing source)
Product: [Eclipse Project] Platform Reporter: Ben Bucksch <linux.news>
Component: ResourcesAssignee: Platform-Resources-Inbox <platform-resources-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: major    
Priority: P3 CC: markus.kell.r
Version: 4.2   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Ben Bucksch CLA 2011-12-23 11:37:57 EST
Build Identifier: M20100211-1343

Setup:
On my machine, I organize my file systems and file hierarchy separately. For example, I want the dotfiles in my home dir on a different filesystem / harddisk than my documents, work files and source code. OTOH, I want to have other valuable files on the same file system as my documents.

This separation between logical order or system-imposed order and physical arrangement on disks is important for me. That's why my home dir is a symlink to the actual physical location. (Please don't tell me that this is wrong. That's how it is, that's the system setup, it's according to standards, and it must work.)

The physical location is prone to change, but /home/me/foo/ will always resolve to the right location, and it's a symlink. If you resolve the symlink and store the real path, you store the physical location, which *will* change.

That's precisely why I use a symlink, because I do *NOT* want to use the real path. If I wanted to use the real path, I'd use that, but I *specifically* use a symlink to avoid this.

Eclipse, however, stores the real path in config files. I tell it /home/me/foo/, but Eclipse thinks it knows better and stores "/media/disk2/userdata/foo/" instead. Obviously, that *must* fail after a while when I change the disk. In effect, I have to constantly set up my projects again.

Reproducible: Always

Steps to Reproduce:
1. In shell: ln -s /media/disk1/project/ /home/you/project
1. New | Project ... | Java Project
2. Enter some project name
3. (o) Create project from existing source
4. Enter Directory: /home/you/project/hurray/
5. Next, Finish
6. In main UI, left pane, Project "Package" view,
   right click on the new project
7. In tab Resource, check field Location
Actual result:
/media/disk1/project/hurray
Expected result:
/home/you/project/hurray/ (what I entered above)
8. in shell:
8.1. mv /media/disk1/project/ /media/disk5/project/
8.2. mv /media/disk2/otherstuff/ /media/disk5/otherstuff/
8.3. rm /home/you/project (removes symlink only)
8.4. ln -s /media/disk5/project/ /home/you/project
10. In Eclipse: Refresh
Expected result:
Everything works like before
Actual result:
Everything broken, have to set up all projects again

Again:
Please don't tell me that my setup is wrong. I use that with great success since over 10 years. Eclipse is the most painful. Eclipse is arguably wrong, because it doesn't accept my input and thinks it knows better, and completely breaks in the situation above. That's unjustifiable, no matter which reasons you had.
Comment 1 Ben Bucksch CLA 2011-12-23 11:42:47 EST
Also note: this is a general bug, not only in "create project from existing source", but symlinks must not be resolved anywhere, esp. if the user specified them in a file picker or textfield. Same is true for Java library import and many other places.
Comment 2 Markus Keller CLA 2012-12-18 14:06:28 EST

*** This bug has been marked as a duplicate of bug 233019 ***