provider-corner / vigenere

A toy provider implementing an expanded vigenere cipher, to serve as a programming example
Other
12 stars 8 forks source link

Build Fails for Alternate OpenSSL Location #9

Closed jmcpheters closed 4 months ago

jmcpheters commented 4 months ago

I want to try vigenere on WLS 2 with Ubuntu. The latest version has OpenSSL 1.1.1 installed, so I downloaded OpenSSL 3.0.11 and build it via:

$ ./Configure --prefix=/home/pmlinux64/local --openssldir=/home/pmlinux64/local/ssl -d make make install

I confirmed the installation is populated in the expected location:

$ ls /home/pmlinux64/local bin include lib64 share ssl

When I try to build vigenere with alternative OpenSSL 3 location path, per README.md, it fails as shown below. Please advise on how to do a successful build.

$ cmake -DCMAKE_PREFIX_PATH=/home/pmlinux64/local -S . -B _build CMake Error at CMakeLists.txt:13 (add_subdirectory): The source directory

/home/pmlinux64/vigenere-main/libprov

does not contain a CMakeLists.txt file.

CMake Error at CMakeLists.txt:14 (include): include could not find requested file: libprov/cmake/provider.cmake

CMake Error at CMakeLists.txt:15 (setup_provider_openssl): Unknown CMake command "setup_provider_openssl".

-- Configuring incomplete, errors occurred!

levitte commented 4 months ago

Ah, I might want to clarify this in the README. What you need to do is this:

$ git submodule update --init
Submodule 'libprov' (https://github.com/provider-corner/libprov.git) registered for path 'libprov'
Cloning into '/home/levitte/tmp/vigenere/libprov'...
Submodule path 'libprov': checked out 'd46906398e2ae483bf150b1de2c1a17c2c1715d4'

This is a one-time thing. If libprov is update in the future, git submodule update... this is actually something you can do on a regular basis, just to make sure.

Anyway, that will populate libprov and make sure you can build.

levitte commented 4 months ago

I've update README.md with a note mentioning having to deal with submodules and how. I hope that helps.

jmcpheters commented 4 months ago

With the additional git command to pull in libprov, it builds. There is one warning though:

CMake Deprecation Warning at libprov/CMakeLists.txt:1 (cmake_minimum_required): Compatibility with CMake < 3.5 will be removed from a future version of CMake.

Update the VERSION argument value or use a ... suffix to tell CMake that the project does not need compatibility with older versions.

jmcpheters commented 4 months ago

I needed an extra step to get the executables to work. The vigenere.md file make it sound like as long as vigenere.so is in your cwd, the executables will work. I did not find that to be true, even if I set and exported LD_LIBRARY_PATH to include the full path the the _build directory. Instead execution attempts resulted in the error messages saying vigenere.so was not found in the OpenSSL installation ossl-modules directory. After manually copying it to that location, the executables worked.

levitte commented 4 months ago

OpenSSL documents how to specify the location of provider modules:

... but come to think of it, nothing stops me from adding this list to the vigenere README