Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation fails on macOS when built against mysql-connector-c #65

Closed
renkun-ken opened this issue Oct 5, 2017 · 15 comments
Closed

Comments

@renkun-ken
Copy link
Contributor

renkun-ken commented Oct 5, 2017

I tried installing both CRAN and latest dev version with mysql-connector-c (mysql-connector-c-6.1.11.high_sierra) but both failed with the following messages:

> install.packages("RMariaDB")
Package which is only available in source form, and may need compilation of C/C++/Fortran: ‘RMariaDB’
Do you want to attempt to install these from sources?
y/n: y
installing the source package ‘RMariaDB’

trying URL 'https://mirrors.eliteu.cn/CRAN/src/contrib/RMariaDB_1.0-2.tar.gz'
Content type 'application/x-gzip' length 38486 bytes (37 KB)
==================================================
downloaded 37 KB

Warning in strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
  unknown timezone 'default/Asia/Shanghai'
* installing *source* package ‘RMariaDB’ ...
** package ‘RMariaDB’ successfully unpacked and MD5 sums checked
Using mysql_config
Found mysql_config/mariadb_config cflags and libs!
Using PKG_CFLAGS=-I/usr/local/Cellar/mysql-connector-c/6.1.11/include 
Using PKG_LIBS=-L/usr/local/Cellar/mysql-connector-c/6.1.11/lib -l 
** libs
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaBinding.cpp -o MariaBinding.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaConnection.cpp -o MariaConnection.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaResult.cpp -o MariaResult.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaResultPrep.cpp -o MariaResultPrep.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaResultSimple.cpp -o MariaResultSimple.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaRow.cpp -o MariaRow.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaTypes.cpp -o MariaTypes.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c MariaUtils.cpp -o MariaUtils.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c RcppExports.cpp -o RcppExports.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c connection.cpp -o connection.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c driver.cpp -o driver.o
/usr/local/clang4/bin/clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/Cellar/mysql-connector-c/6.1.11/include  -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/3.4/Resources/library/plogr/include" -I/usr/local/include   -fPIC  -Wall -g -O2  -c result.cpp -o result.o
/usr/local/clang4/bin/clang++ -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/clang4/lib -o RMariaDB.so MariaBinding.o MariaConnection.o MariaResult.o MariaResultPrep.o MariaResultSimple.o MariaRow.o MariaTypes.o MariaUtils.o RcppExports.o connection.o driver.o result.o -L/usr/local/Cellar/mysql-connector-c/6.1.11/lib -l -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: library not found for -l-F/Library/Frameworks/R.framework/..
clang-4.0: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [RMariaDB.so] Error 1
ERROR: compilation failed for package ‘RMariaDB’
* removing ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/RMariaDB’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/RMariaDB’
Warning in install.packages :
  installation of package ‘RMariaDB’ had non-zero exit status

The downloaded source packages are in
	‘/private/var/folders/dh/6nhw4l5x0sq0wqgwh346fwjm0000gn/T/RtmpVYdVi0/downloaded_packages’

My session info

Session info ---------------------------------------------------------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.4.1 (2017-06-30)
 system   x86_64, darwin15.6.0        
 ui       RStudio (1.1.374)           
 language (EN)                        
 collate  en_US.UTF-8                 
 tz       <NA>                        
 date     2017-10-05                  

Packages -------------------------------------------------------------------------------------------------------------------------------------------
 package   * version date       source        
 base      * 3.4.1   2017-07-07 local         
 compiler    3.4.1   2017-07-07 local         
 datasets  * 3.4.1   2017-07-07 local         
 devtools    1.13.3  2017-08-02 CRAN (R 3.4.1)
 digest      0.6.12  2017-01-27 CRAN (R 3.4.0)
 graphics  * 3.4.1   2017-07-07 local         
 grDevices * 3.4.1   2017-07-07 local         
 memoise     1.1.0   2017-04-21 CRAN (R 3.4.0)
 methods   * 3.4.1   2017-07-07 local         
 stats     * 3.4.1   2017-07-07 local         
 tools       3.4.1   2017-07-07 local         
 utils     * 3.4.1   2017-07-07 local         
 withr       2.0.0   2017-07-28 CRAN (R 3.4.1)
 yaml        2.1.14  2016-11-12 CRAN (R 3.4.0)

I tried building against mariadb-connector-c and everything looks fine.

@krlmlr
Copy link
Member

krlmlr commented Oct 5, 2017

