Comments (13)
This seems like a strange bug, since the file list is taken from 3 places that should not overlap.
Can you try this patch? It should add some harmless command line options to break up the file listing and hopefully help isolate the code that's creating those duplicate entries:
diff --git a/lib/arduino_ci/cpp_library.rb b/lib/arduino_ci/cpp_library.rb
index 7df0e44..223f925 100644
--- a/lib/arduino_ci/cpp_library.rb
+++ b/lib/arduino_ci/cpp_library.rb
@@ -241,8 +241,11 @@ module ArduinoCI
def test_args(aux_libraries, ci_gcc_config)
# TODO: something with libraries?
ret = include_args(aux_libraries)
+ ret += ["-DARDUINO_CI_cpp_files_arduino"]
ret += cpp_files_arduino.map(&:to_s)
+ ret += ["-DARDUINO_CI_cpp_files_unittest"]
ret += cpp_files_unittest.map(&:to_s)
+ ret += ["-DARDUINO_CI_cpp_files"]
ret += cpp_files.map(&:to_s)
unless ci_gcc_config.nil?
cgc = ci_gcc_config
from arduino_ci.
With that patch the last command becomes:
Last
command:
$
g++
-std=c++0x
-o
/tmp/dummy2/unittest_dummy.cpp.bin
-DARDUINO=100
-D__AVR_ATmega328P__
-I/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino
-I/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/unittest
-I/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino
-I/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/avr
-I/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/ci
-I/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/unittest
-DARDUINO_CI_cpp_files_arduino
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/Arduino.cpp
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/Godmode.cpp
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/stdlib.cpp
-DARDUINO_CI_cpp_files_unittest
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/unittest/ArduinoUnitTests.cpp
-DARDUINO_CI_cpp_files
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/Arduino.cpp
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/Godmode.cpp
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/arduino/stdlib.cpp
/tmp/dummy2/bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/cpp/unittest/ArduinoUnitTests.cpp
/tmp/dummy2/test/dummy.cpp
from arduino_ci.
Aah interesting. I was in the middle of writing a long comment about how I couldn't figure out the problem but it just jumped out at me. If I'm reading this correctly, your library is installed at /tmp/dummy2 and the directory of gem dependencies happens to live inside it. So arduino_ci
is finding and including itself.
I would have thought the bundle stuff would go into vendor/bundle
(which I explicitly check for), but in this case it's going into bundle_install/
somehow. Did you explicitly do that? What OS are you on?
I'm going to have to fix CppLibrary::vendor_bundle?
. Question for my future self and/or more knowledgable visitors: is there a way to get the master $BUNDLE_PATH
instead of iterating over all bundle show --paths
dirs?
from arduino_ci.
@hlovdal if/when you can verify that #98 fixes this, I'll merge that code. (Sorry if this is a duplicate message)
from arduino_ci.
I can confirm that this solves the issue reported. With all the commands like previously, plus:
git clone https://github.com/ianfixes/arduino_ci/
cd arduino_ci/
git checkout 2019-01-28_skip_ci
cd ..
cp arduino_ci/lib/arduino_ci/* bundle_install/ruby/2.5.0/gems/arduino_ci-0.1.17/lib/arduino_ci/.
rm -rf arduino_ci/
mkdir -p examples/dummy
cp dummy.ino examples/dummy/.
bundle exec arduino_ci_remote.rb
this results in
Unit testing dummy.cpp with g++...
TAP version 13
1..1
# Subtest: dummy_test
ok 1 - assertEqual 4 == 4
1..1
ok 1 - dummy_test
...Unit testing dummy.cpp with g++ ✓
Indexing libraries... ✓
Installing library under test... ✓
Library installed at... /home/download/Arduino/libraries/dummy
example_path = /home/download/Arduino/libraries/dummy/examples
examples = ["dummy"]
proj_file = /home/download/Arduino/libraries/dummy/examples/dummy/dummy.ino
Requested library example platform 'uno' is defined in 'platforms' YML... ✓
Using built-in board package... arduino:avr
Installing board package arduino:avr... ✓
Setting compiler warning level... ✓
Switching to board for uno (arduino:avr:uno)... ✓
Verifying dummy.ino... ✓
Failures: 0
from arduino_ci.
Hm, while the change did fix the minimal example reported above which I tested, it breaks when I try to update my main project to 0.1.18. I bisected the change to be this Fix vendor_bundle?
commit.
Forcing a print of the last command regardless of failure gives an opportunity to make a diff of the successful case using the parent commit of Fix vendor_bundle?
and the failing one:
g++
-std=c++0x
-o
/share/hlovdal/arduino/sketchbook/proj1/unittest_cust_char_tests.cpp.bin
-DARDUINO=100
-D__AVR_ATmega328P__
-I/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino
-I/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest
--I/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/avr
--I/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/ci
--I/share/hlovdal/arduino/sketchbook/proj1/src
-I/share/hlovdal/arduino/sketchbook/libraries/SmartLCD
-DARDUINO_CI_cpp_files_arduino
/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Arduino.cpp
/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Godmode.cpp
/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/stdlib.cpp
-DARDUINO_CI_cpp_files_unittest
/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest/ArduinoUnitTests.cpp
-DARDUINO_CI_cpp_files
-/share/hlovdal/arduino/sketchbook/proj1/src/proj1_keys.cpp
-/share/hlovdal/arduino/sketchbook/proj1/src/proj1_lcd.cpp
-/share/hlovdal/arduino/sketchbook/proj1/src/cust_char.cpp
-DUNIT_TEST
-g
/share/hlovdal/arduino/sketchbook/libraries/SmartLCD/SmartLCDI2C.cpp
/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp
from arduino_ci.
Full compile output (filtered though the uniq
command)
{:compilers=>["g++"], :libraries=>["SmartLCD"], :platforms=>["uno"]}
The set of compilers (1) isn't empty... ✓
Checking g++ version...
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.2.1 20181215 (Red Hat 8.2.1-6) (GCC)
...Checking g++ version ✓
libasan availability for g++... false
Requested unittest platform 'uno' is defined in 'platforms' YML... ✓
Unit testing cust_char_tests.cpp with g++...
bundle_info = {:out=>"/share/hlovdal/arduino/sketchbook/proj1/arduino_ci\n/home/hlovdal/.gem/ruby/gems/bundler-2.0.1/lib/gems/bundler-2.0.1\n/share/hlovdal/arduino/sketchbook/proj1/bundle_install/ruby/2.5.0/gems/os-1.0.0\n/share/hlovdal/arduino/sketchbook/proj1/bundle_install/ruby/2.5.0/gems/rubyzip-1.2.2\n", :err=>"", :success=>true}
bundle_paths = [#<Pathname:/share/hlovdal/arduino/sketchbook/proj1>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/bundle_install/ruby/2.5.0/gems>]
gem_path = /share/hlovdal/arduino/sketchbook/proj1
ARDUINO_HEADER_DIR = /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino
UNITTEST_HEADER_DIR = /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest
@base_dir = .
all = [#<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Arduino.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Godmode.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/stdlib.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest/ArduinoUnitTests.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/src/proj1_keys.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/src/proj1_lcd.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/src/cust_char.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/test/keypress_fsm.cpp>]
gem_path = /share/hlovdal/arduino/sketchbook/proj1
v = []
gem_path = /share/hlovdal/arduino/sketchbook/proj1
Last command: $ g++ -std=c++0x -o /share/hlovdal/arduino/sketchbook/proj1/unittest_cust_char_tests.cpp.bin -DARDUINO=100 -D__AVR_ATmega328P__ -I/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino -I/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest -I/share/hlovdal/arduino/sketchbook/libraries/SmartLCD -DARDUINO_CI_cpp_files_arduino /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Arduino.cpp /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Godmode.cpp /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/stdlib.cpp -DARDUINO_CI_cpp_files_unittest /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest/ArduinoUnitTests.cpp -DARDUINO_CI_cpp_files -DUNIT_TEST -g /share/hlovdal/arduino/sketchbook/libraries/SmartLCD/SmartLCDI2C.cpp /share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp
/usr/bin/ld: /tmp/ccrfQOch.o: in function `test_cust_char_lookup_empty_string::task()':
/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp:22: undefined reference to `proj1::cust_char_lookup(unsigned char const*)'
/usr/bin/ld: /tmp/ccrfQOch.o: in function `test_cust_char_lookup_ASCII_string::task()':
/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp:34: undefined reference to `proj1::cust_char_lookup(unsigned char const*)'
/usr/bin/ld: /tmp/ccrfQOch.o: in function `test_cust_char_lookup_UTF8_string::task()':
/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp:46: undefined reference to `proj1::cust_char_lookup(unsigned char const*)'
/usr/bin/ld: /tmp/ccrfQOch.o: in function `test_cust_char_lookup_unsupported_UTF8_character::task()':
/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp:62: undefined reference to `proj1::cust_char_lookup(unsigned char const*)'
collect2: error: ld returned 1 exit status
...Unit testing cust_char_tests.cpp with g++ ✗
Unit testing keypress_fsm.cpp with g++...
gem_path = /share/hlovdal/arduino/sketchbook/proj1
ARDUINO_HEADER_DIR = /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino
UNITTEST_HEADER_DIR = /share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest
@base_dir = .
all = [#<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Arduino.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/Godmode.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/arduino/stdlib.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/arduino_ci/cpp/unittest/ArduinoUnitTests.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/src/proj1_keys.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/src/proj1_lcd.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/src/cust_char.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/test/cust_char_tests.cpp>, #<Pathname:/share/hlovdal/arduino/sketchbook/proj1/test/keypress_fsm.cpp>]
gem_path = /share/hlovdal/arduino/sketchbook/proj1
v = []
gem_path = /share/hlovdal/arduino/sketchbook/proj1
...Unit testing keypress_fsm.cpp with g++ ✓
Indexing libraries... ✓
Installing library under test... ✓
Library installed at... /share/hlovdal/arduino/sketchbook/libraries/proj1
Requested library example platform 'uno' is defined in 'platforms' YML... ✓
Using built-in board package... arduino:avr
Installing board package arduino:avr... ✓
Using pre-existing library... SmartLCD
Setting compiler warning level... ✓
Switching to board for uno (arduino:avr:uno)... ✓
Verifying empty.ino... ✓
Failures: 1
from arduino_ci.
With the following debug changes:
commit 30a5b0b9ec845f43dc5b232a8f703b0686e2ea09
Author: Håkon Løvdal <[email protected]>
Date: Wed Jan 30 22:21:18 2019 +0100
debug
diff --git a/lib/arduino_ci/cpp_library.rb b/lib/arduino_ci/cpp_library.rb
index dbff893..5ce59a0 100644
--- a/lib/arduino_ci/cpp_library.rb
+++ b/lib/arduino_ci/cpp_library.rb
@@ -58,6 +58,7 @@ module ArduinoCI
return false unless base.exist?
vendor_bundle_aliases = [base, base.realpath]
+ puts "vendor_bundle_aliases = #{vendor_bundle_aliases}"
# we could do this but some rubies don't return an enumerator for ascend
# path.ascend.any? { |part| vendor_bundle_aliases.include?(part) }
@@ -117,6 +118,10 @@ module ArduinoCI
# @return [Array<Pathname>]
def cpp_files
puts "@base_dir = #{@base_dir}"
+ all = cpp_files_in(@base_dir)
+ puts "all = #{all}"
+ v = cpp_files_in(@base_dir).reject { |p| vendor_bundle?(p) }
+ puts "v = #{v}"
cpp_files_in(@base_dir).reject { |p| vendor_bundle?(p) || in_tests_dir?(p) }
end
commit 7b527931d6219185fef51d4e7843b4a8dfee7f62
Author: Håkon Løvdal <[email protected]>
Date: Sun Jan 27 15:05:35 2019 +0100
Issue 96 more debug
diff --git a/lib/arduino_ci/cpp_library.rb b/lib/arduino_ci/cpp_library.rb
index 19d8889..dbff893 100644
--- a/lib/arduino_ci/cpp_library.rb
+++ b/lib/arduino_ci/cpp_library.rb
@@ -116,18 +116,21 @@ module ArduinoCI
# CPP files that are part of the project library under test
# @return [Array<Pathname>]
def cpp_files
+ puts "@base_dir = #{@base_dir}"
cpp_files_in(@base_dir).reject { |p| vendor_bundle?(p) || in_tests_dir?(p) }
end
# CPP files that are part of the arduino mock library we're providing
# @return [Array<Pathname>]
def cpp_files_arduino
+ puts "ARDUINO_HEADER_DIR = #{ARDUINO_HEADER_DIR}"
cpp_files_in(ARDUINO_HEADER_DIR)
end
# CPP files that are part of the unit test library we're providing
# @return [Array<Pathname>]
def cpp_files_unittest
+ puts "UNITTEST_HEADER_DIR = #{UNITTEST_HEADER_DIR}"
cpp_files_in(UNITTEST_HEADER_DIR)
end
commit 8f5fdbe07fac6a8f1d28f574134c38a46c93b60e
Author: Håkon Løvdal <[email protected]>
Date: Sun Jan 27 15:04:39 2019 +0100
Issue 69 debug
https://github.com/ianfixes/arduino_ci/issues/69#issuecomment-450652373
diff --git a/lib/arduino_ci/cpp_library.rb b/lib/arduino_ci/cpp_library.rb
index f6f5833..19d8889 100644
--- a/lib/arduino_ci/cpp_library.rb
+++ b/lib/arduino_ci/cpp_library.rb
@@ -243,8 +243,11 @@ module ArduinoCI
def test_args(aux_libraries, ci_gcc_config)
# TODO: something with libraries?
ret = include_args(aux_libraries)
+ ret += ["-DARDUINO_CI_cpp_files_arduino"]
ret += cpp_files_arduino.map(&:to_s)
+ ret += ["-DARDUINO_CI_cpp_files_unittest"]
ret += cpp_files_unittest.map(&:to_s)
+ ret += ["-DARDUINO_CI_cpp_files"]
ret += cpp_files.map(&:to_s)
unless ci_gcc_config.nil?
cgc = ci_gcc_config
from arduino_ci.
Most recent gem is 0.1.19
although I don't think that update touches any of this. Are you saying that it worked in 90b3e68 but fails in ad731a1 (v0.1.18
)?
Can you give me more hints on how to reproduce this behavior locally? I did the debug in a slightly different way, which you might prefer -- it embeds the path (and "real path", if symlinked) into the build args:
diff --git a/lib/arduino_ci/cpp_library.rb b/lib/arduino_ci/cpp_library.rb
index f6f5833..19d8889 100644
--- a/lib/arduino_ci/cpp_library.rb
+++ b/lib/arduino_ci/cpp_library.rb
@@ -243,8 +243,11 @@ module ArduinoCI
def test_args(aux_libraries, ci_gcc_config)
# TODO: something with libraries?
ret = include_args(aux_libraries)
+ ret << "-DARDUINO_CI_cpp_files_arduino=#{ARDUINO_HEADER_DIR}:#{ARDUINO_HEADER_DIR.realpath}"
ret += cpp_files_arduino.map(&:to_s)
+ ret << "-DARDUINO_CI_cpp_files_unittest=#{UNITTEST_HEADER_DIR}:#{UNITTEST_HEADER_DIR.realpath}"
ret += cpp_files_unittest.map(&:to_s)
+ ret << "-DARDUINO_CI_cpp_files=#{@base_dir}:#{@base_dir.realpath}"
ret += cpp_files.map(&:to_s)
unless ci_gcc_config.nil?
cgc = ci_gcc_config
from arduino_ci.
No, I am saying it stops working in 90b3e68 and from then on. The newer code is much better at excluding itself, before I had to git rm -r SampleProjects
and git rm -r spec/fake_library
when using arduino_ci as a git submodule, but that is no longer required. Although it apparently excludes my source files as well...
Here is a minimal example to reproduce (this time with paste friendly commands):
mkdir /tmp/compiletest
cd /tmp/compiletest
cat > .arduino-ci.yaml << EOF
compile:
libraries: ~
platforms:
- uno
unittest:
libraries: ~
platforms:
- uno
EOF
cat > Gemfile << EOF
source 'https://rubygems.org'
gem 'arduino_ci', :path => "arduino_ci"
EOF
mkdir src
echo 'bool greater_than_five(int n);' > src/five.hpp
cat > src/five.cpp << EOF
#include "five.hpp"
bool greater_than_five(int n) {
return n > 5;
}
EOF
mkdir test
cat > test/five_tests.cpp << EOF
#include <ArduinoUnitTests.h>
#include "../src/five.hpp"
unittest(one)
{
assertFalse(greater_than_five(1));
}
unittest(ten)
{
assertTrue(greater_than_five(10));
}
unittest_main()
EOF
git clone https://github.com/ianfixes/arduino_ci
cd arduino_ci
git am .../debug.patch # https://github.com/ianfixes/arduino_ci/issues/69#issuecomment-459180028
cd ..
bundle install --path vendor/bundle
bundle exec arduino_ci_remote.rb --skip-compilation
which produces
The set of compilers (1) isn't empty... ✓
Checking g++ version...
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.2.1 20181215 (Red Hat 8.2.1-6) (GCC)
...Checking g++ version ✓
libasan availability for g++... false
Requested unittest platform 'uno' is defined in 'platforms' YML... ✓
Unit testing five_tests.cpp with g++...
Last command: $ g++ -std=c++0x -o /tmp/compiletest/unittest_five_tests.cpp.bin -DARDUINO=100
-D__AVR_ATmega328P__ -I/tmp/compiletest/arduino_ci/cpp/arduino -I/tmp/compiletest/arduino_ci/cpp/unittest
-DARDUINO_CI_cpp_files_arduino=/tmp/compiletest/arduino_ci/cpp/arduino:/tmp/compiletest/arduino_ci/cpp/arduino /tmp/compiletest/arduino_ci/cpp/arduino/Arduino.cpp /tmp/compiletest/arduino_ci/cpp/arduino/Godmode.cpp /tmp/compiletest/arduino_ci/cpp/arduino/stdlib.cpp
-DARDUINO_CI_cpp_files_unittest=/tmp/compiletest/arduino_ci/cpp/unittest:/tmp/compiletest/arduino_ci/cpp/unittest /tmp/compiletest/arduino_ci/cpp/unittest/ArduinoUnitTests.cpp
-DARDUINO_CI_cpp_files=.:/tmp/compiletest /tmp/compiletest/test/five_tests.cpp
/usr/bin/ld: /tmp/cctXTkoJ.o: in function `test_one::task()':
five_tests.cpp:(.text+0x17): undefined reference to `greater_than_five(int)'
/usr/bin/ld: /tmp/cctXTkoJ.o: in function `test_ten::task()':
five_tests.cpp:(.text+0x85): undefined reference to `greater_than_five(int)'
collect2: error: ld returned 1 exit status
...Unit testing five_tests.cpp with g++ ✗
Skipping compilation of examples... as requested via command line
Failures: 1
from arduino_ci.
Oh, I see. You are downloading arduino_ci
itself into your library's root directory. That seems like incorrect usage, and (more to the point) I'm not sure how I'd properly detect it in order to avoid it.
Your Gemfile
should probably be formed like this:
cat > Gemfile << EOF
source 'https://rubygems.org'
gem 'arduino_ci', :path => "../arduino_ci" # note navigation to parent directory
EOF
And the installation of arduino_ci should go like this:
mkdir test
cat > test/five_tests.cpp << EOF
// blah blah blah
EOF
pushd ".." # note navigation to parent directory
git clone https://github.com/ianfixes/arduino_ci
cd arduino_ci
git am .../debug.patch # https://github.com/ianfixes/arduino_ci/issues/69#issuecomment-459180028
popd # now back in arduino library directory
bundle install --path vendor/bundle # can also use "--deployment" instead of this
bundle exec arduino_ci_remote.rb --skip-compilation
Does that make sense?
from arduino_ci.
Thanks. This makes sense. I have now restructured my project to have its content in a subdirectory in parallel with the arduino_ci submodule and it now works fine using latest master version (with some of my additional changes).
from arduino_ci.
Note to self: add to #114
from arduino_ci.
Related Issues (20)
- Output errors to stderr HOT 11
- Empty examples folder causes build to fail HOT 2
- arduino_ci.rb fails to report compile error
- The build-CI does not support setWireTimeout(). HOT 1
- Can RP2040 build environment be supported? HOT 10
- compiling unit tests uses arduino platform specific code HOT 6
- running in gitlab CI HOT 3
- Platform.io Support HOT 3
- Improve factorization of "unused space"
- Running "bundle install --path vendor/bundle" generates deprecated warning HOT 1
- Use temporary directories for unit test artifacts
- ESP32 failing to install in CI build HOT 2
- Update documentation to recommend version pinning
- ESP32 flags unused function as error (should be warning) HOT 9
- libraries: "SoftwareSerial" does not work. HOT 11
- "Bad file descriptor" error when installing HOT 2
- Implement Wire.h slave device mock support
- 1.6.0 error: undefined method `library_of_name' for nil:NilClass (NoMethodError) HOT 5
- Show differences lined up and in quotes
- Unable to find library location on Windows
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from arduino_ci.