-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build failure on WSL due to : PackagingException: File not found: '/home/dan/git/corefx/LICENSE.TXT' #29918
Comments
@danmosemsft This not look familiar to me. my guess would be casing of the file path is not matching the casing in the nuspec. |
I've had this issue in the past when my repo was in an inconsistent state. Doing a clean and then rebuild fixed it for me. |
I have tried that with a clean repo and I can repro the same issue. Will try to look more to understand what could be the problem. |
Interesting. If this isn't breaking the official builds, I wonder whether it needs a specific filesystem to repro, or distro. |
I can build fine on native Ubuntu VMs. so this is scoped to WSL only I think. looking if I can find interesting thing there. |
Thanks @joperezr for the help you have provided compiling the needed assemblies with the embedded PDBs. That was very helpful. The problem was, WSL is setting the default culture to "C" (which is translated to en-US_posix) and that culture doesn't support case insensitive comparisons. NuGet is using Regex for comparing the nuspec file list with the file system names with case insensitive option which fail to match under "C" culture. To fix this, just reset the default culture to something like en-US.
I am seriously considering changing the behavior of "C" in .NET core to map it to invariant (or even en-US) as the POSIX culture is really useless and not helping at all. I am not sure if I do such change will be ok for 3.0 or should we do it in 5.0. @jkotas @stephentoub I like to hear your thoughts about what I am suggesting. |
Is there any situation in which the current behavior is useful / valuable / expected? If no, and assuming the change for this is as trivial as I'm expecting it to be, I suggest we do it for 3.0 Preview 7. If there's any situation in which it might be desirable, we should also consider a switch. This comes up so frequently as a pain point / bad first-run experience. Also, will this be impacted at all by whether ICU is available? We carry our own invariant data, right? |
Only for scenario when users want to always compare strings as a binary bits. Maybe this is a security scenario but in general I am not seeing any other benefit of using this behavior. And still if anyone want this scenario we can ask them to explicitly use en-us_posix locale. If all agree, I can try get this soon in P7. |
Hmm, on my 1903 machine at home, Ubuntu WSL starts up with |
Same for me. |
This sounds like a bug in NuGet to me. You pretty much never want to use current culture for any kind of system level thing. This should be fixed in NuGet by using InvariantCulture. |
For me with
|
@stephentoub's 18362 is 1903, where I'm getting My other 1809 machine incidentally has |
I have no idea which regex in NuGet we are looking at, but in NuGetClient repo there are several uses of |
I've filed NuGet/Home#8246 I suspect that this has something to do with the image for WSL that comes from the windows app store. Perhaps that's missing proper LANG setting. For folks that repro'ed: did you install on WSL from Windows App Store? |
Yes for me, in all my installations |
Ubuntu came from the store. I didn't know there was an alternative? |
There is a way to manually download https://docs.microsoft.com/en-us/windows/wsl/install-win10#install-your-linux-distribution-of-choice |
here is the response we got from the WSL team:
|
vs
so what is "update-locale" ... |
|
in my WSL, I m seeing
|
That's interesting, you have a 3rd mode then. Randomly trying relevant seeming commands:
|
just wondering, did you install ICU in your WSL? |
Yes
|
interesting, could you double check which Ubuntu version you are using? I am just trying to understand what is the difference.
|
and for the "good" machine
The store has "Ubuntu" (which is what is on danmose00, and says it installs latest LTS) as well as "Ubuntu 16.04 LTS" and "Ubuntu 18.04 LTS". I'll try explicitly installing 18.04 |
Installed 18.04 WSL (it's side by side) on the "good" machine and it has
So it appears that the difference is the version of Ubuntu. And also that if you don't install an explicit version, just installing "Ubuntu" from the store can give either. And as confirmation I put 1604 on the "bad" machine and it is |
On WSL Ubuntu. And the file does exist:
I remember @MarcoRossignoli had this same issue. @tarekgh could this be related to how string comparisons are done - I seem to remember you mentioning some issue related to Nuget?
The text was updated successfully, but these errors were encountered: