-
Notifications
You must be signed in to change notification settings - Fork 13
[feature request] Compiling for x86 misses libmemsvc #166
Comments
If my "possible solution" is desired, I will add those changes and push that. |
First of all, the maintained version of the About the I'd consider two other ideas:
An important point to take into consideration is that different GEM emulators on Finally, a possible long-term solution would be to get rid of the container altogether. The multiple mount-binds seem to show that this is actually the goal. That solution would require: (1) remove all the SSH calls and the configuration files on the CTP7/GEM emulator, (2) not use IPBus anymore and (3) be able to change the |
So now
as it would for the CTP7 peta stage:
accommodating this would require minimal changes to the makefiles.
I don't know what benefit this offers over bundling the wrapper in
Possibly, but IPBus has long had
I can't speak to this right now, the containerized approach offered the long-desired emulator for a GLIB, and changing this now is definitely not something I'd advocate putting any time on in the near term. Long story short, we need a solution on the timescale of "right now" and I see two possibilities:
|
Yes, but it makes sense for the
Since the container image already exists, it is trivial to extract a We obviously come back to the synchronization between the container base image and the host OS. Using a real Also, why is the
Actually, I'm still not sure what the
I would tend to agree. However, the register accesses in the Xilinx provides IP cores which map PCIe MMIOs to an AXI bus. This is extremely close to what is done on the CTP7. There is the question of how to map the PCIe address space to the user space, but that shouldn't be hard to solve (the CTP7 solution wouldn't work since the base address is dynamic; and it is dangerous anyway).
Since the RPM content can be extracted from the container image, producing it should be doable quickly. |
Eliding everything except the core issue at this time.
It isn't really, but mostly because I always felt that treating the
Currently, what "compile"-time (container build, not |
Since the If the Another possibility would be to build the RPMs for a given distribution and then install them the container during its build. If there is an incompatibility, it should be caught by the package manager. However, the synchronization between the host and the container would be lost. Mount-binding executable files cannot provide any safety.
The whole root systems are independent, from the I understand you idea of a minimal bridge between the host and the HW. It is a good idea for compatibility and system administration, but it doesn't fit well with a container architecture. The only solid implementation I can think of is the long-term solution proposed in my first reply. It might be possible to hack something using the Linux namespaces, but that would be very tricky to get right and stable. |
Yeah... OK, if you can put together the RPM I can try plugging it into the builds to see how much more things need to change ( If it looks like it will be too onerous, then I'll drop the |
OK, that shouldn't be too complicated. The RPM should have the following structure:
(maybe without the symlinks) |
I've got a first incompatibility while installing the GLIBs for the QC7 setup. The uHAL libraries versions were different between the container and the host. This shouldn't have been an issue, but the Python bindings are installed in [gemuser@glib-shelf02-slot11 ~]$ reset_gtx.py
Traceback (most recent call last):
File "/usr/local/bin/reset_gtx.py", line 3, in <module>
import uhal
File "/usr/lib/python2.7/site-packages/uhal/__init__.py", line 14, in <module>
exec('raise type(e), type(e)(e.message + msg_suffix), sys.exc_info()[2]')
File "/usr/lib/python2.7/site-packages/uhal/__init__.py", line 5, in <module>
from ._core import *
ImportError: /usr/lib/python2.7/site-packages/uhal/_core.so: undefined symbol: _ZN4uhal5tests22measureFileReadLatencyERKSsjjmb
N.B. ImportError (or derived exception) raised when uHAL's __init__.py tries to load python bindings library
Maybe you need to add "/opt/cactus/lib", or some other path, to the "LD_LIBRARY_PATH" environment variable? This consolidate me in my idea that a container, designed as an isolated environment, should remain one. Binaries shouldn't be bind-mounted, but compiled specifically for the container. |
Brief summary of issue
In order to compile for
x86_64
(GLIB emulator) an equivalent oflibmemsvc
must be provided.Currently this file does not exist in
ctp7_modules
and @lpetre-ulb has a version that has been used for generating the GLIB emulator lpetre-ulb/gem_glib_swSomehow this needs to be included in the set of GEM tools, whether added here to
ctp7_modules
or independently as a dependency elsewhere.I and @mexanick propose that it is included here in
ctp7_modules
to reduce the number of multiplying packages.Types of issue
Expected Behavior
Compiling for
x86_64
should workCurrent Behavior
Doesn't work
Steps to Reproduce (for bugs)
Possible Solution (for bugs)
Include sources for
IPBus
basedlibmemsvc
toctp7_modules
(this was how I resolved the issue for my testing, it was added to aserver
subdirectory as seen in thectp7_modules.mk
file)Your Environment
366ee77
The text was updated successfully, but these errors were encountered: