[Coco] Init v3.3.0 contains incorrect version number for build

Tormod Volden lists.tormod at gmail.com
Fri May 30 11:32:19 EDT 2014


On Fri, May 30, 2014 at 5:14 PM, Greg Law wrote:
> Tormod Volden wrote:
>
>> Hi Kip,
>>
>> The build system uses soft links in many places, maybe this is broken
>> in your build environment. Thanks for mentioning that you are using
>> Cygwin, do you have more details on this and the rest of your build
>> environment?
>>
>> My question to all the Cygwin users out there, was this always broken
>> for you? The build system uses "ln -s" (see rules.mak) to create soft
>> links.
>>
>> Are many people using Cygwin? Is there any advantage over using MinGW?
>> I know that using MinGW on Windows (7 64-bit is what I have tested on)
>> is super slow, more than 10 times slower than building on Linux on the
>> same hardware. So if Cygwin is faster I can understand you are using
>> it instead!
>>
>> Regards,
>> Tormod
>
>
> Essentially MinGW is the bare minimum environment necessary to build *nix
> applications on Windows. The advantage is that applications built with MinGW
> runs natively in Windows. The disadvantage is that MinGW does not provide a
> complete emulation or compatibility layer, so some code may require
> significant changes to build and run on Windows and it's slow as molasses in
> an ice storm.
>
> Cygwin provides a relatively complete *nix emulation and compatibility
> layer. The advantage is that it can build and run significantly more *nix
> code either with no or very few changes and it's fast. The disadvantage is
> that applications built with Cygwin require Cygwin (or at least the base
> Cygwin DLLs) to run on Windows.
>
> Now to the issue at hand...
>
> This actually makes sense because by default Cygwin creates symbolic links
> with a system file and the contents of the file point to the original file
> (somewhat similar to Shell links). The contents of the symbolic link file
> (/home/Greg/nitros9/level2/sys/errmsg/ is something like this:
>
> !<symlink>/home/Greg/nitros9/level1/sys/errmsg
>
> The disadvantage is that symbolic links aren't really supported in Cygwin to
> the level required to NitrOS-9 because Cygwin treats them more or less as
> plain files with caveats. This means copying a symbolic link results in
> copying the !<symlink>/... contents, but listing a symbolic link (cat
> errmsg) results in a file not found error.
>
> The solution to this problem on Windows Vista/7/8 using NTFS is to create an
> environment variable that tells Cygwin to create native NTFS symbolic links
> instead of shortcut files:
>
> export CYGWIN=winsymlinks:native
> or
> export CYGWIN=winsymlinks:nativestrict
>
> The difference is that winsymlinks:native always creates the symbolic link
> (even if the source file does not exist) whereas winsymlinks:nativestrict
> returns an error if the source file does not exist.
>
> Unfortunately, Windows requires administrative privilege by default to
> create symbolic links so setting this environment variable will likely cause
> ln to fail right out of the box. The easy solution is to always run Cygwin
> with elevated privileges:
>
> Right click the Cygwin Terminal shortcut, click Properties, click the
> Compatibility tab, check "Run this program as an administrator", and click
> OK. I don't particularly like this solution, but it's more or less easy
> peasy.
>
> The more difficult solution is to run gpedit.msc (Control Panel >
> Administrative Tools > Local Security Policy) if it is available on your
> version of Windows. If the Local Group Policy Editor opens, browse to:
>
> Local Computer Policy > Computer Configuration > Windows Settings > Security
> Settings > Local Policies > User Rights Assignment
>
> Double click "Create symbolic links" in the right pane to open the "Create
> symbolic links Properties" dialog and click "Add User or Group" to open the
> "Select Users or Groups" dialog. Enter your username in the textbox then
> click Check Names to make you've entered it correctly. If everything is
> good, click OK to close "Select Users or Groups" then click OK to close
> "Create symbolic links Properties".
>
> Now you need to logoff and logon again to apply the new policy. After you
> logon to refresh the security policies, run Cygwin Terminal as a regular
> user, make sure the CYGWIN environment variable is set appropriately, delete
> the errmsg and password files in level2/sys, then make dsk. If all goes
> well, errmsg and password should look like real files with real text.
>

Greg, thanks for this wonderful explanation and workaround!

However, to me, building software with elevated privileges sounds like FAIL :)

I am not sure there is any great need for using soft links in the
NitrOS-9 build either, other than saving disk space. So another
alternative would be to build with something like SOFTLINK=cp.

Kip, that would be for instance:
 make dsk SOFTLINK=cp

Maybe we can detect a Cygwin environment in the makefile and set
SOFTLINK to cp in that case.

Regards,
Tormod


More information about the Coco mailing list