Stefen
thank you very much
On 11/26/23 21:08, Steffen Möller wrote:
> Hi Thomas,
>
>> Gesendet: Samstag, 25. November 2023 um 14:22 Uhr
>> Von: "Thomas J Powderly" <tjt...@gmail.com>
>> An: emc-developers@lists.sourceforge.net
>> Betreff: [Emc-developers] pull requestproduced ' Build CI: Some jobs
were not successful'
>>
>> Hello new to Git
>
> It is all a bit much. But thank you for nibbling through that jungle.
I am not so sure if LinuxCNC should describe GitHub in too much detail,
but if you see that the one or other reference to some of the many
tutorials of GitHub would have helped then please send another PR to
improve the documentation :)
>
>> I made a fork
>
> good!
>
>> made some changes did a 'push to master'
>
You mean to the master branch of your fork. That is technically fine,
preferably though you would have committed to a new branch of yours
(basically giving your changes a name) and then pushed that new branch
to your forked repository. This way you can have several developments at
the same time.
>
I was following
https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-to-push-an-existing-project-to-GitHub
and i did ( wow i can go waaay back in the terminal history!)
git push --set-upstream origin barWidgets
long story shorter
i pushed to 'origin' which is my repo on github linuxcnc-barwidgets
i say so because ~/.git/config says
[remote "origin"]
url = https://github.com/tjtr33/linuxcnc-barwidgets.git
>> did a pull request ( I think that's the procedure)
>
> good!
>
>> then got email that I
>> don't understand 1st error in message is in 'Built Rip & test' message
>> is Bar widgets #9519
>
> That is the automated builds and testing that kicks in with every PR,
so issues are caught as early as possible.
>
>> pull request waspull request #2756
<https://github.com/LinuxCNC/linuxcnc/pull/2756>
>>
>> line 23ERROR: ld.so: object 'libeatmydata.so' from LD_PRELOAD cannot be
>> preloaded (cannot open shared object file): ignored.
>>
>> really? lib eat my data? not eat my shorts?
>
> That is a library accelerating I/O by not waiting for the hard drive.
The LD_PRELOAD is a trick to override what the C library would normally do.
thanks, i found the library libeatmyfata and code on github
>
>> Is the error is caused by my code?
>
> This is not the error that caused the trouble. It is a test that
failed, look at
>
>
https://github.com/LinuxCNC/linuxcnc/actions/runs/6939722284/job/18877492636?pr=2756
> Look at line 9385
>
> Running test: /home/runner/work/linuxcnc/linuxcnc/tests/twopass
> Running test:
/home/runner/work/linuxcnc/linuxcnc/tests/uspace/spawnv-root
> Runtest: 260 tests run, 259 successful, 1 failed + 0 expected, 4 skipped
> Failed:
> /home/runner/work/linuxcnc/linuxcnc/tests/pyvcp-bar
> Error: Process completed with exit code 1.
>
> and then scrolling up to line 9310:
>
> Running test: /home/runner/work/linuxcnc/linuxcnc/tests/pyvcp-bar
> *** /home/runner/work/linuxcnc/linuxcnc/tests/pyvcp-bar: XFAIL: test
run exited with 1
> ************** result:
> ************** stderr:
> Traceback (most recent call last):
> File "/home/runner/work/linuxcnc/linuxcnc/bin/pyvcp", line
101, in <module>
> main()
> File "/home/runner/work/linuxcnc/linuxcnc/bin/pyvcp", line
83, in main
> Skipping disabled test: /home/runner/work/linuxcnc/linuxcnc/tests/raster
> pyvcp0 = Tk()
> File "/usr/lib/python3.8/tkinter/__init__.py", line 2270,
in __init__
> self.tk = _tkinter.create(screenName, baseName,
className, interactive, wantobjects, useTk, sync, use)
> _tkinter.TclError: no display name and no $DISPLAY
environment variable
> test.hal:4: waitpid failed pyvcp fred
> test.hal:4: pyvcp exited without becoming ready
> Note: Using POSIX non-realtime
> **************
> Running test: /home/runner/work/linuxcnc/linuxcnc/tests/realtime-math
>
>
> What this means is that the test routine wants to open a window but
cannot do so since it has no window system, so it complains about the
DISPLAY variable not being set, which typically helps with a redirection
of the display across machines, like when you are logged in remotely.
There are tricks to circumvent this with Xnest but I do not feel
competent to suggest how this should be introduced - I admittedly
thought this would have been integrated already.
ah!! i was told that the DISPLAY env var was turned off
in the script 'rumtests'.
I now need to remove the tests/pyvcp-bar
locally(DONE) and remotely(on GitHub TBD)
In will study how to clean up the 'tests' dir in github's 'origin\
I have a small solution for running the graphic tests
but it requires human intervention and evaluation.
I created pyvcptests/ and fill it with barNN.hal and matching barNN.xml.
A script reads that dir, makes a list of the .hal files. Sorts the list
and marches thru the list with "halrun -f barNN.hal"|.
The user/tester must close each window to advance to next.
So, not auotmated but simple.
The wifget is shown on top of the terminal with the xml code visible.
It's meant to 'test' and to teach what the many xnml tags do.
>
>> Is the notification to all developers? or just to me & due to my coed?
>
> The PR is visible to the world and so is the error report.
> The error though was introduced only by your work. If you think that
the test routines are to blame then please inspect them on
.github/workflows/ci.yml .
>
>> I have made more changes since then and want to push again
>>
>> but caution says ask 1st
>
> I suggest you push what you want to push and risk running into that
error again.
I hope removing the tests dir will not run into same error
>
> And then at some point we need to learn how to introduce the testing
of GUIs that open windows in the CI.
>
> Hoping to have helped
> Steffen
You helped a lot.
Thank you
tomp
--------------------------------------soem notes of interest
maybe------------------------------------
here's the testbars.py if ii is of interest
/////////////////
import os
import subprocess
import re
def sorted_nicely( l ):
""" Sort the given iterable in the way that humans expect."""
convert = lambda text: int(text) if text.isdigit() else text
alphanum_key = lambda key: [ convert(c) for c in
re.split('([0-9]+)', key) ]
return sorted(l, key = alphanum_key)
files = []
for file_path in os.listdir('.'): # whereami
if os.path.isfile(os.path.join('.', file_path)):
if(file_path.split('.')[1]=='hal'):
files.append(file_path)#only files, no dirs appemed to
'files' list
# sort the list
# from
https://stackoverflow.com/questions/2669059/how-to-sort-alpha-numeric-set-in-python
# halrun each file with .hal extent
for file in sorted_nicely(files):
# display the xml in the terminal, its usually 1 screen
xf=file.split('.')[0]+'.xml'
subprocess.run(['cat', xf])
# show the widget
str = '-f '+file # concatenate switches anf filename
subprocess.run(['halrun', str])
/////////////////
each of the hal files ends with this stanza (makes easy to run next test)
///////////
...
start activate the hal animation ( sioggen pr
random )
waitusr bar01 wait for user to clcik X in widget window
stop cleanup
unloadrt all ""
unloadusr bar01 ""
exit exit to script loop or all done, back to
terminal prompt
/////////
again thanks
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers