2015-03-23 13 views
6

मेरे पैकेज में कुछ फ़ंक्शन सी ++ 11 कंटेनर का उपयोग करके बहुत तेजी से चलते हैं, लेकिन सीआरएएन $(SHLIB_OPENMP_CXXFLAGS) और $(CXX1XSTD) दोनों का उपयोग करके मेरे पैकेज को स्वीकार नहीं करता है क्योंकि यह सोलारिस (या अन्य मामूली प्लेटफॉर्म)। सीआरएएन की सिफारिश एक कॉन्फ़िगर स्क्रिप्ट लिखना था, लेकिन मुझे लगता है कि यह सीखने में मेरे लिए बहुत समय लगेगा, और प्लेटफॉर्म के लिए अनावश्यक रूप से मेरे कोड को जटिल कर देगा जो कुछ लोग उपयोग करते हैं।परीक्षण के लिए जांच की जा रही है कि सीआरएएन

फिलहाल, मैंने अभी सभी सी ++ 11 कोड पर टिप्पणी की है, और को Makevars से CRAN सबमिशन के लिए हटा दिया है। यह चारों ओर एक खराब काम है, और मैं Makevars में सीआरएएन का पता लगाने और आवास बनाने में सक्षम हूं, इसलिए मुझे प्रत्येक संस्करण के लिए एक सीआरएएन कांटा बनाए रखने की आवश्यकता नहीं है।

मैं अभी भी परीक्षण करता हूं कि सी ++ 11 उपलब्ध है या नहीं, लेकिन यह केवल मेकवार्स में सी ++ 11 और ओपनएमपी झंडे का संयोजन है जो सीआरएएन सबमिशन के साथ सोलारिस पर ठोकर खा रहा है। मुझे लगता है कि इसके चारों ओर एक छोटा रास्ता होना चाहिए।

क्या कोई पर्यावरण चर है, मुझे यह जांचने के लिए उपयोग करना चाहिए कि क्या सीआरएएन स्वयं ही मेरे पैकेज की जांच कर रहा है, और जिसे मैं Makevars में परीक्षण कर सकता हूं? मैंने आर कोड बेस की खोज की है और आर आंतरिक और लेखन आर एक्सटेंशन पढ़ा है, हालांकि मैं नहीं कह सकता कि मैं उन्हें दिल से जानता हूं, जो कुछ सीआरएएन रखरखाव उम्मीद करते हैं। ऐसे पर्यावरण चर हैं जो CRAN संभावित सेट हैं, लेकिन मुझे उम्मीद है कि _R_CHECK_CRAN_INCOMING_=TRUE जैसे कुछ के लिए परीक्षण रखरखाव की उछाल उठाएगा।

मुझे नहीं लगता कि Makevars में "यदि सौरलिस" परीक्षण पर्याप्त होगा: यह सी ++ 11 और ओपनएमपी झंडे दोनों की मौजूदगी है, जिनकी अनुमति नहीं है, क्योंकि वे संभावित रूप से प्लेटफ़ॉर्म पर असफल हो जाते हैं अक्सर Solaris से।

शायद मैं इसे गलत तरीके से देख रहा हूं।

+0

कुछ सुझाव (अधिक समाधानों की तरह) यहाँ देखते हैं: http: // stackoverflow.com/questions/36166288/skip-tests-on-cran-but-run-locally – Helix123

उत्तर

2

हालांकि इसके लिए एक परीक्षण करना संभव हो सकता है, वास्तव में सही तरीका एक कॉन्फ़िगर स्क्रिप्ट है। मैंने इसे उत्पन्न करने के लिए config.ac autoconf का उपयोग किया, जो अंत में कठिन नहीं था। सी ++ कोड फिर सी ++ 11 प्रतीकों की उपस्थिति के परीक्षण के लिए ifdef का उपयोग कर सकता है, और अभी भी OpenMP #pragma घोषणाओं का उपयोग कर सकता है। विंडोज़ को विशेष उपचार की आवश्यकता है। मैंने आरओडीबीसी पैकेज से विधि का उपयोग किया। यह अभी तक सीआरएएन को सबमिट नहीं किया गया है या सोलारिस पर परीक्षण किया गया है, लेकिन यह सीआरएएन रखरखाव की सिफारिश का सीधे जवाब देता है।

देखें: https://github.com/jackwasey/icd

प्रासंगिक फ़ाइलें हैं: configure.ac, src/config.h.in, src/Makevars.in

+0

अनिच्छा से अपना स्वयं का जवाब स्वीकार कर रहा है (केवल)। मेरे पैकेज में कॉन्फ़िगर स्क्रिप्ट अब और अधिक परिपक्व है, और इसका उपयोग ओपनएमपी, सी ++ 11 को आर पैकेज में गठबंधन करने की इच्छा रखने वाले लोगों के उदाहरण के रूप में किया जा सकता है। –

संबंधित मुद्दे