From m@rkk||k @end|ng |rom gm@||@com  Tue Jun  4 11:14:35 2019
From: m@rkk||k @end|ng |rom gm@||@com (Mark Klik)
Date: Tue, 4 Jun 2019 11:14:35 +0200
Subject: [Rd] undefined symbol errors when compiling package using ALTREP API
Message-ID: <CACdkz5-3-Z+YqoMoEwC6LPYFxw_NDRHOQG7x3ymai=PU7OjOoA@mail.gmail.com>

Hello,

I'm developing a package (lazyvec) that makes full use of the ALTREP
framework (R >= 3.6.0).
One application of the package is to wrap existing ALTREP vectors in a new
ALTREP vector and pass all calls from R to the contained object. The
purpose of this is to provide a diagnostic framework for working with
ALTREP vectors and show information about internal calls.

The package builds on Windows and OSX but fails to build on Linux as can be
seen from the link to the Travis build:
https://travis-ci.org/fstpackage/lazyvec/jobs/539442806

The reason of build failure is that many ALTREP methods generate 'undefined
symbol' errors upon building the package (on Linux). I've checked the R
source code and the undefined symbols seems to be related to the
'attribute_hidden' before the function definition. For example, the method
'ALTVEC_EXTRACT_SUBSET' is defined as:

SEXP attribute_hidden ALTVEC_EXTRACT_SUBSET(SEXP x, SEXP indx, SEXP call)

My question is why these differences between Windows / OSX and Linux exist
and if they are intentional?
Do I need special build parameters to make sure my package builds correctly
on Linux?

thanks for all the hard work!

best,
Mark

PS: some additional info:

package github repository: https://github.com/fstpackage/lazyvec
AppVeyor package build logs:
https://ci.appveyor.com/project/fstpackage/lazyvec
Travis package build logs: https://travis-ci.org/fstpackage/lazyvec/builds

	[[alternative HTML version deleted]]



[Rd] undefined symbol errors when compiling package using ALTREP API
Mark Klik