It installs beautifully on Travis, though: https://travis-ci.org/rstats-db/RMariaDB/jobs/283414936

Can you please share the output of mysql_config?

@renkun-ken
Copy link
Contributor Author

Usage: /usr/local/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/usr/local/Cellar/mysql-connector-c/6.1.11/include ]
        --cxxflags       [-I/usr/local/Cellar/mysql-connector-c/6.1.11/include ]
        --include        [-I/usr/local/Cellar/mysql-connector-c/6.1.11/include]
        --libs           [-L/usr/local/Cellar/mysql-connector-c/6.1.11/lib -l ]
        --libs_r         [-L/usr/local/Cellar/mysql-connector-c/6.1.11/lib -l ]
        --plugindir      [/usr/local/Cellar/mysql-connector-c/6.1.11/lib/plugin]
        --socket         [/tmp/mysql.sock]
        --port           [0]
        --version        [6.1.11]
        --variable=VAR   VAR is one of:
                pkgincludedir [/usr/local/Cellar/mysql-connector-c/6.1.11/include]
                pkglibdir     [/usr/local/Cellar/mysql-connector-c/6.1.11/lib]
                plugindir     [/usr/local/Cellar/mysql-connector-c/6.1.11/lib/plugin]

@krlmlr
Copy link
Member

krlmlr commented Oct 5, 2017

@jeroen: Does this ring a bell? The mysql_config output looks wrong, I feel something's missing after the -l for --libs?

@jeroen
Copy link
Member

jeroen commented Oct 5, 2017

Looks like a bug in mysql_config. @renkun-ken can you try building against mariadb-connector-c?

@jeroen
Copy link
Member

jeroen commented Oct 5, 2017

Here is the upstream bug report. I recommend building against mariadb-connector-c until they fix that (if they ever will, oracle doesn't care and everyone has switched to mariadb).

@krlmlr
Copy link
Member

krlmlr commented Oct 5, 2017

Unfortunately, mariadb-connector-c had a severe bug that made RMariaDB almost unusable, blobs and strings didn't work with the prepared statement protocol. For some reason I've seen it only on Fedora and OS X, not on Ubuntu or Windows. Maybe compiler settings/differences? I'll switch orders in the configure script once 2.3.4 hits the repos of xenial and Debian stable, and Fedora stable (?) (#62).

@jeroen
Copy link
Member

jeroen commented Oct 5, 2017

We are building the CRAN binaries against the homebrew version of mariadb-connector-c which seems all OK? But they are still on version 2.2.2 (perhaps because of the bugs introduced in 2.3)

@krlmlr
Copy link
Member

krlmlr commented Oct 5, 2017

Something weird is going on, I agree. If the DBItest passes, everything is OK, but they aren't currently checked with R CMD check, only with devtools::test(). Can you please double-check?

@jeroen
Copy link
Member

jeroen commented Oct 5, 2017

Xenial/Debian/Federa won't backport 2.3.4 into their released versions. You'll have to work with what is in there now, or wait for the next release of those distributions...

@krlmlr
Copy link
Member

krlmlr commented Oct 5, 2017

That would be a reason to bundle the lib, no?

@jeroen
Copy link
Member

jeroen commented Oct 5, 2017

Bundling would be really painful, because mariadb-client needs to properly be configured against the systems ssl, iconv, etc. Moreover you will need to fix all compiler warnings in the mariadb source code to please CRAN. I wouldn't go there.

The best strategy in the long run is to work with what is in the distros, and recommend people to upgrade if possible. The only versions we can control is what ships with the binary packages for windows and osx.

According to CRAN checks, things are working now on OSX (mariadb-connector-c 2.2.2) and Windows (mariadb-connector-c 2.3.2), no?

@krlmlr
Copy link
Member

krlmlr commented Oct 5, 2017

Then we'll need to nudge the distros to backport the relevant patch, because I can't seem to work around the problem and still use the prepared statement protocol (53e571d).

@krlmlr
Copy link
Member

krlmlr commented Oct 15, 2017

@renkun-ken: For now, I'd be happy to review a PR that works around this in the configure script. I'd like to release in a week or so.

@krlmlr
Copy link
Member

krlmlr commented Dec 18, 2019

Stale, please open a new issue if problems persist.

@krlmlr krlmlr closed this as completed Dec 18, 2019
@github-actions
Copy link

This old thread has been automatically locked. If you think you have found something related to this, please open a new issue and link to this old issue if necessary.

@github-actions github-actions bot locked and limited conversation to collaborators Dec 18, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants