Several errors during enigma-core installation

#1

Hi,

I am trying to install the recently open-sourced enigma-core component,

  1. I am on Ubuntu 18.04 LTS and have successfully installed intel sgx driver (i.e. /dev/isgx appears) and sgx sdk.

  2. However I was not able to install Intel platform software (PSW) as “icslClient” cannot be found at the specified URL in Intel’s installation manual. So I skipped it.

  3. As DCAP is not specified in the Engima-core instruction, i also skip it.

  4. Clone the engima-core directory, successfully built the docker image. Run docker then got an error message “Platform service initialization failed due to DAL error.”

  5. Ignore this press return, I can get into docker. Inside docker, successfully built project.

  6. Then cd /app, cargo test, I got several warnings and an error of "error while loading shared libraries librocksdb.so.5.14… "

The first error looks like PSW problem, but not sure about the second one in Cargo test. Highly appreciate if anyone can help me. Btw, does anyone know at where to download “iclsClient”?

thank you in advance,

1 Like
#2

Hi @Zdyan, and welcome to the forum!

You can ignore #3 and #4 for now. I believe you’ll need to take care of #2 eventually but we can focus on #6, which is specific to the enigma build.

Another observation: you should not need to run docker as root with sudo. If you can’t run docker as a regular user, there is probably something that can be tweaked in your configuration, which I suggest you investigate.

So let’s focus on the error related to “librocksdb.so.5.14…”. I bet you are seeing this error when you compiled enigma-core in one run, then exited from the container, launched it again, and then tried run the tests. Some compiled shared libraries are put in a directory that is lost between runs. Here’s what happens:

For optimization reasons, there is a component (RocksDB) that is built separately at compile time as a shared library and put in the system library folder: /usr/local/lib. That library needs to be accessible when you run the tests. If you do all your work from compile to test/run when you bring up the container, you should not have any problems. But if you plan to bring the container up and down a few times, then you have to save those shared libraries so that remain accessible between runs. Here’s one way:

  1. Bring up your container, cd into ~/enigma-core/enigma-core and run make DEBUG=1 (the debug flag is so core will be more verbose should there be any errors)
  2. Create the following folder ~/enigma-core/lib that will be preserved between runs because it’s inside the folder that you add as a volume to the container.
  3. cp /usr/local/lib/librocksdb* ~/enigma-core/lib (there should be 4 different files: one real file and 3 softlinks)
  4. And then run `export LD_LIBRARY_PATH="$LD_LIBRARY_PATH;~/enigma-core/lib" so that we tell the system to look in this folder for shared libraries.

This last step should be valid for the session the container is up. You will need to execute it every time you bring up the container (or add it to the container .bashrc file but that is more involved at this point because you are using an already built image, and you would need build your own image first). I say stick to the first solution as we will soon provide a developer environment that will address issues like this.

1 Like
#3

On running docker as a non-root user:

1 Like
#4

Hello Zdyan,

Regarding #6: try run “ldconfig” and then run the tests again

1 Like
#5

Hi Victor:
thank you for the insight, it worked and now have passed the test!

1 Like
#6

Hi moria:

This also works for me, thank you!

#7

done, added my non-root user to docker group to start container without sudo.

:+1:

1 Like
#8

Awesome! Great to hear :slight_smile: