fRanz icon indicating copy to clipboard operation
fRanz copied to clipboard

Theres' no Makevars file in this repo

Open Paxanator opened this issue 6 years ago • 4 comments

We need to add Makevars/Makevars.win in order to link against librdkafka. It should consist of two options:

  1. Link against a system include/library if already installed
  2. Pull and compile and build a librdkafka for the package itself locally

This should pass R CMD CHECK. For examples, refer to: https://github.com/confluentinc/confluent-kafka-python/blob/master/tools/bootstrap-librdkafka.sh http://dirk.eddelbuettel.com/code/rcpp.cranusers.html https://stackoverflow.com/questions/50539270/writing-configure-file-for-an-r-package ... though everything i've read says autconf is not worth it

It's important to note the below has worked on mac but not CentOS

INSTALLDIR = $(shell pwd)

PKG_LIBS = -L$(INSTALLDIR)/librdkafka/src-cpp -lrdkafka++
PKG_CXXFLAGS = -std=c++11 -I$(INSTALLDIR)/librdkafka/src-cpp

.PHONY: all install_librdkadka

all: install_librdkadka

install_librdkadka:
	if [ ! -d $(INSTALLDIR)/librdkafka/src-cpp ] ; \
	then \
		mkdir -p $(INSTALLDIR)/librdkafka && \
		cd ../inst && \
		tar xzf librdkafka-1.0.0.tar.gz && \
		cd librdkafka-1.0.0 && \
		./configure --prefix="$(INSTALLDIR)/librdkafka"&& \
		$(MAKE) && \
		$(MAKE) install && \
		mv * $(INSTALLDIR)/librdkafka ; \
	fi

additionally it doesn't allow for just linking against a system lib if available

Paxanator avatar May 19 '19 22:05 Paxanator

I must say I don't have a good sense of the right way to go about doing this. Seems like there's a million options

Paxanator avatar May 19 '19 22:05 Paxanator

Other option to look at: https://github.com/r-dbi/RPostgres

Note the apt get libpq in their .travis.yml https://github.com/r-dbi/RPostgres/blob/master/.travis.yml#L56-L60

Paxanator avatar May 19 '19 23:05 Paxanator

I would like to additionally link against avro too since there's a benefit of using same toolchain to build multiple things.

Paxanator avatar May 19 '19 23:05 Paxanator

As librdkafka is widely accessible with system package managers I believe having it as system dependency is much more easier and reliable.

dselivanov avatar Jan 30 '20 06:01 dselivanov