Skip to content
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

Add windows-terminal #21913

Closed
wants to merge 22 commits into from
Closed

Conversation

dhirschfeld
Copy link
Member

@dhirschfeld dhirschfeld commented Jan 31, 2023

Checklist

  • Title of this PR is meaningful: e.g. "Adding my_nifty_package", not "updated meta.yaml".
  • License file is packaged (see here for an example).
  • Source is from official source.
  • Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).
  • If static libraries are linked in, the license of the static library is packaged.
  • Package does not ship static libraries. If static libraries are needed, follow CFEP-18.
  • Build number is 0.
  • A tarball (url) rather than a repo (e.g. git_url) is used in your recipe (see here for more details).
  • GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there.
  • When in trouble, please check our knowledge base documentation before pinging a team.

@conda-forge-webservices
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/windows-terminal) and found it was in an excellent condition.

Copy link
Member Author

@dhirschfeld dhirschfeld left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is good to go, insofar as it works to install the pre-built Windows Terminal application.

I think this will be very handy to make the lives of Windows developers (and those who have to use Windows) easier.

As a self-contained application, the binary repackaging shouldn't cause any conflicts or maintenance burden.

@dhirschfeld
Copy link
Member Author

wt

@dhirschfeld
Copy link
Member Author

ping @conda-forge/core - you may have to weigh in on this one...

@wolfv
Copy link
Member

wolfv commented Feb 1, 2023

pretty cool!

if %ERRORLEVEL% neq 0 exit 1
7za x -oterminal .\CascadiaPackage_{{ version }}1.0_x64.msix
if %ERRORLEVEL% neq 0 exit 1
xcopy terminal "%PREFIX%\windows-terminal" /E /I /F /B /Y
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this creating a windows-terminal directory in the PREFIX root? I think we might want to use a different containing directory, but I am not sure which one is best in Windows.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe just PREFIX/Scripts?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My understanding is that scripts/ is mostly used for entry-points, so having wt.cmd in scripts/ makes sense as it's the entry-point for the Windows Terminal application.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure it makes sense putting the applications themselves under scripts/, but I'm also not sure there's any conda-forge convention for where to put applications (particularly on
Windows)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we look at what nodejs does, it puts node-modules in the top-level PREFIX, but it also puts the entry-points in PREFIX as well:

❯ ls C:\mambaforge\envs\node

    Directory: C:\mambaforge\envs\node

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          13/02/2023    21:08                conda-meta
d----          13/02/2023    21:08                node_modules
-a---          05/11/2022    02:26       65491576 node.exe
-a---          05/11/2022    00:48           1365 npm
-a---          05/11/2022    00:48            483 npm.cmd
-a---          05/11/2022    00:48           1567 npx
-a---          05/11/2022    00:48            539 npx.cmd

It's likely that the node.exe binary expects to find the node-modules folder alongside it so that constrains where you could place the executable.

IMHO it would probably be cleaner to put the .cmd files in scripts/, but if the actual binaries are in PREFIX anyway, it probably doesn't have any benefit.

Copy link
Member Author

@dhirschfeld dhirschfeld Feb 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fairly sure that R used to be installed into PREFIX/R but installing the latest version it appears to be installed into PREFIX/lib/R

❯ ls C:\mambaforge\envs\rdev\lib\R

    Directory: C:\mambaforge\envs\rdev\lib\R

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          13/02/2023    21:11                bin
d----          13/02/2023    21:11                doc
d----          13/02/2023    21:11                etc
d----          13/02/2023    21:11                include
d----          13/02/2023    21:11                library
d----          13/02/2023    21:11                modules
d----          13/02/2023    21:11                share
d----          13/02/2023    21:11                src
d----          13/02/2023    21:11                Tcl
d----          13/02/2023    21:11                tests
-a---          19/12/2022    19:45          27421 CHANGES
-a---          19/12/2022    19:45          18011 COPYING
-a---          19/12/2022    19:45           4132 README
-a---          19/12/2022    19:45           8676 README.R-4.1.3

...with entry-points installed into PREFIX/scripts

❯ ls C:\mambaforge\envs\rdev/Scripts

    Directory: C:\mambaforge\envs\rdev\Scripts

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          19/12/2022    19:24          22016 open.exe
-a---          19/12/2022    19:24          22016 R.exe
-a---          19/12/2022    19:24          22016 Rcmd.exe
-a---          19/12/2022    19:24          22016 Rfe.exe
-a---          19/12/2022    19:24          22016 Rgui.exe
-a---          19/12/2022    19:24          22016 Rscript.exe
-a---          19/12/2022    19:24          22016 RSetReg.exe
-a---          19/12/2022    19:24          22016 Rterm.exe

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure installing an application under lib makes all that much sense, but it also probably doesn't matter - it's transparent to the user calling R.exe in the PREFIX/Scripts folder.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On Windows, the dotnet language installs into PREFIX/dotnet but, since I was the one who made that arbitrary decision, it can't really be used as a precedent here 😄

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At the end of the day, I'm happy to install it wherever you think makes most sense.

Following R that would be in PREFIX/lib/windows-terminal but following nodejs that would be in PREFIX/windows-terminal.

I think the status-quo (nodejs convention) makes the most sense, but I also don't really mind and am happy to follow any convention (that doesn't require changes to the application)

