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

{2023.06}[foss/2021a] RStudio-Server V1.4.1717-Java-11-R V4.1.0 #299

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions eb_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,15 @@ def parse_hook_ucx_eprefix(ec, eprefix):
raise EasyBuildError("UCX-specific hook triggered for non-UCX easyconfig?!")


def parse_hook_xvfb_cp_permissions(ec, eprefix):
"""Add user write permission to xvfb-run before copying it in the postinstallcmds."""
if ec.name == 'Xvfb':
ec['postinstallcmds'] = ["chmod u+wx xvfb-run && cp -a xvfb-run %(installdir)s/bin/"]
Copy link
Contributor

Choose a reason for hiding this comment

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

@TopRichard Can you clarify why this is needed?

If there's a problem here, I'm not sure why we didn't see it outside of EESSI...

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@boegel Xvfb is a dependency, and so it was set to avoid a failure.

Copy link
Contributor

Choose a reason for hiding this comment

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

I got that part, but I don't see why we would see this problem with Xvfb outside of EESSI.

I'm seeing it too in #328 where I'm trying to get R installed (just to break down this PR a bit), so I'll take a closer look.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@boegel I debugged that issue some time ago, see #299 (comment) and the messages below that one. TLDR (if I remember correctly): it's a combination of our writable overlay + setting the installation dir as read-only (and xvfb-run is shipped as "patch" in the EB installation dir).

Copy link
Collaborator

@laraPPr laraPPr Sep 19, 2023

Choose a reason for hiding this comment

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

I'm also running into the same issue with #335

Copy link
Collaborator

Choose a reason for hiding this comment

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

@boegel Could the issue with Xvfb be related to the version of XZ? That is the only difference I can discern in EESSI.

Copy link
Member

Choose a reason for hiding this comment

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

It's (I believe) somehow related to the fact we now have write-only installations and the writable overlay. We should probably create an upstream PR to reverse the order of statements in the Xvfb postinstallcmds, which is what the hook update here is doing (or we just move forward with the hook update here).

Copy link
Contributor

Choose a reason for hiding this comment

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

OK, I understand this a bit better now. The cp -a xvfb-run fails in our particular build environment in which we use fuse-overlayfs (but not in a regular build environment when the file is just copied from one filesystem to another) because of the read-only permissions on the EasyBuild installation (where xvfb-run comes from).

I strongly prefer fixing this centrally in EasyBuild, so I've opened a pull request for it: easybuilders/easybuild-easyconfigs#18834

I'm also fixing the chmod u+x, which should actually be chmod a+x, so exec permissions on xvfb-run in the installation directory are set for all users, not just for the account used to perform the installation.

print_msg("Using custom postinstallcmds for %s: %s", ec.name, ec['postinstallcmds'])
else:
raise EasyBuildError("Xvfb-specific hook triggered for non-Xvfb easyconfig?!")


def pre_configure_hook(self, *args, **kwargs):
"""Main pre-configure hook: trigger custom functions based on software name."""
if self.name in PRE_CONFIGURE_HOOKS:
Expand Down Expand Up @@ -265,6 +274,7 @@ def pre_configure_hook_wrf_aarch64(self, *args, **kwargs):
'OpenBLAS': parse_hook_openblas_relax_lapack_tests_num_errors,
'Qt5': parse_hook_qt5_check_qtwebengine_disable,
'UCX': parse_hook_ucx_eprefix,
'Xvfb': parse_hook_xvfb_cp_permissions,
}

POST_PREPARE_HOOKS = {
Expand Down
3 changes: 3 additions & 0 deletions eessi-2023.06-eb-4.7.2-2021a.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ easyconfigs:
# see https://github.com/easybuilders/easybuild-easyconfigs/pull/18087
options:
from-pr: 18087
- RStudio-Server-1.4.1717-foss-2021a-Java-11-R-4.1.0.eb:
options:
include-easyblocks-from-pr: 2557