mdfortune / simGWAS

Simulating the expected output from a GWAS with a given causal model.
1 stars 11 forks source link

Fix Solaris build #8

Open richelbilderbeek opened 3 years ago

richelbilderbeek commented 3 years ago

smGWAS is not on CRAN due to the Solaris build. Fix it.

I volunteered to do so. As I am not a Collaborator (yet), I cannot assign myself.

richelbilderbeek commented 3 years ago

Used `rhub::build_on_solaris()´ (or something similar) to get the email (I did not add any formatting) below. Links:

Build ID: simGWAS_0.2.0-3.tar.gz-d5ba9bdc165c4491a4cbe18045dc5354 Platform: Oracle Solaris 10, x86, 32 bit, R-release Submitted: 11 minutes 7 seconds ago Build time: 11 minutes 4.8 seconds Build ID: simGWAS_0.2.0-3.tar.gz-d5ba9bdc165c4491a4cbe18045dc5354 Platform: Oracle Solaris 10, x86, 32 bit, R-release Submitted: 11 minutes 7 seconds ago Build time: 11 minutes 4.8 seconds
Build ID: simGWAS_0.2.0-3.tar.gz-d5ba9bdc165c4491a4cbe18045dc5354
Platform: Oracle Solaris 10, x86, 32 bit, R-release
Submitted: 11 minutes 7 seconds ago
Build time: 11 minutes 4.8 seconds

ERRORS: * checking whether package ‘simGWAS’ can be installed ... ERROR Installation failed. See ‘/export/home/XHHhN8g/simGWAS.Rcheck/00install.out’ for details. See the full build log: HTML, text, artifacts. Have questions, suggestions or want to report a bug? Please file an issue ticket at GitHub. Thank You for using the R-hub builder.

richelbilderbeek commented 3 years ago

Here I copy the 00install.ou:

'getOption("repos")' replaces Bioconductor standard repositories, see
'?repositories' for details

replacement repositories:
    CRAN: https://cloud.r-project.org

* installing *source* package ‘simGWAS’ ...
** using staged installation
** libs
/opt/csw/bin/g++-5.5 -std=gnu++11 -I"/opt/csw/lib/R/include" -DNDEBUG  -I'/export/home/XHHhN8g/R/Rcpp/include' -I/opt/csw/include   -fPIC  -O2 -pipe -fno-omit-frame-pointer -m32 -march=pentiumpro  -c RcppExports.cpp -o RcppExports.o
/opt/csw/bin/g++-5.5 -std=gnu++11 -I"/opt/csw/lib/R/include" -DNDEBUG  -I'/export/home/XHHhN8g/R/Rcpp/include' -I/opt/csw/include   -fPIC  -O2 -pipe -fno-omit-frame-pointer -m32 -march=pentiumpro  -c algebra.cpp -o algebra.o
algebra.cpp: In function ‘Rcpp::NumericVector MatrixVector(const NumericMatrix&, const NumericVector&, bool)’:
algebra.cpp:21:42: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
         __m128d P = _mm_set1_pd(vector[i]);
                                          ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:68:1: error: inlining failed in call to always_inline ‘__m128d _mm_set1_pd(double)’: target specific option mismatch
 _mm_set1_pd (double __F)
 ^
algebra.cpp:21:42: error: called from here
         __m128d P = _mm_set1_pd(vector[i]);
                                          ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:25:46: error: called from here
             __m128d v0 = _mm_loadu_pd(&ref[j]); // Stupid R limitation
                                              ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:26:48: error: called from here
             __m128d v1 = _mm_loadu_pd(&ref[j+2]); // Stupid R limitation
                                                ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:27:45: error: called from here
             __m128d r = _mm_loadu_pd(&ret[j]); // Stupid R limitation
                                             ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:28:49: error: called from here
              __m128d r1 = _mm_loadu_pd(&ret[j+2]); // Stupid R limitation
                                                 ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:166:1: error: inlining failed in call to always_inline ‘void _mm_storeu_pd(double*, __m128d)’: target specific option mismatch
 _mm_storeu_pd (double *__P, __m128d __A)
 ^
algebra.cpp:33:39: error: called from here
             _mm_storeu_pd(&ret[j], v0); // Stupid R limitation
                                       ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:241:1: error: inlining failed in call to always_inline ‘__m128d _mm_add_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_add_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:32:36: error: called from here
             v1 = _mm_add_pd(v1, r1);
                                    ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:241:1: error: inlining failed in call to always_inline ‘__m128d _mm_add_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_add_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:31:35: error: called from here
             v0 = _mm_add_pd(v0, r);
                                   ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:265:1: error: inlining failed in call to always_inline ‘__m128d _mm_mul_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_mul_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:30:35: error: called from here
             v1 = _mm_mul_pd(v1, P);
                                   ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:265:1: error: inlining failed in call to always_inline ‘__m128d _mm_mul_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_mul_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:29:35: error: called from here
             v0 = _mm_mul_pd(v0, P);
                                   ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:166:1: error: inlining failed in call to always_inline ‘void _mm_storeu_pd(double*, __m128d)’: target specific option mismatch
 _mm_storeu_pd (double *__P, __m128d __A)
 ^
algebra.cpp:34:42: error: called from here
              _mm_storeu_pd(&ret[j+2], v1); // Stupid R limitation
                                          ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:68:1: error: inlining failed in call to always_inline ‘__m128d _mm_set1_pd(double)’: target specific option mismatch
 _mm_set1_pd (double __F)
 ^
algebra.cpp:21:42: error: called from here
         __m128d P = _mm_set1_pd(vector[i]);
                                          ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:68:1: error: inlining failed in call to always_inline ‘__m128d _mm_set1_pd(double)’: target specific option mismatch
 _mm_set1_pd (double __F)
 ^
algebra.cpp:21:42: error: called from here
         __m128d P = _mm_set1_pd(vector[i]);
                                          ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:25:46: error: called from here
             __m128d v0 = _mm_loadu_pd(&ref[j]); // Stupid R limitation
                                              ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:26:48: error: called from here
             __m128d v1 = _mm_loadu_pd(&ref[j+2]); // Stupid R limitation
                                                ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:27:45: error: called from here
             __m128d r = _mm_loadu_pd(&ret[j]); // Stupid R limitation
                                             ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:27:45: error: called from here
             __m128d r = _mm_loadu_pd(&ret[j]); // Stupid R limitation
                                             ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:28:49: error: called from here
              __m128d r1 = _mm_loadu_pd(&ret[j+2]); // Stupid R limitation
                                                 ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:124:1: error: inlining failed in call to always_inline ‘__m128d _mm_loadu_pd(const double*)’: target specific option mismatch
 _mm_loadu_pd (double const *__P)
 ^
algebra.cpp:28:49: error: called from here
              __m128d r1 = _mm_loadu_pd(&ret[j+2]); // Stupid R limitation
                                                 ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:166:1: error: inlining failed in call to always_inline ‘void _mm_storeu_pd(double*, __m128d)’: target specific option mismatch
 _mm_storeu_pd (double *__P, __m128d __A)
 ^
algebra.cpp:33:39: error: called from here
             _mm_storeu_pd(&ret[j], v0); // Stupid R limitation
                                       ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:241:1: error: inlining failed in call to always_inline ‘__m128d _mm_add_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_add_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:32:36: error: called from here
             v1 = _mm_add_pd(v1, r1);
                                    ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:241:1: error: inlining failed in call to always_inline ‘__m128d _mm_add_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_add_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:31:35: error: called from here
             v0 = _mm_add_pd(v0, r);
                                   ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:265:1: error: inlining failed in call to always_inline ‘__m128d _mm_mul_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_mul_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:30:35: error: called from here
             v1 = _mm_mul_pd(v1, P);
                                   ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:265:1: error: inlining failed in call to always_inline ‘__m128d _mm_mul_pd(__m128d, __m128d)’: target specific option mismatch
 _mm_mul_pd (__m128d __A, __m128d __B)
 ^
algebra.cpp:29:35: error: called from here
             v0 = _mm_mul_pd(v0, P);
                                   ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:166:1: error: inlining failed in call to always_inline ‘void _mm_storeu_pd(double*, __m128d)’: target specific option mismatch
 _mm_storeu_pd (double *__P, __m128d __A)
 ^
algebra.cpp:33:39: error: called from here
             _mm_storeu_pd(&ret[j], v0); // Stupid R limitation
                                       ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:166:1: error: inlining failed in call to always_inline ‘void _mm_storeu_pd(double*, __m128d)’: target specific option mismatch
 _mm_storeu_pd (double *__P, __m128d __A)
 ^
algebra.cpp:34:42: error: called from here
              _mm_storeu_pd(&ret[j+2], v1); // Stupid R limitation
                                          ^
In file included from algebra.cpp:3:0:
/opt/csw/lib/gcc/i386-pc-solaris2.10/5.5.0/include/emmintrin.h:166:1: error: inlining failed in call to always_inline ‘void _mm_storeu_pd(double*, __m128d)’: target specific option mismatch
 _mm_storeu_pd (double *__P, __m128d __A)
 ^
algebra.cpp:34:42: error: called from here
              _mm_storeu_pd(&ret[j+2], v1); // Stupid R limitation
                                          ^
gmake: *** [/opt/csw/lib/R/etc/Makeconf:181: algebra.o] Error 1
ERROR: compilation failed for package ‘simGWAS’
* removing ‘/export/home/XHHhN8g/R/simGWAS’
richelbilderbeek commented 3 years ago

It appears inlining fails:

inlining failed in call to always_inline [function name here]: target specific option mismatch

richelbilderbeek commented 3 years ago

Ah, the code is 'optimized' on Intel chips, as it calls emmintrin.h, an SSE2 library.

richelbilderbeek commented 3 years ago

I could fix this, by removing this 'optimization' code, but I need (1) tests (there are none) and (2) the current maintainer @chr1swallace thinking it is a good idea.

chr1swallace commented 3 years ago

(2) I think this is a good idea, but you would need to work on my fork, where I have rights. (1) I will put on my list to write some tests in the next couple of weeks - ok?

Thanks for your help!

richelbilderbeek commented 3 years ago

Great! Let me know when the tests are done :-). Using a Fork of your repo == easypeasy.