@@ -0,0 +1 @@
@"%~dp0..\windows-terminal\wt.exe" %*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this file be named .cmd or .bat? I think there are behaviour differences (see https://stackoverflow.com/questions/148968/windows-batch-files-bat-vs-cmd), but most scripts in conda-forge are .bat. Reading that link though it looks like .cmd is the modern recommendation? 🤔

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we move everything under Scripts we might not need this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I view .bat and .cmd as pretty interchangeable. I've never encountered a situation where it mattered though the SO you linked to is pretty informative! It does seem that .cmd is a bit stricter and generally preferred.

My general adhoc convention is to call scripts .bat and reserve .cmd for files which just set up an environment before calling an external binary.

Since the script doesn't use any of the mentioned commands where there is a difference in errorlevel handling I think it's a moot point. If you'd prefer it be a .bat file I can make that change.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we move everything under Scripts we might not need this.

If the application was under scripts/windows-terminal you'd still need a driver script in scripts/ to call it without having to resort to the full pathname of the executable.

@jaimergp
Copy link
Member

jaimergp commented Feb 7, 2023

Thanks for this!

I wonder how tricky is to build from source instead of repackaging, given that it's MIT licensed?

There are a few overlinking warnings that are now considered errors, so we might need adjustments in the runtime dependencies.

@dhirschfeld
Copy link
Member Author

Thanks for the review @jaimergp! I'll try to respond to the other points tonight...

@dhirschfeld
Copy link
Member Author

Sorry for the delay, my OS time is fairly limited these days :(

...which unfortunately means I won't have time in the foreseeable future to investigate building from source. I'm not a Windows/C++ dev so it would likely be a huge investment of time with a probable outcome of failure. I think in this case the downsides of binary repacking mostly don't apply so the benefit of being able to mamba install the Windows Terminal outweighs any benefits from requiring it be built from source.

I absolutely agree that in a perfect world it would be better to be built from source, but in reality that's not going to happen until someone with the requisite skills and motivation comes along to volunteer their time. Until such time, Windows/mamba users would greatly benefit from being able to install a usable terminal with their chosen package manager.

At least on the Windows side, there is plenty of precedent for allowing binary repackages for applications as it's better than the alternative of skip: true # [win]

@jaimergp
Copy link
Member

Yea I get that, nw. Binary repackaging can be considered, but right now there are a few warnings that I am not sure about. They might be harmless but I don't have the knowledge to assess :(

@dhirschfeld
Copy link
Member Author

Yea I get that, nw. Binary repackaging can be considered, but right now there are a few warnings that I am not sure about. They might be harmless but I don't have the knowledge to assess :(

I'll look into those now. I couldn't see what you were referring to from a quick look on my phone but I'm at my desktop now so will investigate properly and get back to you...

@dhirschfeld
Copy link
Member Author

I'll look into those now. I

Probably referring to:

❯ rg missing_dso_whitelist logs.txt
1871:2023-02-08T00:15:32.0691795Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Remoting.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1873:2023-02-08T00:15:32.2052129Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Remoting.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1879:2023-02-08T00:15:32.3411721Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Remoting.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1881:2023-02-08T00:15:32.4762668Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Remoting.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1894:2023-02-08T00:15:32.8890933Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1903:2023-02-08T00:15:33.0253452Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1910:2023-02-08T00:15:33.1645274Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-winrt-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1912:2023-02-08T00:15:33.3003413Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1928:2023-02-08T00:15:33.4367040Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/ext-ms-win-uiacore-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1931:2023-02-08T00:15:33.5757602Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-shcore-scaling-l1-1-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1933:2023-02-08T00:15:33.7093604Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-ntuser-sysparams-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1935:2023-02-08T00:15:33.8432185Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1937:2023-02-08T00:15:33.9865630Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-processthreads-l1-1-3.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1941:2023-02-08T00:15:34.1244144Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-heap-l2-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1943:2023-02-08T00:15:34.2745090Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-largeinteger-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1946:2023-02-08T00:15:34.4102745Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/ext-ms-win-uiacore-l1-1-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1949:2023-02-08T00:15:34.5457733Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-shell-namespace-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1951:2023-02-08T00:15:34.6805208Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-path-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1957:2023-02-08T00:15:34.8132587Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-psapi-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1961:2023-02-08T00:15:34.9456586Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-shcore-obsolete-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1964:2023-02-08T00:15:35.0851999Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-sidebyside-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1982:2023-02-08T00:15:35.2285384Z WARNING (windows-terminal,windows-terminal/OpenConsole.exe): $RPATH/api-ms-win-core-file-l1-2-2.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1987:2023-02-08T00:15:35.5981677Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Editor.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1993:2023-02-08T00:15:35.7322341Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Editor.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
1997:2023-02-08T00:15:35.8666324Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Editor.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2000:2023-02-08T00:15:36.0007189Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Editor.dll): $RPATH/api-ms-win-core-psapi-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2016:2023-02-08T00:15:36.1345759Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Editor.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2025:2023-02-08T00:15:36.4445966Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/vccorlib140_app.DLL not found in packages, sysroot(s) nor the missing_dso_whitelist.
2027:2023-02-08T00:15:36.5794007Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/MSVCP140_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2029:2023-02-08T00:15:36.7137127Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/CONCRT140_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2031:2023-02-08T00:15:36.8498143Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/VCRUNTIME140_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2033:2023-02-08T00:15:36.9899707Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/VCRUNTIME140_1_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2043:2023-02-08T00:15:37.1283364Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2048:2023-02-08T00:15:37.2655483Z WARNING (windows-terminal,windows-terminal/cpprest142_2_10.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2067:2023-02-08T00:15:37.6891070Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2087:2023-02-08T00:15:37.8255015Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2090:2023-02-08T00:15:37.9619466Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2093:2023-02-08T00:15:38.0976443Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-ntuser-sysparams-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2096:2023-02-08T00:15:38.2323947Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/ext-ms-win-uiacore-l1-1-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2109:2023-02-08T00:15:38.3717717Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-psapi-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2112:2023-02-08T00:15:38.5052529Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-heap-l2-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2114:2023-02-08T00:15:38.6408696Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-file-l1-2-2.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2116:2023-02-08T00:15:38.7738745Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Control.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2138:2023-02-08T00:15:39.2246977Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2140:2023-02-08T00:15:39.3607516Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2144:2023-02-08T00:15:39.4952011Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-ntuser-sysparams-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2146:2023-02-08T00:15:39.6402233Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-service-core-l1-1-2.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2148:2023-02-08T00:15:39.7720410Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-shcore-obsolete-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2157:2023-02-08T00:15:39.9057942Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2159:2023-02-08T00:15:40.0438663Z WARNING (windows-terminal,windows-terminal/TerminalApp.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2175:2023-02-08T00:15:40.4082000Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2177:2023-02-08T00:15:40.5441726Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2180:2023-02-08T00:15:40.6790893Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-shcore-obsolete-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2184:2023-02-08T00:15:40.8133240Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/ext-ms-win-shell32-shellfolders-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2189:2023-02-08T00:15:40.9474804Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-ntuser-sysparams-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2195:2023-02-08T00:15:41.0835351Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-core-winrt-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2199:2023-02-08T00:15:41.2180430Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2201:2023-02-08T00:15:41.3519183Z WARNING (windows-terminal,windows-terminal/Microsoft.Terminal.Settings.Model.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2208:2023-02-08T00:15:42.1723357Z WARNING (windows-terminal,windows-terminal/TerminalThemeHelpers.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2210:2023-02-08T00:15:42.3096089Z WARNING (windows-terminal,windows-terminal/TerminalThemeHelpers.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2212:2023-02-08T00:15:42.4454631Z WARNING (windows-terminal,windows-terminal/TerminalThemeHelpers.dll): $RPATH/api-ms-win-ntuser-sysparams-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2216:2023-02-08T00:15:42.5801137Z WARNING (windows-terminal,windows-terminal/TerminalThemeHelpers.dll): $RPATH/api-ms-win-core-winrt-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2238:2023-02-08T00:15:43.4583173Z WARNING (windows-terminal,windows-terminal/TerminalAzBridge.exe): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2247:2023-02-08T00:15:43.5938395Z WARNING (windows-terminal,windows-terminal/TerminalAzBridge.exe): $RPATH/api-ms-win-core-console-l2-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2266:2023-02-08T00:15:43.7287775Z WARNING (windows-terminal,windows-terminal/TerminalAzBridge.exe): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2273:2023-02-08T00:15:44.6548450Z WARNING (windows-terminal,windows-terminal/WindowsTerminalShellExt.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2283:2023-02-08T00:15:44.7881539Z WARNING (windows-terminal,windows-terminal/WindowsTerminalShellExt.dll): $RPATH/api-ms-win-shcore-obsolete-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2285:2023-02-08T00:15:44.9221216Z WARNING (windows-terminal,windows-terminal/WindowsTerminalShellExt.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2288:2023-02-08T00:15:45.0578616Z WARNING (windows-terminal,windows-terminal/WindowsTerminalShellExt.dll): $RPATH/api-ms-win-core-psapi-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2292:2023-02-08T00:15:45.1946466Z WARNING (windows-terminal,windows-terminal/WindowsTerminalShellExt.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2307:2023-02-08T00:15:45.3295365Z WARNING (windows-terminal,windows-terminal/WindowsTerminalShellExt.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2313:2023-02-08T00:15:49.7861353Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2322:2023-02-08T00:15:49.9208886Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-core-wow64-l1-1-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2327:2023-02-08T00:15:50.0574301Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-shcore-obsolete-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2329:2023-02-08T00:15:50.1987622Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-ntuser-sysparams-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2331:2023-02-08T00:15:50.3332104Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-shcore-scaling-l1-1-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2333:2023-02-08T00:15:50.4730450Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-core-heap-l2-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2336:2023-02-08T00:15:50.6127071Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-core-psapi-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2338:2023-02-08T00:15:50.7492443Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-core-largeinteger-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2362:2023-02-08T00:15:50.8821548Z WARNING (windows-terminal,windows-terminal/WindowsTerminal.exe): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2373:2023-02-08T00:15:51.1421516Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-winrt-error-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2376:2023-02-08T00:15:51.2755240Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2378:2023-02-08T00:15:51.4084416Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-winrt-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2381:2023-02-08T00:15:51.5674433Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-processthreads-l1-1-3.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2392:2023-02-08T00:15:51.7014640Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-psapi-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2396:2023-02-08T00:15:51.8393517Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2398:2023-02-08T00:15:51.9769532Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-wow64-l1-1-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2402:2023-02-08T00:15:52.1133069Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/cpprest142_2_10.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2416:2023-02-08T00:15:52.2572792Z WARNING (windows-terminal,windows-terminal/TerminalConnection.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2420:2023-02-08T00:15:53.0051046Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/api-ms-win-core-errorhandling-l1-1-2.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2425:2023-02-08T00:15:53.1405003Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/api-ms-win-core-heap-l2-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2433:2023-02-08T00:15:53.2741540Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2435:2023-02-08T00:15:53.4084994Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/api-ms-win-core-winrt-string-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2439:2023-02-08T00:15:53.5430955Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/api-ms-win-core-winrt-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2442:2023-02-08T00:15:53.6775654Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/MSVCP140_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2444:2023-02-08T00:15:53.8124931Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/VCRUNTIME140_1_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2446:2023-02-08T00:15:53.9464892Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/VCRUNTIME140_APP.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2458:2023-02-08T00:15:54.0866478Z WARNING (windows-terminal,windows-terminal/Microsoft.UI.Xaml.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-1.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2468:2023-02-08T00:15:54.4965944Z WARNING (windows-terminal,windows-terminal/OpenConsoleProxy.dll): $RPATH/api-ms-win-core-libraryloader-l1-2-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.
2471:2023-02-08T00:15:54.6361317Z WARNING (windows-terminal,windows-terminal/OpenConsoleProxy.dll): $RPATH/api-ms-win-core-com-midlproxystub-l1-1-0.dll not found in packages, sysroot(s) nor the missing_dso_whitelist.

@dhirschfeld
Copy link
Member Author

The unique missing dlls:

[
    'CONCRT140_APP.dll',
    'MSVCP140_APP.dll',
    'VCRUNTIME140_1_APP.dll',
    'VCRUNTIME140_APP.dll',
    'api-ms-win-core-com-midlproxystub-l1-1-0.dll',
    'api-ms-win-core-console-l2-1-0.dll',
    'api-ms-win-core-errorhandling-l1-1-2.dll',
    'api-ms-win-core-file-l1-2-2.dll',
    'api-ms-win-core-heap-l2-1-0.dll',
    'api-ms-win-core-largeinteger-l1-1-0.dll',
    'api-ms-win-core-libraryloader-l1-2-0.dll',
    'api-ms-win-core-libraryloader-l1-2-1.dll',
    'api-ms-win-core-path-l1-1-0.dll',
    'api-ms-win-core-processthreads-l1-1-3.dll',
    'api-ms-win-core-psapi-l1-1-0.dll',
    'api-ms-win-core-sidebyside-l1-1-0.dll',
    'api-ms-win-core-winrt-error-l1-1-0.dll',
    'api-ms-win-core-winrt-l1-1-0.dll',
    'api-ms-win-core-winrt-string-l1-1-0.dll',
    'api-ms-win-core-wow64-l1-1-1.dll',
    'api-ms-win-ntuser-sysparams-l1-1-0.dll',
    'api-ms-win-service-core-l1-1-2.dll',
    'api-ms-win-shcore-obsolete-l1-1-0.dll',
    'api-ms-win-shcore-scaling-l1-1-1.dll',
    'api-ms-win-shell-namespace-l1-1-0.dll',
    'cpprest142_2_10.dll',
    'ext-ms-win-shell32-shellfolders-l1-1-0.dll',
    'ext-ms-win-uiacore-l1-1-0.dll',
    'ext-ms-win-uiacore-l1-1-1.dll',
    'vccorlib140_app.DLL',
]

@dhirschfeld
Copy link
Member Author

I'm slightly confused about MSVCP140_APP.dll as I explicitly depend on run: vc.

IIUC vc provides MSVCP140.dll 🤔

Co-authored-by: jakirkham <jakirkham@gmail.com>
@jakirkham
Copy link
Member

Looks like adding the C compiler fixed some of the issues. Would try adding the C++ compiler to see if that fixes the rest of the issues

Co-authored-by: jakirkham <jakirkham@gmail.com>
@dhirschfeld
Copy link
Member Author

Thanks for the help @jakirkham! It looks like its' still complaining about:

[
 'CONCRT140_APP.dll',
 'MSVCP140_APP.dll',
 'VCRUNTIME140_1_APP.dll',
 'VCRUNTIME140_APP.dll',
 'api-ms-win-core-com-midlproxystub-l1-1-0.dll',
 'api-ms-win-core-console-l2-1-0.dll',
 'api-ms-win-core-errorhandling-l1-1-2.dll',
 'api-ms-win-core-file-l1-2-2.dll',
 'api-ms-win-core-heap-l2-1-0.dll',
 'api-ms-win-core-largeinteger-l1-1-0.dll',
 'api-ms-win-core-libraryloader-l1-2-0.dll',
 'api-ms-win-core-libraryloader-l1-2-1.dll',
 'api-ms-win-core-path-l1-1-0.dll',
 'api-ms-win-core-processthreads-l1-1-3.dll',
 'api-ms-win-core-psapi-l1-1-0.dll',
 'api-ms-win-core-sidebyside-l1-1-0.dll',
 'api-ms-win-core-winrt-error-l1-1-0.dll',
 'api-ms-win-core-winrt-l1-1-0.dll',
 'api-ms-win-core-winrt-string-l1-1-0.dll',
 'api-ms-win-core-wow64-l1-1-1.dll',
 'api-ms-win-ntuser-sysparams-l1-1-0.dll',
 'api-ms-win-service-core-l1-1-2.dll',
 'api-ms-win-shcore-obsolete-l1-1-0.dll',
 'api-ms-win-shcore-scaling-l1-1-1.dll',
 'api-ms-win-shell-namespace-l1-1-0.dll',
 'cpprest142_2_10.dll',
 'ext-ms-win-shell32-shellfolders-l1-1-0.dll',
 'ext-ms-win-uiacore-l1-1-0.dll',
 'ext-ms-win-uiacore-l1-1-1.dll',
 'vccorlib140_app.DLL'
]

@dhirschfeld
Copy link
Member Author

Checking one of the dlls in my dev env:

>fsutil hardlink list api-ms-win-core-libraryloader-l1-1-0.dll
\Users\dhirschfeld\Miniconda3\api-ms-win-core-libraryloader-l1-1-0.dll
\Users\dhirschfeld\Miniconda3\pkgs\ucrt-10.0.20348.0-h57928b3_0\api-ms-win-core-libraryloader-l1-1-0.dll
\Users\dhirschfeld\Miniconda3\envs\dev\api-ms-win-core-libraryloader-l1-1-0.dll

Comment on lines 36 to 37
run:
- ucrt
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't think this should be needed as the compilers will pull this in.

Possibly the issue is we have the wrong version of compiler. Would take a look at the different vs20XY_win-64 packages (like vs2015_win-64, vs2017_win-64, and vs2019_win-64) to see if one of them is a better fit.

Once we figure that out, one can set the compiler versions used by the recipe.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was trying the whack-a-mole technique 😬

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah no worries. Know how this goes. Wanted to save you from doing that exploration in the dark 😉

@dhirschfeld
Copy link
Member Author

The following NEW packages will be INSTALLED:

    7za:            9.20-hab24e00_0         conda-forge
    bzip2:          1.0.8-h8ffe710_4        conda-forge
    ucrt:           10.0.22621.0-h57928b3_0 conda-forge
    vc:             14.3-hb6edc58_10        conda-forge
    vs2015_runtime: 14.34.31931-h4c5c07a_10 conda-forge
    vs2022_win-64:  19.34.31933-h8b92b00_10 conda-forge
    vswhere:        3.1.1-h57928b3_0        conda-forge

I'm not sure why vs2015_runtime is being installed alongside vs2022 🤔

@dhirschfeld
Copy link
Member Author

I'm not sure why vs2015_runtime is being installed alongside vs2022 🤔

image

That explains it I guess

@dhirschfeld
Copy link
Member Author

It appears to still be complaining about missing dlls with vs2022, vs2019 or vs2017:

The following NEW packages will be INSTALLED:

    7za:            9.20-hab24e00_0         conda-forge
    bzip2:          1.0.8-h8ffe710_4        conda-forge
    ucrt:           10.0.22621.0-h57928b3_0 conda-forge
    vc:             14.3-hb6edc58_10        conda-forge
    vs2015_runtime: 14.34.31931-h4c5c07a_10 conda-forge
    vs2017_win-64:  19.16.27033-hb90652a_10 conda-forge
    vswhere:        3.1.1-h57928b3_0        conda-forge

@dhirschfeld
Copy link
Member Author

No joy. Solver error this time.

Mamba failed to solve:
 - 7za
 - vs2015_win-64

@dhirschfeld
Copy link
Member Author

Well, that worked 😬 I'm not sure what else I could try to squash the overlinking errors but am happy to try if there are any suggestions, or happy for anyone else to take a crack and push to my branch.

At this point, I'm tending towards merging with the overlinking errors disabled as the application works (for me) despite them. If it does in fact cause users issues it might be easier to debug in the feedstock with a failing test case (as and when that problem arises)

@isuruf
Copy link
Member

isuruf commented Feb 15, 2023

This is vendoring a lot of DLLs like vcomp140_app.dll. I'm not even sure we are allowed to legally re-distribute those.

@dhirschfeld
Copy link
Member Author

This is vendoring a lot of DLLs like vcomp140_app.dll. I'm not even sure we are allowed to legally re-distribute those.

I think they're all part of a redistributable package but I couldn't find out which and trying all the different vs compiler packages didn't work :(

It would be very handy if there were a tool to search which packages provide which files.

@dhirschfeld
Copy link
Member Author

I think they're all part of a redistributable package

Manually inspecting the tar.bz2 packages I found lots of vcomp140.dll files but no vcomp140_app.dll so I'm still not sure where else to get it from :/

@dhirschfeld
Copy link
Member Author

In a Windows Container I installed the latest VC redist from:
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022

...and diffed the dlls in the /Windows/System32 folder:

In [4]: dlls2 - dlls1
Out[4]:
{'concrt140.dll',
 'mfc140.dll',
 'mfc140chs.dll',
 'mfc140cht.dll',
 'mfc140deu.dll',
 'mfc140enu.dll',
 'mfc140esn.dll',
 'mfc140fra.dll',
 'mfc140ita.dll',
 'mfc140jpn.dll',
 'mfc140kor.dll',
 'mfc140rus.dll',
 'mfc140u.dll',
 'mfcm140.dll',
 'mfcm140u.dll',
 'msvcp140.dll',
 'msvcp140_1.dll',
 'msvcp140_2.dll',
 'msvcp140_atomic_wait.dll',
 'msvcp140_codecvt_ids.dll',
 'vcamp140.dll',
 'vccorlib140.dll',
 'vcomp140.dll',
 'vcruntime140.dll',
 'vcruntime140_1.dll'}

So, I'm still not sure where the dlls are all coming from :/

@dhirschfeld
Copy link
Member Author

I haven't found a way to make the overlink checker happy, and if there are concerns about redistributing the dlls from the msixbundle, I might have to put this one in the too-hard / not-enough-time-to-investigate-further basket.

This PR will still be in the history if anyone wants to copy or pick it up...

@jaimergp
Copy link
Member

Thanks @dhirschfeld!

@bdice bdice mentioned this pull request Apr 7, 2023
10 tasks
@0xbe7a 0xbe7a mentioned this pull request Jul 20, 2023
10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants