@@ -43,20 +43,31 @@ RUN chmod +x /snap/bin/snapcraft
43
43
# Workaround for old buggy version of patchelf
44
44
ADD https :// github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz /opt/patchelf/patchelf.tar.gz
45
45
RUN cd / opt / patchelf && tar - xvf patchelf .tar .gz
46
- ENV ELF_PY = / snap / snapcraft / current / lib / python3 .10 / site - packages / snapcraft_legacy / internal / elf .py
47
- RUN echo ' def new_patch(self, *, elf_file):' >> $ {ELF_PY } && \
48
- echo ' if elf_file.dependencies:' >> $ {ELF_PY } && \
49
- echo ' rpath = self._get_rpath(elf_file)' >> $ {ELF_PY } && \
50
- echo ' self._run_patchelf(' >> $ {ELF_PY } && \
51
- echo ' patchelf_args=["--force-rpath", "--set-rpath", rpath],' >> $ {ELF_PY } && \
52
- echo ' elf_file_path=elf_file.path' >> $ {ELF_PY } && \
53
- echo ' )' >> $ {ELF_PY } && \
54
- echo ' if elf_file.interp:' >> $ {ELF_PY } && \
55
- echo ' self._run_patchelf(' >> $ {ELF_PY } && \
56
- echo ' patchelf_args=["--set-interpreter", self._dynamic_linker],' >> $ {ELF_PY } && \
57
- echo ' elf_file_path=elf_file.path' >> $ {ELF_PY } && \
58
- echo ' )' >> $ {ELF_PY } && \
59
- echo ' Patcher.patch = new_patch' >> $ {ELF_PY }
46
+ RUN ln - s / snap / snapcraft / current / lib / python3 .*/ site - packages / snapcraft / elf / _patcher .py / opt / patchelf / _patcher .py
47
+ RUN echo ' Patcher._old_run_patchelf = Patcher._run_patchelf' >> / opt / patchelf / _patcher .py && \
48
+ echo ' def new_run_patchelf(self, patchelf_args, elf_file_path):' >> / opt / patchelf / _patcher .py && \
49
+ echo ' done = False' >> / opt / patchelf / _patcher .py && \
50
+ echo ' try:' >> / opt / patchelf / _patcher .py && \
51
+ echo ' i = patchelf_args.index("--set-rpath")' >> / opt / patchelf / _patcher .py && \
52
+ echo ' self._old_run_patchelf(' >> / opt / patchelf / _patcher .py && \
53
+ echo ' patchelf_args=["--force-rpath", "--set-rpath", patchelf_args[i + 1]],' >> / opt / patchelf / _patcher .py && \
54
+ echo ' elf_file_path=elf_file_path' >> / opt / patchelf / _patcher .py && \
55
+ echo ' )' >> / opt / patchelf / _patcher .py && \
56
+ echo ' done = True' >> / opt / patchelf / _patcher .py && \
57
+ echo ' except ValueError:' >> / opt / patchelf / _patcher .py && \
58
+ echo ' pass' >> / opt / patchelf / _patcher .py && \
59
+ echo ' try:' >> / opt / patchelf / _patcher .py && \
60
+ echo ' i = patchelf_args.index("--set-interpreter")' >> / opt / patchelf / _patcher .py && \
61
+ echo ' self._old_run_patchelf(' >> / opt / patchelf / _patcher .py && \
62
+ echo ' patchelf_args=["--set-interpreter", patchelf_args[i + 1]],' >> / opt / patchelf / _patcher .py && \
63
+ echo ' elf_file_path=elf_file_path' >> / opt / patchelf / _patcher .py && \
64
+ echo ' )' >> / opt / patchelf / _patcher .py && \
65
+ echo ' done = True' >> / opt / patchelf / _patcher .py && \
66
+ echo ' except ValueError:' >> / opt / patchelf / _patcher .py && \
67
+ echo ' pass' >> / opt / patchelf / _patcher .py && \
68
+ echo ' if not done:' >> / opt / patchelf / _patcher .py && \
69
+ echo ' self._old_run_patchelf(patchelf_args=patchelf_args, elf_file_path=elf_file_path)' >> / opt / patchelf / _patcher .py && \
70
+ echo ' Patcher._run_patchelf = new_run_patchelf' >> / opt / patchelf / _patcher .py
60
71
61
72
# Multi - stage build , only need the snaps from the builder . Copy them one at a
62
73
# time so they can be cached .
0 commit comments