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

Package C++ code fails to compile due to invalid static_cast in nanodbc.cpp #512

Closed
alexkyllo opened this issue Oct 15, 2022 · 0 comments · Fixed by #519
Closed

Package C++ code fails to compile due to invalid static_cast in nanodbc.cpp #512

alexkyllo opened this issue Oct 15, 2022 · 0 comments · Fixed by #519

Comments

@alexkyllo
Copy link

Issue Description and Expected Result

I was trying to build this package locally to see if I can work on a fix for #299. I didn't find any specific instructions here for how to compile the package's C++ code, so I just tried devtools::load_all(). It fails with the below compilation error on both my Ubuntu and Windows machines, and it appears to be an invalid cast from nanodbc::connection to bool at https://github.com/r-dbi/odbc/blob/main/src/nanodbc/nanodbc.cpp#L3467. When I comment out that assert, it compiles successfully and I can run the tests. I would expect it to compile without having to do that, though. Did I do something wrong? Or does this code only compile on an older GCC version or something? (Looks like I have 10.3)

Re-compiling odbc
-  installing *source* package 'odbc' ...
   ** using staged installation
   ** libs
   g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-42~1.1/include" -DNDEBUG  -I'C:/Users/jekyllo/AppData/Local/R/win-library/4.2/Ro   g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-42~1.1/include" -DNDEBUG  -I'C:/Users/jekyllo/AppData/Local/R/win-library/4.2/Ro   g++  -std=gnu++11 -I"C:/PROGRA~1/R/R-42~1.1/include" -DNDEBUG  -I'C:/Users/jekyllo/AppData/Local/R/win-library/4.2/Ro   In file included from c:\rtools42\x86_64-w64-mingw32.static.posix\lib\gcc\x86_64-w64-mingw32.static.posix\10.3.0\inc,                    from nanodbc/nanodbc.cpp:33:
   nanodbc/nanodbc.cpp: In function 'std::__cxx11::list<nanodbc::data_source> nanodbc::list_data_sources()':
   nanodbc/nanodbc.cpp:34:30: error: no match for 'operator!' (operand type is 'nanodbc::connection')
      34 | #define NANODBC_ASSERT(expr) assert(expr)
         |                              ^~~~~~
   nanodbc/nanodbc.cpp:3467:9: note: in expansion of macro 'NANODBC_ASSERT'
    3467 |         NANODBC_ASSERT(env);
         |         ^~~~~~~~~~~~~~
   nanodbc/nanodbc.cpp:34:30: note: candidate: 'operator!(bool)' (built-in)
      34 | #define NANODBC_ASSERT(expr) assert(expr)
         |                              ^~~~~~
   nanodbc/nanodbc.cpp:3467:9: note: in expansion of macro 'NANODBC_ASSERT'
    3467 |         NANODBC_ASSERT(env);
         |         ^~~~~~~~~~~~~~
   nanodbc/nanodbc.cpp:34:30: note:   no known conversion for argument 1 from 'nanodbc::connection' to 'bool'
      34 | #define NANODBC_ASSERT(expr) assert(expr)
         |                              ^~~~~~
   nanodbc/nanodbc.cpp:3467:9: note: in expansion of macro 'NANODBC_ASSERT'
    3467 |         NANODBC_ASSERT(env);
         |         ^~~~~~~~~~~~~~
   make: *** [Makevars.win:17: nanodbc.o] Error 1
   ERROR: compilation failed for package 'odbc'
-  removing 'C:/Users/jekyllo/AppData/Local/Temp/RtmpE3Ta7t/devtools_install_1cf442b29be/odbc'
Error in `(function (command = NULL, args = character(), error_on_status = TRUE, ...`:
! System command 'Rcmd.exe' failed
---
Exit status: 1
stdout & stderr: <printed>
---

Database

N/A

Reproducible Example

devtools::load_all()

-->

Session Info
devtools::session_info()
#> - Session info -------------------------------------------------------------------------------------------------------
 setting  value
 version  R version 4.2.1 (2022-06-23 ucrt)
 os       Windows 10 x64 (build 22621)
 system   x86_64, mingw32
 ui       RTerm
 language (EN)
 collate  English_United States.1252
 ctype    English_United States.1252
 tz       America/Los_Angeles
 date     2022-10-15
 pandoc   2.19.2 @ C:\\PROGRA~1\\Pandoc\\pandoc.exe

- Packages -----------------------------------------------------------------------------------------------------------
 ! package     * version    date (UTC) lib source
   bit           4.0.4      2020-08-04 [1] CRAN (R 4.2.1)
   bit64         4.0.5      2020-08-30 [1] CRAN (R 4.2.1)
   blob          1.2.3      2022-04-10 [1] CRAN (R 4.2.1)
   brio          1.1.3      2021-11-30 [1] CRAN (R 4.2.1)
   cachem        1.0.6      2021-08-19 [1] CRAN (R 4.2.1)
   callr         3.7.2      2022-08-22 [1] CRAN (R 4.2.1)
   cli           3.4.1      2022-09-23 [1] CRAN (R 4.2.1)
   crayon        1.5.2      2022-09-29 [1] CRAN (R 4.2.1)
   DBI           1.1.3      2022-06-18 [1] CRAN (R 4.2.1)
   desc          1.4.2      2022-09-08 [1] CRAN (R 4.2.1)
   devtools      2.4.5      2022-10-11 [1] CRAN (R 4.2.1)
   digest        0.6.29     2021-12-01 [1] CRAN (R 4.2.1)
   ellipsis      0.3.2      2021-04-29 [1] CRAN (R 4.2.1)
   fansi         1.0.3      2022-03-24 [1] CRAN (R 4.2.1)
   fastmap       1.1.0      2021-01-25 [1] CRAN (R 4.2.1)
   fs            1.5.2      2021-12-08 [1] CRAN (R 4.2.1)
   glue          1.6.2      2022-02-24 [1] CRAN (R 4.2.1)
   hms           1.1.2      2022-08-19 [1] CRAN (R 4.2.1)
   htmltools     0.5.3      2022-07-18 [1] CRAN (R 4.2.1)
   htmlwidgets   1.5.4      2021-09-08 [1] CRAN (R 4.2.1)
   httpuv        1.6.5      2022-01-05 [1] CRAN (R 4.2.1)
   later         1.3.0      2021-08-18 [1] CRAN (R 4.2.1)
   lifecycle     1.0.3      2022-10-07 [1] CRAN (R 4.2.1)
   magrittr      2.0.3      2022-03-30 [1] CRAN (R 4.2.1)
   memoise       2.0.1      2021-11-26 [1] CRAN (R 4.2.1)
   mime          0.12       2021-09-28 [1] CRAN (R 4.2.0)
   miniUI        0.1.1.1    2018-05-18 [1] CRAN (R 4.2.1)
 R odbc        * 1.3.3.9000 <NA>       [?] <NA>
   pillar        1.8.1      2022-08-19 [1] CRAN (R 4.2.1)
   pkgbuild      1.3.1      2021-12-20 [1] CRAN (R 4.2.1)
   pkgconfig     2.0.3      2019-09-22 [1] CRAN (R 4.2.1)
   pkgload       1.3.0      2022-06-27 [1] CRAN (R 4.2.1)
   prettyunits   1.1.1      2020-01-24 [1] CRAN (R 4.2.1)
   processx      3.7.0      2022-07-07 [1] CRAN (R 4.2.1)
   profvis       0.3.7      2020-11-02 [1] CRAN (R 4.2.1)
   promises      1.2.0.1    2021-02-11 [1] CRAN (R 4.2.1)
   ps            1.7.1      2022-06-18 [1] CRAN (R 4.2.1)
   purrr         0.3.5      2022-10-06 [1] CRAN (R 4.2.1)
   R6            2.5.1      2021-08-19 [1] CRAN (R 4.2.1)
   Rcpp          1.0.9      2022-07-08 [1] CRAN (R 4.2.1)
   remotes       2.4.2      2021-11-30 [1] CRAN (R 4.2.1)
   rlang         1.0.6      2022-09-24 [1] CRAN (R 4.2.1)
   rprojroot     2.0.3      2022-04-02 [1] CRAN (R 4.2.1)
   rstudioapi    0.14       2022-08-22 [1] CRAN (R 4.2.1)
   sessioninfo   1.2.2      2021-12-06 [1] CRAN (R 4.2.1)
   shiny         1.7.2      2022-07-19 [1] CRAN (R 4.2.1)
   stringi       1.7.8      2022-07-11 [1] CRAN (R 4.2.1)
   stringr       1.4.1      2022-08-20 [1] CRAN (R 4.2.1)
   testthat    * 3.1.5      2022-10-08 [1] CRAN (R 4.2.1)
   tibble        3.1.8      2022-07-22 [1] CRAN (R 4.2.1)
   urlchecker    1.0.1      2021-11-30 [1] CRAN (R 4.2.1)
   usethis       2.1.6      2022-05-25 [1] CRAN (R 4.2.1)
   utf8          1.2.2      2021-07-24 [1] CRAN (R 4.2.1)
   vctrs         0.4.2      2022-09-29 [1] CRAN (R 4.2.1)
   withr         2.5.0      2022-03-03 [1] CRAN (R 4.2.1)
   xtable        1.8-4      2019-04-21 [1] CRAN (R 4.2.1)

 [1] C:/Users/jekyllo/AppData/Local/R/win-library/4.2
 [2] C:/Program Files/R/R-4.2.1/library
@detule detule added the nanodbc label Oct 23, 2022
Odraio added a commit to Odraio/odbc that referenced this issue Nov 4, 2022
…ue to invalid static_cast in nanodbc.cpp)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants