On Mon, 2022-06-13 at 16:38 -0700, Dan Crocker wrote:
>
> -Built the generic pulseview
> -Ran new_driver in the libsigrok/build directory as you suggested
> -Applied the patch created by this new_driver script as instructed in
> the README created:
> 'cd /some/path/libsigrok'
> 'git am /some/place/0001-raspberrypi-pico-Initial-driver-skeleton.patch'
> Of course, I used the actual paths for my environment :).
> After this, I did have source files for the raspberry pi pico in the
> "hardware" directory (in a directory called raspberrypi-pico)
> -Edited the original build script to remove the rm of the $BUILDDIR
> and the git clones. [ ... ]

This sequence is ... unexpected. Who suggested it? Should be
fixed to do something normal instead.

Running the script which executes a standard sequence once is
fine. Modifying the script to not restart from scratch but to
continue with previous build output is fine, too. But two things
are bothering me.

The new_driver script does not magically create a driver for you.
If it could the list of supported devices would be longer. :-]
What the script creates is a skeleton for a driver which a
developer needs to fill in and get to work with a specific
device. That part is missing in the above list of steps.

The other issue is that manually patching the source to introduce
the non-operational skeleton, and then to manually copy in more
file content, which is not under version control, and is getting
lost in iterations, is tedious and non-reproducable. Would have
expected some addition of another remote, checkout of that
branch, and be done with two additional commands and no other
manual work involved.

Another option would be to globally change the common prefix for
repos that are being fetched from at the start of the script, in
the tunables section. To not get the sigrok.org master but
somebody else's code base instead. Consistently as it is kept
there in a set of repos that belong to each other, similar to
what sigrok.org provides. The script is prepared to do that, it's
not (by design) prepared to run an arbitrary combination of
unrelated changes from different repos. Notice that this remote
repo might as well reside on your disk. Nobody said that a
network needs to be involved.

I'm aware this is not your fault Dan for trying to follow these
instructions. It's the instructions that are weird and un-gitty
(if that is a word).

> Here's an example of a section of the script that makes libserialport:
>
> # libserialport
> #$GIT_CLONE $REPO_BASE/libserialport
> cd libserialport
> ./autogen.sh
> rm -rf build
> mkdir build
> cd build
> ../configure $C
> $SB make $PARALLEL $V
> make install $V
> cd ../..
>
> The rest of the sections are similar.

Yes this is what you typically would do without the script. The
script just spells out that typical flow, assuming that none of
it was done before and can be skipped since it executed before.
(And the script can assume that, because it starts by design from
a fresh and empty directory.)


> Note that do get this error at the end of the build:
>
> ----
> Running tests...
> Test project /Users/dan/sigrok-util/cross-compile/macosx/build/pulseview/build
>     Start 1: test
> 1/1 Test #1: test .............................***Failed   16.15 sec
>
> 0% tests passed, 1 tests failed out of 1
>
> Total Test time (real) =  16.16 sec
>
> The following tests FAILED:
>           1 - test (Failed)
> Errors while running CTest
> Output from these tests are in:
> /Users/dan/sigrok-util/cross-compile/macosx/build/pulseview/build/Testing/Temporary/LastTest.log
> Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
> make: *** [test] Error 8

Have you eyeballed that output? The screen output references a
logfile which has more details on the failed test.

One of the pulseview tests is known to depend on the platform,
and fails when floating point numbers get rounded to the other
end compared to what most other platforms do. Can't tell from
first hand experience, but thought that macos was one of the
platforms that were affected. Could be that, a last digit of a
conversion result flipping and not matching the expectation.

Instead of wading through the logfile, another option is to ask
ctest what the test was, and rerun it, and see the coloured
output on screen. May speed up your finding the spot. ctest can
list the set of available tests, show the command that would
execute at higher verbosity levels, and you can manually run the
command from the prompt. Or you find a way of running the exe
under ctest _and_ have the verbosity raised, to have your
attention attracted to the spot of interest.

  $ ctest -N
  $ ctest -N -V
  $ ctest -VV

I think cmake generated Makefiles (which pulseview probably uses
when built with the script) support this invocation, which
explains how "make test" is related to ctest(1) outside of
guessing it from screen output.

  $ make VERBOSE=1 test  (or any other target)


virtually yours
Gerhard Sittig
--
     If you don't understand or are scared by any of the above
             ask your parents or an adult to help you.


_______________________________________________
sigrok-devel mailing list
sigrok-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to