Closed larsoner closed 1 year ago
Btw I am uploading a new constructor beta so re-run the CI in ~30min to 1h to use it. It contains a fix for permission escalation.
@jaimergp can you remind me how to make the step more verbose so we can see why Windows fails as the NSIS step?
No dice with constructor -vvv --debug
, still got something not very informative:
INFO:constructor.winexe:Calling: ['C:\\Users\\runneradmin\\micromamba-root\\envs\\constructor-env\\NSIS\\makensis.exe', '/V4', 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmpa7np722l\\main.nsi']
Traceback (most recent call last):
File "C:\Users\runneradmin\micromamba-root\envs\constructor-env\Scripts\constructor-script.py", line 10, in <module>
sys.exit(main())
File "C:\Users\runneradmin\micromamba-root\envs\constructor-env\lib\site-packages\constructor\main.py", line 361, in main
main_build(dir_path, output_dir=out_dir, platform=args.platform,
File "C:\Users\runneradmin\micromamba-root\envs\constructor-env\lib\site-packages\constructor\main.py", line 185, in main_build
create(info, verbose=verbose)
File "C:\Users\runneradmin\micromamba-root\envs\constructor-env\lib\site-packages\constructor\winexe.py", line 429, in create
process.check_returncode()
File "C:\Users\runneradmin\micromamba-root\envs\constructor-env\lib\subprocess.py", line 457, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['C:\\Users\\runneradmin\\micromamba-root\\envs\\constructor-env\\NSIS\\makensis.exe', '/V4', 'C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\tmpa7np722l\\main.nsi']' returned non-zero exit status 1.
I ran it locally and got this:
Name: "MNE-Python 1.4.2_0 (64-bit)"
OutFile: "C:\Users\JaimeRodriguez-Guerr\Downloads\mne-installers-bt3\mne-installers-bt3\MNE-Python-1.4.2_0-Windows.exe"
ShowInstDetails: hide
ShowUninstDetails: hide
SetCompress: off
VIAddVersionKey: "ProductName" "MNE-Python 1.4.2_0 (64-bit)"
VIAddVersionKey: "FileVersion" "1.4.2_0"
VIAddVersionKey: "ProductVersion" "1.4.2_0"
VIAddVersionKey: "CompanyName" "MNE-Python Developers"
VIAddVersionKey: "LegalCopyright" "(c) MNE-Python Developers"
VIAddVersionKey: "FileDescription" "MNE-Python Installer"
VIAddVersionKey: "Comments" "Created by constructor 0+unknown"
BrandingText: "MNE-Python Developers"
!define: "MUI_ICON"="C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\icon.ico"
!define: "MUI_UNICON"="C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\icon.ico"
!define: "MUI_HEADERIMAGE"=""
!define: "MUI_HEADERIMAGE_BITMAP"="C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\header.bmp"
!define: "MUI_HEADERIMAGE_UNBITMAP"="C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\header.bmp"
!define: "MUI_ABORTWARNING"=""
!define: "MUI_FINISHPAGE_NOAUTOCLOSE"=""
!define: "MUI_UNFINISHPAGE_NOAUTOCLOSE"=""
!define: "MUI_WELCOMEFINISHPAGE_BITMAP"="C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\welcome.bmp"
!define: "MUI_UNWELCOMEFINISHPAGE_BITMAP"="C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\welcome.bmp"
!define: "MUI_PAGE_CUSTOMFUNCTION_PRE"="SkipPageIfUACInnerInstance"
!insertmacro: MUI_PAGE_WELCOME
!insertmacro: end of MUI_PAGE_WELCOME
!define: "MUI_PAGE_CUSTOMFUNCTION_PRE"="SkipPageIfUACInnerInstance"
!insertmacro: MUI_PAGE_LICENSE
!insertmacro: end of MUI_PAGE_LICENSE
Page: Custom (creator:InstModePage_Create) (leave:InstModePage_Leave)
!define: "MUI_PAGE_CUSTOMFUNCTION_PRE"="DisableBackButtonIfUACInnerInstance"
!define: "MUI_PAGE_CUSTOMFUNCTION_LEAVE"="OnDirectoryLeave"
!insertmacro: MUI_PAGE_DIRECTORY
!insertmacro: end of MUI_PAGE_DIRECTORY
Page: Custom (creator:mui_AnaCustomOptions_Show)
!insertmacro: MUI_PAGE_INSTFILES
!insertmacro: end of MUI_PAGE_INSTFILES
'
DEBUG:constructor.winexe:makensis stderr:
'Invalid command: "{\rtf1\ansi\ansicpg1252\cocoartf2636"
Error in script "C:\Users\JAIMER~1\AppData\Local\Temp\tmpt2a8qp5w\main.nsi" on line 148 -- aborting creation process
'
Traceback (most recent call last):
File "C:\Users\JaimeRodriguez-Guerr\devel\conda\devenv\Windows\envs\devenv-3.8-c\envs\constructor-dev\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\JaimeRodriguez-Guerr\devel\conda\devenv\Windows\envs\devenv-3.8-c\envs\constructor-dev\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\JaimeRodriguez-Guerr\devel\conda\devenv\Windows\envs\devenv-3.8-c\envs\constructor-dev\Scripts\constructor.exe\__main__.py", line 7, in <module>
File "C:\Users\JaimeRodriguez-Guerr\devel\constructor\constructor\main.py", line 351, in main
main_build(dir_path, output_dir=out_dir, platform=args.platform,
File "C:\Users\JaimeRodriguez-Guerr\devel\constructor\constructor\main.py", line 175, in main_build
create(info, verbose=verbose)
File "C:\Users\JaimeRodriguez-Guerr\devel\constructor\constructor\winexe.py", line 439, in create
process.check_returncode()
File "C:\Users\JaimeRodriguez-Guerr\devel\conda\devenv\Windows\envs\devenv-3.8-c\envs\constructor-dev\lib\subprocess.py", line 457, in check_returncode
raise CalledProcessError(self.returncode, self.args, self.stdout,
subprocess.CalledProcessError: Command '['C:\\Users\\JaimeRodriguez-Guerr\\devel\\conda\\devenv\\Windows\\envs\\devenv-3.8-c\\envs\\constructor-dev\\NSIS\\makensis.exe', '/V4', 'C:\\Users\\JAIMER~1\\AppData\\Local\\Temp\\tmpt2a8qp5w\\main.nsi']' returned non-zero exit status 1.
It looks like it doesn't like the RTF files for some weird reason? š¤
Awesome -- maybe/probably because there is unicode... I'll try opening it in Windows and re-saving it. If that doesn't work I'll remove the unicode and try again!
None of the unicode rendered well in Windows except for one folder icon, so I just deleted the unicode business and re-saved them. Looks like all files got smaller. :crossed_fingers:
Mm, no I think it's a bug introduced in this release (probably this line). conclusion_file
can also be a NSI script, and in that case it gets inlined. I can see locally that RTF contents were dumped directly in the script.
I think the only workaround for now is to disable the custom conclusion file on Windows installers. I'll open a PR on constructor next week.
Can you open an issue to track this in conda/constructor
? Thanks š
@larsoner Can you revert the change to the RTF file please?
Have you checked to see if they render on Windows? Only one worked when I loaded it in WordPad and Word for me, all other Unicode characters rendered as weird vertical lines. f you haven't checked I will, and if they don't show on Windows we can either have two sets of files or (my preference) live with not having Unicode anywhere...
@jaimergp looks like that was the bug on Windows! For macOS now we get an error on installation:
2023-07-13 20:39:37+00 Mac-1689278542280 installer[2912]: install:didFailWithError:Error Domain=PKInstallErrorDomain Code=501 "The package is attempting to install content to the system volume." UserInfo={NSLocalizedDescription=The package is attempting to install content to the system volume.}
and on Linux we have a post-install script meant to fix the .desktop
files but it looks like they are no longer produced in $HOME/.local/share/applications
:
ā¹ļø Fixing menu shortcuts.
sed: can't read ./MNE-Python*.desktop: No such file or directory
ERROR: executing post_install.sh failed
Any thoughts on these?
@larsoner We're applying a number of patches, maybe they need modificationā¦ For example: https://github.com/mne-tools/mne-installers/blob/main/assets/constructor_macOS_common.patch
Edit: Then again, this is just for post-installā¦
@larsoner We're applying a number of patches,... Edit: Then again, this is just for post-installā¦
Actually I don't see these used anywhere other than /tools/build_local.sh
, which is not used by CIs. Even worse, build_local.sh
references a patch_constructor.sh
file that doesn't exist. So I don't think these patches are even used anymore!
$ git grep patch
.github/workflows/build.yml: workflow_dispatch:
.github/workflows/build.yml: # ā¦ and patched to work around a bug in menuinst
README.md:3. Run `./tools/build_local.sh` (which will patch the constructor on macOS if needed).
assets/constructor_macOS_arm64.patch:diff -Naur constructor-orig/osxpkg.py constructor-patched/osxpkg.py
assets/constructor_macOS_arm64.patch:+++ constructor-patched/osxpkg-patched.py 2022-06-02 23:31:41.000000000 +0200
assets/constructor_macOS_common.patch:diff -Naur constructor-orig/osx/post_extract.sh constructor-patched/osx/post_extract.sh
assets/constructor_macOS_common.patch:+++ constructor-patched/osx/post_extract.sh 2022-03-19 20:28:13.000000000 +0100
assets/constructor_macOS_common.patch:diff -Naur constructor-orig/osxpkg.py constructor-patched/osxpkg.py
assets/constructor_macOS_common.patch:+++ constructor-patched/osxpkg.py 2022-03-19 20:15:12.000000000 +0100
assets/constructor_macOS_i386.patch:diff -Naur constructor-orig/osxpkg.py constructor-patched/osxpkg.py
assets/constructor_macOS_i386.patch:+++ constructor-patched/osxpkg-patched.py 2022-06-02 23:31:41.000000000 +0200
tools/build_local.sh:${SCRIPT_DIR}/patch_constructor.sh
Notably the patch_constructor.sh
does not even exist anymore, so we should probably just remove some or all of that stuff as it appears to be cruft (or reintegrate it properly, which you would probably have to do @hoechenberger ).
So the macOS install failure seems new and relevant with bundle_tools_3
, and the Linux .desktop
files missing also seems relevant @jaimergp !
I would list the contents of the directory. They should be there, but maybe I think the names are now "slugified" so it'd be all lowercase, no spaces etc.
Also, I will fix the .desktop True/true
problem on menuinst. Let me know if you find something else!
Also, I will fix the .desktop
True/true
problem on menuinst. Let me know if you find something else!
Turns out this had been done a while ago too.
@jaimergp okay one more... we used to have apps in /Applications/MNE-Python/whatever.app
but now the appear in the root /Applications
in this CI run we see (basically):
$ ls -al /Applications/
total 0
drwxrwxr-x 33 root admin 1056 Jul 18 19:52 .
drwxr-xr-x 20 root wheel 640 Jan 1 2020 ..
-rw-r--r-- 1 root wheel 0 Jan 1 2020 .localized
...
drwxr-xr-x 3 root admin 96 Jul 18 19:52 Prompt (MNE).app
drwxr-xr-x@ 11 root wheel 352 Jul 10 00:38 Python 2.7
drwxr-xr-x@ 10 root wheel 320 Jul 10 03:55 Python 3.11
drwxr-xr-x@ 3 root wheel 96 Jun 23 12:21 Safari.app
drwxr-xr-x 3 root admin 96 Jul 18 19:51 Spyder (MNE).app
drwxr-xr-x 3 root admin 96 Jul 18 19:51 System Info (MNE).app
drwxr-xr-x 3 root admin 96 Jul 18 19:52 Tutorials (MNE).app
drwxr-xr-x 3 root admin 96 Jul 18 19:52 User Forum (MNE).app
...
... is there any way to nest all menu entries in a folder? I think this is probably also why we wanted to set a folder icon so /Applications/MNE-Python
had our icon rather than a generic folder icon in Applications
@larsoner
Previously we installed the Python distribution to /Applications/MNE-Python/.mne-python
:
https://github.com/mne-tools/mne-installers/blob/31544ad2fd91d85c0f4b79ee5a444bf45d5c8d3d/assets/constructor_macOS_common.patch#L63
https://github.com/mne-tools/mne-installers/blob/31544ad2fd91d85c0f4b79ee5a444bf45d5c8d3d/assets/constructor_macOS_common.patch#L10
constructor
would create .app
bundles in ~/Applications/
We would then manually move them to /Applications/MNE-Python
and set an icon on that folder:
https://github.com/mne-tools/mne-installers/blob/31544ad2fd91d85c0f4b79ee5a444bf45d5c8d3d/assets/post_install_macOS.sh#L18-L31
Well things are green so we can now start putting bits and pieces of those back if we want
@hoechenberger feel free to give it a shot, I think you'll probably be able to figure it out much faster than me!
@larsoner Sorry, didn't have time to look into this :(
@hoechenberger we might need to tackle this sooner rather than later. In https://github.com/mne-tools/mne-installers/pull/202 we're hitting a memory bug that has been fixed in more recent conda
s:
*** picosat: out of memory in 'resize'
and without bundle_tools_3
we're stuck on conda 4.12a or so...
I'll switch this to update the 1.5 installer rather than 1.4
Hah, this does not fix the bug :( But still worth pursuing at some point...
š³š¶āš«ļøš°
Add conda-libmamba-solver
to your environment.yml
and then make sure to either:
conda config --set solver libmamba
before calling constructor
constructor
with this env var: CONDA_SOLVER=libmamba constructor ...
That should enable the new solver with a smaller memory footprint.
It's actually working! Wow! Thanks @larsoner and @jaimergp!
@larsoner I think we should take another look at the RTF files before merging, it would be a pity to lose the Unicode characters unless we really have toā¦
Sure but a much higher priority I think (and what I am way less familiar with) is sorting out which patches we need back, if any. That's what I'm hoping you can look into before we merge
Is there a way for me to download the artifacts generated in this CI run?
That should enable the new solver with a smaller memory footprint.
@jaimergp this worked wonderfully -- things even got faster!
Is there a way for me to download the artifacts generated in this CI run?
Looks like they were purged 9h ago so I pushed a quick commit to restore the emoji RTFs (TBD what they look like on Windows, might want to split based on OS if they render poorly) and then one to fix outdated Spyder. Now that this is done the artifacts are available here, probably until 3AM GMT tomorrow:
https://github.com/mne-tools/mne-installers/actions/runs/6037679001?pr=195#artifacts
I just tried installation on macOS and it failed:
Aug 31 17:08:59 gvalwu00569 package_script_service[29487]: ./postinstall: + PREFIX=/Users/richardhochenberger/Library/mne-python
Aug 31 17:08:59 gvalwu00569 package_script_service[29487]: ./postinstall: ++ cd /Users/richardhochenberger/Library/mne-python
Aug 31 17:08:59 gvalwu00569 package_script_service[29487]: ./postinstall: ++ pwd
Aug 31 17:08:59 gvalwu00569 package_script_service[29487]: ./postinstall: + PREFIX=/Users/richardhochenberger/Library/mne-python
Aug 31 17:08:59 gvalwu00569 package_script_service[29487]: ./postinstall: + rm -rf /Users/richardhochenberger/Library/mne-python/pkgs
Aug 31 17:09:13 gvalwu00569 package_script_service[29487]: ./postinstall: rm: /Users/richardhochenberger/Library/mne-python/pkgs: Permission denied
Aug 31 17:09:13 gvalwu00569 package_script_service[29487]: Responsibility set back to self.
Aug 31 17:09:13 gvalwu00569 installd[29482]: PackageKit: releasing backupd
Aug 31 17:09:13 gvalwu00569 installd[29482]: PackageKit: allow user idle system sleep
Aug 31 17:09:13 gvalwu00569 installd[29482]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā." UserInfo={NSFilePath=./postinstall, NSURL=file:///tmp/MNE-Python-1.5.0_1-macOS_M1.pkg#cacheclean.pkg, PKInstallPackageIdentifier=tools.mne.pkg.cacheclean, NSLocalizedDescription=An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā.} {
NSFilePath = "./postinstall";
NSLocalizedDescription = "An error occurred while running scripts from the package \U201cMNE-Python-1.5.0_1-macOS_M1.pkg\U201d.";
NSURL = "file:///tmp/MNE-Python-1.5.0_1-macOS_M1.pkg#cacheclean.pkg";
PKInstallPackageIdentifier = "tools.mne.pkg.cacheclean";
}
Aug 31 17:09:13 gvalwu00569 installd[29482]: PackageKit: Cleared responsibility for install from 29427.
Aug 31 17:09:13 gvalwu00569 installd[29482]: PackageKit: Cleared permissions on Installer.app
Aug 31 17:09:13 gvalwu00569 Installer[29427]: install:didFailWithError:Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā." UserInfo={NSFilePath=./postinstall, NSURL=file:///tmp/MNE-Python-1.5.0_1-macOS_M1.pkg#cacheclean.pkg, PKInstallPackageIdentifier=tools.mne.pkg.cacheclean, NSLocalizedDescription=An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā.}
Aug 31 17:09:13 gvalwu00569 installd[29482]: PackageKit: Removing client PKInstallDaemonClient pid=29427, uid=501 (/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer)
Aug 31 17:09:13 gvalwu00569 Installer[29427]: PackageKit: Bypassing the enforcement checker since the destination is read/write
Aug 31 17:09:13 gvalwu00569 Installer[29427]: Install failed: The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.
Aug 31 17:09:13 gvalwu00569 Installer[29427]: IFDInstallController 36C3120 state = 8
Aug 31 17:09:13 gvalwu00569 Installer[29427]: Displaying 'Install Failed' UI.
Aug 31 17:09:13 gvalwu00569 Installer[29427]: 'Install Failed' UI displayed message:'The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.'.
Trying again now with slightly different settings
Got a different one nowā¦
Aug 31 17:18:29 gvalwu00642 package_script_service[29487]: ./postinstall: + PREFIX=/Users/richardhochenberger/Library/mne-python
Aug 31 17:18:29 gvalwu00642 package_script_service[29487]: ./postinstall: + rm -rf /Users/richardhochenberger/Library/mne-python/pkgs
Aug 31 17:18:33 gvalwu00642 package_script_service[29487]: ./postinstall: rm: /Users/richardhochenberger/Library/mne-python/pkgs/statsmodels-0.14.0-py311hb49d859_1/lib/python3.11/site-packages: Permission denied
Aug 31 17:18:33 gvalwu00642 package_script_service[29487]: ./postinstall: rm: /Users/richardhochenberger/Library/mne-python/pkgs/statsmodels-0.14.0-py311hb49d859_1/lib/python3.11: Permission denied
Aug 31 17:18:33 gvalwu00642 package_script_service[29487]: ./postinstall: rm: /Users/richardhochenberger/Library/mne-python/pkgs/statsmodels-0.14.0-py311hb49d859_1/lib: Permission denied
Aug 31 17:18:33 gvalwu00642 package_script_service[29487]: ./postinstall: rm: /Users/richardhochenberger/Library/mne-python/pkgs/statsmodels-0.14.0-py311hb49d859_1: Permission denied
Aug 31 17:18:45 gvalwu00642 package_script_service[29487]: ./postinstall: rm: /Users/richardhochenberger/Library/mne-python/pkgs: Permission denied
Aug 31 17:18:45 gvalwu00642 package_script_service[29487]: Responsibility set back to self.
Aug 31 17:18:45 gvalwu00642 installd[29482]: PackageKit: releasing backupd
Aug 31 17:18:45 gvalwu00642 installd[29482]: PackageKit: allow user idle system sleep
Aug 31 17:18:45 gvalwu00642 installd[29482]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā." UserInfo={NSFilePath=./postinstall, NSURL=file:///tmp/MNE-Python-1.5.0_1-macOS_M1.pkg#cacheclean.pkg, PKInstallPackageIdentifier=tools.mne.pkg.cacheclean, NSLocalizedDescription=An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā.} {
NSFilePath = "./postinstall";
NSLocalizedDescription = "An error occurred while running scripts from the package \U201cMNE-Python-1.5.0_1-macOS_M1.pkg\U201d.";
NSURL = "file:///tmp/MNE-Python-1.5.0_1-macOS_M1.pkg#cacheclean.pkg";
PKInstallPackageIdentifier = "tools.mne.pkg.cacheclean";
}
Aug 31 17:18:45 gvalwu00642 installd[29482]: PackageKit: Cleared responsibility for install from 31277.
Aug 31 17:18:45 gvalwu00642 installd[29482]: PackageKit: Cleared permissions on Installer.app
Aug 31 17:18:45 gvalwu00642 Installer[31277]: install:didFailWithError:Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā." UserInfo={NSFilePath=./postinstall, NSURL=file:///tmp/MNE-Python-1.5.0_1-macOS_M1.pkg#cacheclean.pkg, PKInstallPackageIdentifier=tools.mne.pkg.cacheclean, NSLocalizedDescription=An error occurred while running scripts from the package āMNE-Python-1.5.0_1-macOS_M1.pkgā.}
Aug 31 17:18:45 gvalwu00642 installd[29482]: PackageKit: Removing client PKInstallDaemonClient pid=31277, uid=501 (/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer)
Aug 31 17:18:46 gvalwu00642 Installer[31277]: PackageKit: Bypassing the enforcement checker since the destination is read/write
Aug 31 17:18:46 gvalwu00642 Installer[31277]: Install failed: The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.
@hoechenberger WDYT about temporarily removing all post-install stuff for macOS to see what vanilla bundle_tools_3
provides? Hopefully that will install and be a good starting point for adding stuff back in that's missing
āļø Checked the installer under Windows and it seemed to proceed normally and I could open the prompt and Spyder. The license looked fine. Never saw the welcome.rtf
anywhere but maybe that part is expected. We can definitely live with it I think!
@hoechenberger WDYT about temporarily removing all post-install stuff for macOS to see what vanilla
bundle_tools_3
provides? Hopefully that will install and be a good starting point for adding stuff back in that's missing
Yes that could be a good idea.
āļø Checked the installer under Windows and it seemed to proceed normally and I could open the prompt and Spyder. The license looked fine. Never saw the
welcome.rtf
anywhere but maybe that part is expected. We can definitely live with it I think!
AFAIK welcome.rtf is for macOS only
@larsoner The first time I ever got this to work I built & tested things locally on my Mac, much faster and smoother experience. But I won't have time to do this today, maybe sometime during the weekend, but I cannot promise anything
Indeed that's what I did yesterday to get macOS working. Just need some final windows tweaks today hopefully then we can all test and merge!
@cbrnr @hoechenberger I am still debugging Windows a bit but the macOS installers seem to work locally for me on M1 in both single-user mode (but only puts it in ~/Applications
, which I guess is the best we can do) and system-wide mode. Feel free to test, then hopefully we can merge once I work on the Windows bug(s) and double check that Linux is still okay!
FYI I set the data retention period to 5 days for this repo directly in main
. I then removed the purge-artifacts
action that ran daily since I don't think it's necessary anymore -- the repo-level actions
retention applies to both CI runs and artifacts (and had already been set at 1 day) so I don't think it's needed anymore -- I think it came from before the artifacts
were part of the retention period.
Hopefully the latest commit I pushed is the last one I'll need, and I'll update the URL above to have the latest artifact link once it finishes!
I am still debugging Windows a bit but the macOS installers seem to work locally for me on M1 in both single-user mode (but only puts it in
~/Applications
, which I guess is the best we can do) and system-wide mode
Quick question, what is the difference between single-user and system-wide modes? Many apps install into ~/Applications
when installed as non-root.
Do we mention what exactly happens when running our installers? I'm always concerned with installers modifying stuff that cannot be easily reverted, so if we describe what we're actually doing (e.g. creating which folder) for both modes that would be a great way for people like me to try out our installers.
It would be a good idea to add a note about that to the installers page of the MNE-Python docs after we merge this, especially since on Linux and macOS there is no uninstaller so you have to remove things manually
... actually I don't like how macOS installs stuff to /Library
and /Applications
currently. Most applications I have just live in /Applications
and if I want them gone I drag them to the trash. I'm going to install to /Applications/MNE-Python/1.5.0_1
instead, which has multiple advantages:
/Applications/MNE-Python/1.5.0_1/.mne-python
, which is hidden but therefore...1.5.0_1
or MNE-Python
directories to the trashThen macOS and Windows both uninstall the way users would expect (I think), and Linux is the only annoying one (.desktop
files need to be manually removed). I'll push a commit shortly...
The choice for Library
vs Applications
was that some users expect things under Applications
to be self-contained relocatable, which is not always the case in conda-based installations.
The choice for Library vs Applications was that some users expect things under Applications to be self-contained relocatable, which is not always the case in conda-based installations.
But with the changes @larsoner made in this PR, this is now the case, or no? I like that everything is contained in a single folder, which makes uninstalling everything a trivial task.
But with the changes @larsoner made in this PR, this is now the case, or no?
I now put everything in Applications, which has the advantage of easy uninstallation but will break if people move things around.
Move what around? There's just one folder - it breaks when they move it? If that's the issue, we can document this behavior and tell people to uninstall and then reinstall in the desired location. Or point out that the folder cannot be moved, which is OK, because it is in the expected standard location.
Can you explain the difference between system-wide and user installation?
If you try the installer it will probably become clear. But by single user I mean installing to ~/Applications
and by system wide I mean to /Applications
A naive attempt at https://github.com/conda/constructor/pull/474#issuecomment-1634249245
Closes #204 Closes #191 Closes #190 Closes #182 Closes #181 Closes #131