Subject: Re: bug#16099: 24.3.50; Build failure, undefined function `cl-member'

From: Dani Moncayo <[email-masked]>
Date: Tue, 10 Dec 2013 21:57:04 +0100

>> I think that the function 'unmsys--file-name' is conceptually wrong, because:
>>
>> 1. It assumes that every MSYS path will match the "/c/foo/bar"
>
> It does nothing of the kind.  It handles _only_ those file names that
> slip into Emacs in the /c/foo/bar form, which Emacs cannot handle.

I think that it would be possible that the path to "unmsys" had the
form "/foo/bar".  For example if someone has the source code tree
under his MSYS tree and invokes the configure script with an absolute
MSYS path (e.g. "/home/user/emacs/trunk/configure").

In that case, 'unmsys--file-name' will not translate the MSYS path
("/home/user/...") as expected.

>> pattern, which in general is false (as we've already seen).
>
> Not sure what you meant here.  If you mean your use case of building
> inside the MSYS tree, then that one should be (and was) handled by
> different means.

It was handled in one place (for generating the native paths in
'src/epaths.h'), but it seems that there are more places where a
translation to native w32 format is performed, and it would be nice if
that translation was as reliable as possible.

>> 2. Some directory "c:/whatever" could be mounted in MSYS as "/c/foo",
>> and therefore "/c/foo/bar" should be translated as "c:/whatever/bar"
>> (not "c:/foo/bar"). Improbable but possible.
>
> People also shoot themselves in the foot, but why should we cater to
> suicidal ones?  "If it hurts, don't do that."  MSYS is a tool to build
> Posix packages, it has no purpose other than that.  So it makes very
> little sense to configure MSYS in a way that interferes with its main
> purpose.  People could do that by mistake, of course, but then the
> solution is to recognize the mistake and correct it.

Well yes, this second problem is minor, but we could fix it with the
same effort.

>> Therefore, like I've said before, IMO this is unreliable, and we
>> should translate (or "unmsys") _all_ MSYS paths with the 'msys-to-w32'
>> script.
>
> Which is also unreliable, as we've seen.
>
> There are no bullet-proof solutions with MSYS.  Building Posix
> packages on Windows is inherently fragile, and always will be.
> Therefore, the solutions should be the simplest ones we can find that
> do the job.  People who do unreasonable things should be told not to.

I agree that the MSYS shell auto-conversion of paths can be tricky,
but we still don't know the origin of this problem.

In any case, the problem I pointed out doesn't seem to be the problem
reported by the OP.

Perhaps it would be interesting to see the file 'src/epaths.h'
produced in the failed build.  If some path is wrong there, then
_maybe_ the culprit could be the script 'msys-to-w32'.

-- 
Dani Moncayo