2016-12-26 15 views
1

我想在Travis CI上用C++代碼構建一個R包並使用選項運行R CMD check並用valgrind檢查它。在R extensions manual它要麼提供一個~/.valgrindrc文件所需的選項,或將其設置在環境變量VALGRIND_OPTS,但我一直無法弄清楚這些。在Travis CI上指定R包的valgrind選項

我創建了一個包含valgrind應該響應的Rcpp函數的演示回購here

.travis.yml設置是這樣的:

language: r 
sudo: false 
cache: packages 

r_check_args: '--use-valgrind' 

addons: 
    apt: 
    packages: 
     - valgrind 

我有一個.valgrindrc文件與以下,

--leak-check=full 
--track-origins=yes 

,並試圖把它放在./inst/和根目錄,但沒有的已經工作。有誰知道如何正確設置這些選項?

編輯:here是鏈接到最新的Travis版本。

+1

1)這與Rcpp現在沒有任何關係。 2)你「只是」有一個Travis問題。 3)我繼續使用[我維護的叉子]中的前一個特拉維斯設置(http://eddelbuettel.github.io/r-travis/)*正是因爲這個原因:無論如何我都能夠腳本和訪問Travis。你也可以這樣做。 4)你可能需要'$ HOME'中的'.valgrindrc'。 –

+0

@DirkEddelbuettel你是對的,我丟棄了rcpp標籤。感謝您的建議。我不知道如何將文件放在那裏,但我會弄清楚。 –

回答

1

the docs,文件./.valgrindrc(因此在當前工作目錄,如果文件~/.valgrindrc不存在是隻讀的,與環境變量$VALGRIND_OPTS未設置。

不知道是什麼情況,但你可能要做到以下幾點:。

before_install: 
    - "head ~/.valgrindrc || echo '~/.valgrindrc does not exist'" 
    - echo VALGRIND_OPTS: $VALGRIND_OPTS 
    - cat ./valgrindrc >> ~/.valgrindrc 

前兩個是有用於診斷目的的最後一個可能會解決問題(其附加配置全局配置),如果它不會工作,你可能會有一些莫重新洞察所發揮的作用。

+0

謝謝。這導致我朝着正確的方向前進。不過,我想出了一個更簡單的方法。 –

2

@joepd給出的解決方案有效,但我發現了一個簡單設置環境變量的(可能)更精簡的解決方案。

env: 
    - VALGRIND_OPTS='--leak-check=full --track-origins=yes' 

注意的valgrind仍然建議我們設定--leak-check=full一些未知的原因,這是什麼使我看起來來回擺在首位另一種解決方案。