mne-tools / mne-installers

Installers for MNE-Python.
BSD 3-Clause "New" or "Revised" License
9 stars 8 forks source link

MAINT: Use bundle_tools_3 and fix various bugs #195

Closed larsoner closed 1 year ago

larsoner commented 1 year ago

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

jaimergp commented 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.

larsoner commented 1 year ago

@jaimergp can you remind me how to make the step more verbose so we can see why Windows fails as the NSIS step?

https://github.com/mne-tools/mne-installers/actions/runs/5543849246/jobs/10120455858?pr=195#step:8:605

larsoner commented 1 year ago

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.
jaimergp commented 1 year ago

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? šŸ¤”

larsoner commented 1 year ago

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!

larsoner commented 1 year ago

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:

jaimergp commented 1 year ago

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 šŸ™

hoechenberger commented 1 year ago

@larsoner Can you revert the change to the RTF file please?

larsoner commented 1 year ago

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...

larsoner commented 1 year ago

@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?

hoechenberger commented 1 year ago

@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 commented 1 year ago

@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 !

jaimergp commented 1 year ago

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!

jaimergp commented 1 year ago

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.

larsoner commented 1 year ago

@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
...
larsoner commented 1 year ago

... 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

hoechenberger commented 1 year ago

@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

larsoner commented 1 year ago

Well things are green so we can now start putting bits and pieces of those back if we want

larsoner commented 1 year ago

@hoechenberger feel free to give it a shot, I think you'll probably be able to figure it out much faster than me!

hoechenberger commented 1 year ago

@larsoner Sorry, didn't have time to look into this :(

larsoner commented 1 year ago

@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 condas:

*** 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

larsoner commented 1 year ago

Hah, this does not fix the bug :( But still worth pursuing at some point...

hoechenberger commented 1 year ago

šŸ˜³šŸ˜¶ā€šŸŒ«ļøšŸ˜°

jaimergp commented 1 year ago

Add conda-libmamba-solver to your environment.yml and then make sure to either:

That should enable the new solver with a smaller memory footprint.

hoechenberger commented 1 year ago

It's actually working! Wow! Thanks @larsoner and @jaimergp!

hoechenberger commented 1 year ago

@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ā€¦

larsoner commented 1 year ago

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

hoechenberger commented 1 year ago

Is there a way for me to download the artifacts generated in this CI run?

larsoner commented 1 year ago

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

hoechenberger commented 1 year ago

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.'.
hoechenberger commented 1 year ago

Trying again now with slightly different settings

hoechenberger commented 1 year ago

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.
larsoner commented 1 year ago

@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

larsoner commented 1 year ago

āœ”ļø 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 commented 1 year ago

@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.

hoechenberger commented 1 year ago

āœ”ļø 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

hoechenberger commented 1 year ago

@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

larsoner commented 1 year ago

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!

larsoner commented 1 year ago

@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!

larsoner commented 1 year ago

https://github.com/mne-tools/mne-installers/actions/runs/6049727219?pr=195#artifacts

https://github.com/mne-tools/mne-installers/actions/runs/6051941947?pr=195#artifacts

https://github.com/mne-tools/mne-installers/actions/runs/6052508836?pr=195#artifacts

larsoner commented 1 year ago

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!

cbrnr commented 1 year ago

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.

larsoner commented 1 year ago

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

larsoner commented 1 year ago

... 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:

Then 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...

larsoner commented 1 year ago

Latest artifacts:

https://github.com/mne-tools/mne-installers/actions/runs/6059299682?pr=195#artifacts

jaimergp commented 1 year ago

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.

cbrnr commented 1 year ago

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.

larsoner commented 1 year ago

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.

cbrnr commented 1 year ago

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?

larsoner commented 1 year ago

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