elrond-sdk-erdpy icon indicating copy to clipboard operation
elrond-sdk-erdpy copied to clipboard

Handle Rust (sc-meta) dependencies: pkg-config, libssl-dev

Open andreibancioiu opened this issue 11 months ago • 2 comments

mxpy is not aware of some dependencies of sc-meta:

  • https://github.com/multiversx/mx-template-devcontainers/blob/main/resources/smart-contracts-rust/Dockerfile#L28
  • https://github.com/multiversx/mx-sdk-rust-contract-builder/blob/main/Dockerfile#L19

Reported here: https://t.me/MultiversXDevelopers/118542.

Summary of the error message:

error: failed to run custom build command for openssl-sys

andreibancioiu avatar Sep 23 '23 21:09 andreibancioiu

Workaround: run sudo apt-get install pkg-config libssl-dev (on Ubuntu).

andreibancioiu avatar Oct 10 '23 16:10 andreibancioiu

More detailed error message (for future reference):

error: failed to run custom build command for `openssl-sys             
 v0.9.93`                                                               
                                                                        
 Caused by:                                                             
   process didn't exit successfully:                                    
   (...)
           
 "--cflags" "openssl"`                                                  
   The pkg-config command could not be found.                           
                                                                        
   Most likely, you need to install a pkg-config package for            
 your OS.                                                               
   Try `apt install pkg-config`, or `yum install pkg-config`,           
   or `pkg install pkg-config`, or `apk add pkgconfig`                  
 depending on your distribution.                                        
                                                                        
   If you've already installed it, ensure the pkg-config                
 command is one of the                                                  
   directories in the PATH environment variable.                        
                                                                        
   If you did not expect this build to link to a pre-installed          
 system library,                                                        
   then check documentation of the openssl-sys crate for an             
 option to                                                              
   build the library from source, or disable features or                
 dependencies                                                           
   that require pkg-config.                                             
                                                                        
   --- stderr                                                           
   thread 'main' panicked at '                                          
                                                                        
   Could not find directory of OpenSSL installation, and this           
 `-sys` crate cannot                                                    
   proceed without this knowledge. If OpenSSL is installed and          
 this crate had                                                         
   trouble finding it,  you can set the `OPENSSL_DIR`                   
 environment variable for the                                           
   compilation process.                                                 
                                                                        
   Make sure you also have the development packages of openssl          
 installed.                                                             
   For example, `libssl-dev` on Ubuntu or `openssl-devel` on            
 Fedora.                                                                
                                                                        
   If you're in a situation where you think the directory               
 *should* be found                                                      
   automatically, please open a bug at                                  
 https://github.com/sfackler/rust-openssl                               
   and include information about your system as well as this            
 message.                                                               
                                                                        
   $HOST = x86_64-unknown-linux-gnu                                     
   $TARGET = x86_64-unknown-linux-gnu                                   
   openssl-sys = 0.9.93                                                 
                                                                        
                                                                        
   It looks like you're compiling on Linux and also targeting           
 Linux. Currently this                                                  
   requires the `pkg-config` utility to find OpenSSL but                
 unfortunately `pkg-config`                                             
   could not be found. If you have OpenSSL installed you can            
 likely fix this by                                                     
   installing `pkg-config`.                                             
                                       
 error: failed to compile `multiversx-sc-meta ...`                               

andreibancioiu avatar Dec 10 '23 10:12 andreibancioiu