मैं वास्तव में ट्रेविस का उपयोग अपने ndjson
पैकेज का परीक्षण करने में सक्षम होना चाहता था लेकिन सी ++ लाइब्रेरी जिसका उपयोग मैं कर रहा हूं, gcc
4.6 के तहत संकलित नहीं होगा।
ndjson
पैकेज क्रैन और क्रैन builds are fine (Windows पर आर-oldrel जो मुझे थोड़ा परेशान नहीं करता है के लिए छोड़कर) पर है, इसलिए मैं संकलक कि आर ट्रैविस पर उपयोग करता है को बदलने के तरीके की जरूरत है।
मैं नीचे दिए गए उदाहरण में gcc
5 का उपयोग कर रहा हूं, लेकिन आप toolchain test builds में उपलब्ध किसी भी संस्करण का उपयोग कर सकते हैं। आदर्श रूप में, किसी को सीआरएएन के gcc
संस्करण की नकल करनी चाहिए और यह कुछ ऐसा हो सकता है जो ट्रेविस लोग आर बिल्ड के लिए डिफ़ॉल्ट बनाने पर विचार कर सकते हैं। एक ही बंद
.travis.yml
शुरू होता है:
language: r
warnings_are_errors: true
sudo: required
env:
global:
- CRAN: http://cran.rstudio.com
मैं नए पैकेज स्रोत जोड़ के साथ ही पैकेज (रों) स्थापित करने की जरूरत है कि निर्दिष्ट करने के लिए एक मैट्रिक्स का निर्माण विन्यास गयी। मैंने इसे मैट्रिक्स कॉन्फ़िगरेशन में छोड़ा क्योंकि मैं (अंत में) clang
जोड़ने की कोशिश करने जा रहा हूं।
before_install:
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
- mkdir -p ~/.R
- echo "VkVSPS01CkNDPWdjYyQoVkVSKSAtc3RkPWMxMSAKQ1hYPWcrKyQoVkVSKQpTSExJQl9DWFhMRD1nKyskKFZFUikKRkM9Z2ZvcnRyYW4KRjc3PWdmb3J0cmFuCg==" | base64 -d > ~/.R/Makevars
- cat ~/.R/Makevars
base64 स्ट्रिंग के बराबर:
matrix:
include:
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5']
env:
- COMPILER=g++-5
- CC=gcc=5
- CXX=g++-5
इसके बाद, मुझे यकीन है कि ऑटो डिफ़ॉल्ट संकलक इस नई gcc
करने के लिए सेट है और यह भी दोगुना सुनिश्चित करें कि आर बनाने एक स्थानीय Makevars
द्वारा यह प्रयोग करेंगे बना है बनाया :
VER=-5
CC=gcc$(VER) -std=c11
CXX=g++$(VER)
SHLIB_CXXLD=g++$(VER)
FC=gfortran
F77=gfortran
और यह इस तरह से (आईएमओ) क्लीनर है।
सिद्धांत रूप में, सब मुझे क्या करना पड़ता था बनाने है Makevars
(यानी डिफ़ॉल्ट update-alternatives
साथ gcc
बदलने की जरूरत नहीं है), लेकिन यह पता चला ट्रैविस Makevars
gcc
सेटिंग थे कि जब लेकिन वास्तविक के लिए नहीं निर्भरता स्थापित करने पैकेज खुद का निर्माण। तो, update-alternatives
आवश्यक है। मुझे कुछ निर्भरताओं को संकलित करने के लिए -std=c11
भी जोड़ना पड़ा था (निर्माण को गलत तरीके से बनाया गया था)।
.travis.yml
कॉन्फ़िगरेशन में इन संशोधनों के बाद, ndjson
ठीक बनाया गया।
निश्चित रूप से। ईन्स के लिए ऐसा कर रहे थे, उदाहरण के लिए [यहां] (https://github.com/eddelbuettel/rcppcctz/blob/master/.travis.yml) और कुछ अन्य रिपो में देखें। –
ऐ। बस दूसरों की मदद करने की कोशिश कर रहा है। – hrbrmstr
अच्छा यह है कि यह वास्तव में शैल स्क्रिप्टिंग की तरह है। सुनहरा एक अतिरिक्त टुकड़ा है .... अपने स्वयं के पीपीए जोड़ें। लेकिन इसके लिए ट्रैविस के उपयोग की पिछली शैली की आवश्यकता हो सकती है जो पसंद करते हैं। उदाहरण के लिए देखें [यहां] (https://github.com/eddelbuettel/rquantlib/blob/master/.travis.yml)। –