mikebrady / nqptp

Not Quite PTP
GNU General Public License v2.0
107 stars 22 forks source link

Error: Can't access the NQPTP clock. Is NQPTP running? #15

Closed noelhibbard closed 2 years ago

noelhibbard commented 2 years ago

My docker container is getting this if I combine the development branch of sps with the development branch of nqptp. It works if I use the development branch of sps with the main branch of nqptp.

mikebrady commented 2 years ago

Thanks for the post, Noel. Haven't come across this, but we'll take a look over the next few days...

rjbutler commented 2 years ago

@mikebrady I'm also seeing this on a raspberry pi with the development branch of sps and both main and development of nqptp.

charlesomer commented 2 years ago

There was a fix added to Shairport Sync about 5 hours ago which resolved an issue seen in the unstable-development docker image, could you see if this issue still occurs with the latest build please? 😊 Should be 4.1-dev-165

rjbutler commented 2 years ago

@charlesomer I'm not using docker, am up-to-date on the development branch and have a configuration file, so I don't think that's it.

rjbutler commented 2 years ago

I'm not sure if it's related, but I see this in the nqptp logs:

nqptp[6096]: warning: Unrecognised string on the control port.

mikebrady commented 2 years ago

Thanks for all the information, everybody. I am a bit baffled by this, so thanks for your help. Seeing this outside Docker, as @rjbutler's experience, may make it a little easier to track down.

Anyway, my very first suggestion is the basic 'hygiene' step -- make sure there isn't any old apps, scripts and service files lying around.

  1. Repeatedly run $ which shairport-sync to find all copied of Shairport Sync and remove all but the one you mean to use (or remove all of them and rebuild Shairport Sync).
  2. Do the same for NQPTP.
  3. Ensure /lib/systemd/system/nqptp.service is gone.
  4. Stop the nqptp daemon and the shairport-sync daemons:
    $ sudo systemctl stop shairport-sync
    $ sudo systemctl stop nqptp
  5. Check there versions of NQPTP and of Shairport Sync:
    $ shairport-sync -V
    $ nqptp -V
  6. Start NQPTP in a terminal window with one level of debugging:
    $ sudo nqptp -v

    You'll get something like this:

    pi@RaspberryPi3B:~/nqptp $ sudo nqptp -v
         0.000738849 "nqptp.c:150" startup. self clock id: "b827ebfffe406f60".
         0.000304603 "nqptp.c:151" size of a clock entry is 240 bytes.
         0.000682700 "nqptp-utilities.c:96" socket 3 is listening on IPv4 port 319.
         0.000158083 "nqptp-utilities.c:96" socket 4 is listening on IPv6 port 319.
         0.000445289 "nqptp-utilities.c:96" socket 5 is listening on IPv4 port 320.
         0.000117612 "nqptp-utilities.c:96" socket 6 is listening on IPv6 port 320.
         0.000359763 "nqptp-utilities.c:96" socket 7 is listening on IPv4 port 9000.
         0.000113757 "nqptp-utilities.c:96" socket 8 is listening on IPv6 port 9000.
  7. Start Shairport Sync in another window:
    pi@RaspberryPi3B:~ $ shairport-sync -vu --statistics
         0.001109948 "shairport.c:1340" default metadata_pipename is "/tmp/shairport-sync-metadata".
         0.000138958 "shairport.c:1891" Started in Airplay 2 mode with features 0x405fca00,0x1c340 on device "b8:27:eb:40:6f:60"!
         0.000113542 "shairport.c:1934" software version: "4.1-dev-164-gf79222f7-AirPlay2-OpenSSL-Avahi-ALSA-stdout-pipe-soxr-convolution-metadata-dbus-sysconfdir:/etc"
         0.000024635 "shairport.c:1940" log verbosity is 1.
         0.000057031 "audio_alsa.c:1018" alsa: alsa_maximum_stall_time of 0.200000 sec.
         0.000067500 "audio_alsa.c:1302" alsa: disable_standby_mode is "always".
         0.000020677 "audio_alsa.c:1306" alsa: disable_standby_mode_silence_threshold is 0.040000 seconds.
         0.000021563 "audio_alsa.c:1308" alsa: disable_standby_mode_silence_scan_interval is 0.004000 seconds.
         0.000028333 "audio_alsa.c:1348" alsa: output device name is "hw:1".
         0.000314948 "shairport.c:1969" libsodium initialised.
         0.000499583 "shairport.c:2019" disable resend requests is off.
         0.000030417 "shairport.c:2020" diagnostic_drop_packet_fraction is 0.000000. A value of 0.0 means no packets will be dropped deliberately.
         0.000026094 "shairport.c:2024" statistics_requester status is 1.
         0.000019791 "shairport.c:2029" rtsp listening port is 7000.
         0.000019271 "shairport.c:2030" udp base port is 6001.
         0.000056094 "shairport.c:2031" udp port range is 10.
         0.000058281 "shairport.c:2032" player name is "RaspberryPi3B".
         0.000052448 "shairport.c:2033" backend is "alsa".
         0.000055417 "shairport.c:2034" run_this_before_play_begins action is "(null)".
         0.000052135 "shairport.c:2035" run_this_after_play_ends action is "(null)".
         0.000051719 "shairport.c:2036" wait-cmd status is 0.
         0.000051406 "shairport.c:2037" run_this_before_play_begins may return output is 0.
         0.000051719 "shairport.c:2038" run_this_if_an_unfixable_error_is_detected action is "(null)".
         0.000052240 "shairport.c:2040" run_this_before_entering_active_state action is  "(null)".
         0.000054739 "shairport.c:2042" run_this_after_exiting_active_state action is  "(null)".
         0.000057292 "shairport.c:2044" active_state_timeout is  10.000000 seconds.
         0.000056562 "shairport.c:2045" mdns backend "(null)".
         0.000051511 "shairport.c:2047" interpolation setting is "auto".
         0.000052760 "shairport.c:2051" interpolation soxr_delay_threshold is 30.
         0.000051459 "shairport.c:2052" resync time is 0.050000 seconds.
         0.000052552 "shairport.c:2053" allow a session to be interrupted: 0.
         0.000055104 "shairport.c:2054" busy timeout time is 0.
         0.000055729 "shairport.c:2055" drift tolerance is 0.001995 seconds.
         0.000056302 "shairport.c:2056" password is "(null)".
         0.000054635 "shairport.c:2057" ignore_volume_control is 0.
         0.000055000 "shairport.c:2061" volume_max_db is not set
         0.000050625 "shairport.c:2062" volume range in dB (zero means use the range specified by the mixer): 70.
         0.000052396 "shairport.c:2064" volume_range_combined_hardware_priority (1 means hardware mixer attenuation is used first) is 0.
         0.000053386 "shairport.c:2068" playback_mode is 0 (0-stereo, 1-mono, 1-reverse_stereo, 2-both_left, 3-both_right).
         0.000052864 "shairport.c:2070" disable_synchronization is 0.
         0.000051771 "shairport.c:2071" use_mmap_if_available is 1.
         0.000050833 "shairport.c:2072" output_format automatic selection is enabled.
         0.000051459 "shairport.c:2076" output_rate automatic selection is enabled.
         0.000052135 "shairport.c:2080" audio backend desired buffer length is 0.200000 seconds.
         0.000053334 "shairport.c:2082" audio_backend_buffer_interpolation_threshold_in_seconds is 0.120000 seconds.
         0.000054895 "shairport.c:2084" audio backend latency offset is 0.000000 seconds.
         0.000052396 "shairport.c:2086" audio backend silence lead-in time is "auto".
         0.000050938 "shairport.c:2090" zeroconf regtype is "_raop._tcp".
         0.000056666 "shairport.c:2091" decoders_supported field is 1.
         0.000042552 "shairport.c:2092" use_apple_decoder is 0.
         0.000020209 "shairport.c:2093" alsa_use_hardware_mute is 0.
         0.000019687 "shairport.c:2097" no special mdns service interface was requested.
         0.000039948 "shairport.c:2100" configuration file name "/etc/shairport-sync.conf" resolves to "/etc/shairport-sync.conf".
         0.000024792 "shairport.c:2107" metadata enabled is 1.
         0.000021979 "shairport.c:2108" metadata pipename is "/tmp/shairport-sync-metadata".
         0.000020625 "shairport.c:2109" metadata socket address is "(null)" port 0.
         0.000020365 "shairport.c:2111" metadata socket packet size is "500".
         0.000024323 "shairport.c:2112" get-coverart is 1.
         0.000019010 "shairport.c:2125" convolution is 0.
         0.000018802 "shairport.c:2126" convolution IR file is "(null)"
         0.000052708 "shairport.c:2127" convolution max length 8192
         0.000020730 "shairport.c:2128" convolution gain is 0.000000
         0.000021145 "shairport.c:2130" loudness is 0.
         0.000020938 "shairport.c:2131" loudness reference level is -20.000000
         0.000333750 "rtsp.c:3823" metadata pipe name is "/tmp/shairport-sync-metadata".
         0.001494062 "audio_alsa.c:528" alsa: output format chosen is "S32".
         0.000122240 "audio_alsa.c:571" alsa: output speed chosen is 44100.
         0.011659896 "dbus-service.c:1057" *warning: could not acquire a Shairport Sync native D-Bus interface "org.gnome.ShairportSync.i4602" on the system bus.
         1.493059583 "shairport.c:220" "soxr" interpolation has been chosen.
  8. Select this player as an output destination in macOS music or on iOS. This is from the NQPTP log having selected this player from iOS:
      275.356290301 "nqptp-message-handlers.c:32" New control port message: "/shairport-sync-b827eb406f60 T".
         0.001072263 "nqptp-message-handlers.c:32" New control port message: "/shairport-sync-b827eb406f60 T fd60:823e:c8d5:4746:184c:e99a:c068:c72 fe80::14ac:d93:bad0:76e8 192.168.43.20".
         0.035591628 "nqptp-message-handlers.c:275" best_clock_update_needed because 90e17b32a58b0008 on ip fd60:823e:c8d5:4746:184c:e99a:c068:c72 has changed -- updating clock mastership for client "/shairport-sync-b827eb406f60"
         0.090703378 "nqptp-message-handlers.c:275" best_clock_update_needed because 90e17b32a58b0008 on ip fe80::14ac:d93:bad0:76e8 has changed -- updating clock mastership for client "/shairport-sync-b827eb406f60"
         0.138183188 "nqptp-message-handlers.c:32" New control port message: "/shairport-sync-b827eb406f60 T fd60:823e:c8d5:4746:184c:e99a:c068:c72 fe80::14ac:d93:bad0:76e8 192.168.43.20".
         1.031486227 "nqptp-message-handlers.c:275" best_clock_update_needed because 90e17b32a58b0008 on ip 192.168.43.20 has changed -- updating clock mastership for client "/shairport-sync-b827eb406f60"

    You can see the messages showing the incoming control port message, e.g:

      275.356290301 "nqptp-message-handlers.c:32" New control port message: "/shairport-sync-b827eb406f60 T".
         0.001072263 "nqptp-message-handlers.c:32" New control port message: "/shairport-sync-b827eb406f60 T fd60:823e:c8d5:4746:184c:e99a:c068:c72 fe80::14ac:d93:bad0:76e8 192.168.43.20".

    The first item is the name of the Shared Memory Interface /shairport-sync-b827eb406f60. The second is a command T. The remaining items are the IP numbers of the devices in this player group.

Could you post this information please and we might see what is happening that shouldn't be happening?

rjbutler commented 2 years ago

@mikebrady thanks, this is a new install so it's possible I missed something in the configuration, although I went over it a second time and I don't think so.

$ shairport-sync -V
4.1-dev-163-g7212504c-AirPlay2-OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc
$ nqptp -V
Version: 1.1-dev-99-g4d9d431. Shared Memory Interface Version: 6.

nqptp

$ sudo nqptp -v
         0.000816729 "nqptp.c:180" startup. self clock id: "dca632fffe8f4721".
         0.000276792 "nqptp.c:181" size of a clock entry is 992 bytes.
         0.000889209 "nqptp-utilities.c:97" socket 3 is listening on IPv4 port 319.
         0.000113795 "nqptp-utilities.c:97" socket 4 is listening on IPv6 port 319.
         0.000441345 "nqptp-utilities.c:97" socket 5 is listening on IPv4 port 320.
         0.000088480 "nqptp-utilities.c:97" socket 6 is listening on IPv6 port 320.
         0.000424272 "nqptp-utilities.c:97" socket 7 is listening on IPv4 port 9000.
         0.000109536 "nqptp-utilities.c:97" socket 8 is listening on IPv6 port 9000.
       116.846981601 "nqptp-message-handlers.c:69" *warning: Unrecognised string on the control port.
         0.000297700 "nqptp-message-handlers.c:69" *warning: Unrecognised string on the control port.
         0.028146370 "nqptp-message-handlers.c:69" *warning: Unrecognised string on the control port.

shairport-sync

$ shairport-sync -vu --statistics
         0.001278352 "shairport.c:1821" Features: 0x1c340405c4a00.
         0.000160388 "shairport.c:1874" Started in Airplay 2 mode on device "dc:a6:32:8f:47:21"!
         0.000046741 "shairport.c:1916" software version: "4.1-dev-163-g7212504c-AirPlay2-OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc"
         0.000019611 "shairport.c:1922" log verbosity is 1.
         0.000044037 "audio_alsa.c:1018" alsa: alsa_maximum_stall_time of 0.200000 sec.
         0.000045204 "audio_alsa.c:1305" alsa: disable_standby_mode is "never".
         0.000017056 "audio_alsa.c:1307" alsa: disable_standby_mode_silence_threshold is 0.040000 seconds.
         0.000015740 "audio_alsa.c:1309" alsa: disable_standby_mode_silence_scan_interval is 0.004000 seconds.
         0.000024019 "audio_alsa.c:1348" alsa: output device name is "hw:Headphones".
         0.000218741 "shairport.c:1951" libsodium initialised.
         0.000032759 "shairport.c:2001" disable resend requests is off.
         0.000017333 "shairport.c:2005" diagnostic_drop_packet_fraction is 0.000000. A value of 0.0 means no packets will be dropped deliberately.
         0.000017778 "shairport.c:2006" statistics_requester status is 1.
         0.000015759 "shairport.c:2011" rtsp listening port is 7000.
         0.000015667 "shairport.c:2012" udp base port is 6001.
         0.000013963 "shairport.c:2013" udp port range is 10.
         0.000013833 "shairport.c:2014" player name is "Raspberrypi".
         0.000013871 "shairport.c:2015" backend is "alsa".
         0.000013796 "shairport.c:2016" run_this_before_play_begins action is "(null)".
         0.000014130 "shairport.c:2017" run_this_after_play_ends action is "(null)".
         0.000015722 "shairport.c:2018" wait-cmd status is 0.
         0.000016333 "shairport.c:2019" run_this_before_play_begins may return output is 0.
         0.000015907 "shairport.c:2021" run_this_if_an_unfixable_error_is_detected action is "(null)".
         0.000015741 "shairport.c:2023" run_this_before_entering_active_state action is  "(null)".
         0.000014278 "shairport.c:2025" run_this_after_exiting_active_state action is  "(null)".
         0.000014130 "shairport.c:2026" active_state_timeout is  10.000000 seconds.
         0.000018092 "shairport.c:2027" mdns backend "avahi".
         0.000015593 "shairport.c:2032" interpolation setting is "auto".
         0.000015592 "shairport.c:2033" interpolation soxr_delay_threshold is 30.
         0.000015815 "shairport.c:2034" resync time is 0.050000 seconds.
         0.000016352 "shairport.c:2035" allow a session to be interrupted: 0.
         0.000014037 "shairport.c:2036" busy timeout time is 0.
         0.000014945 "shairport.c:2037" drift tolerance is 0.001995 seconds.
         0.000015500 "shairport.c:2038" password is "(null)".
         0.000014685 "shairport.c:2039" ignore_volume_control is 0.
         0.000015722 "shairport.c:2043" volume_max_db is not set
         0.000015333 "shairport.c:2045" volume range in dB (zero means use the range specified by the mixer): 60.
         0.000016167 "shairport.c:2049" volume_range_combined_hardware_priority (1 means hardware mixer attenuation is used first) is 0.
         0.000016167 "shairport.c:2051" playback_mode is 0 (0-stereo, 1-mono, 1-reverse_stereo, 2-both_left, 3-both_right).
         0.000015296 "shairport.c:2052" disable_synchronization is 0.
         0.000015000 "shairport.c:2053" use_mmap_if_available is 1.
         0.000014130 "shairport.c:2055" output_format automatic selection is enabled.
         0.000015518 "shairport.c:2059" output_rate automatic selection is enabled.
         0.000014667 "shairport.c:2063" audio backend desired buffer length is 0.200000 seconds.
         0.000016222 "shairport.c:2065" audio_backend_buffer_interpolation_threshold_in_seconds is 0.120000 seconds.
         0.000016556 "shairport.c:2066" audio backend latency offset is 0.000000 seconds.
         0.000017703 "shairport.c:2068" audio backend silence lead-in time is "auto".
         0.000014204 "shairport.c:2072" zeroconf regtype is "_raop._tcp".
         0.000015130 "shairport.c:2073" decoders_supported field is 1.
         0.000015592 "shairport.c:2074" use_apple_decoder is 0.
         0.000015482 "shairport.c:2075" alsa_use_hardware_mute is 0.
         0.000014259 "shairport.c:2079" no special mdns service interface was requested.
         0.000034037 "shairport.c:2083" configuration file name "/etc/shairport-sync.conf" resolves to "/etc/shairport-sync.conf".
         0.000018018 "shairport.c:2112" loudness is 0.
         0.000014408 "shairport.c:2113" loudness reference level is -20.000000
         1.500610388 "shairport.c:224" "soxr" interpolation has been chosen.
        56.129591559 "rtsp.c:2646" Connection 1: AP2 PTP connection from 192.168.14.77:63272 to self at 192.168.14.60:7000.
         0.307516000 "rtsp.c:3030" Connection 1. AP2 Buffered Audio Stream.
         0.003605129 "audio_alsa.c:903" Lowest dB value is a mute
         0.000676667 "audio_alsa.c:529" alsa: output format chosen is "S16".
         0.000079630 "audio_alsa.c:571" alsa: output speed chosen is 44100.
         0.014809407 "rtp.c:1415" Connection 1: NQPTP clock is not available.
         0.000064074 "rtp.c:1416" *warning: Can't access the NQPTP clock. Is NQPTP running?

Let me know if I can provide anything else

rjbutler commented 2 years ago

@mikebrady I printed out the string in question above, from the code it looks like you're expecting the 'T' to be at the start of the string

/shairport-sync-dca6328f4721 T

mikebrady commented 2 years ago

Many thanks @rjbutler. So, I see your problem alright -- your working version of NQPTP is too old. It should be on Interface Version 7. This is what I'm getting on my system, which might be a build or two ahead or behind what is public:

pi@RaspberryPi3B:~ $ nqptp -V
Version: 1.1-dev-118-g2fa53fc. Shared Memory Interface Version: 7.

So, it seems that your NQPTP is out of date with respect to Shairport Sync. Currently, the main version of NQPTP is 118 and the development version is 119. Either one should be okay and should be compatible with the latest version of Shairport Sync.

Shairport Sync itself is currently 4.1-dev-165, so you're pretty close to being fully up-to-date there.

By way of explanation, the big recent change is that NQPTP now expects a Shared Memory Interface (SMI) name as the first item in the control string. This is so that multiple instances of Shairport Sync can have their own private interfaces to NQPTP. Now, /shairport-sync-dca6328f4721 is a valid first item, and it's followed by T, which is correct, so Shairport Sync is generating the control string correctly. Unfortunately, the version of NQPTP you have is outdated, so it isn't set up to accept the SMI name, and is complaining.

rjbutler commented 2 years ago

@mikebrady thanks. I'm not sure why I have an older version, I should be up to date.. I just switched to the development branch and that too builds an old version.

pi@raspberrypi:~/nqptp $ git status
On branch development
Your branch is up to date with 'origin/development'.

nothing to commit, working tree clean
pi@raspberrypi:~/nqptp $ make clean
test -z "nqptp" || rm -f nqptp
test -z "gitversion.h" || rm -f gitversion.h
rm -f *.o
pi@raspberrypi:~/nqptp $ make
make  all-am
make[1]: Entering directory '/home/pi/nqptp'
echo "// Do not edit!" > gitversion.h
echo "// This file is automatically generated by 'git describe --dirty', if available." >> gitversion.h
echo -n "  char git_version_string[] = \"" >> gitversion.h
git describe --dirty | tr -d '[[:space:]]' >> gitversion.h
echo "\";" >> gitversion.h
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wall -Wextra -pthread --include=config.h -g -O2 -MT nqptp.o -MD -MP -MF .deps/nqptp.Tpo -c -o nqptp.o nqptp.c
mv -f .deps/nqptp.Tpo .deps/nqptp.Po
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wall -Wextra -pthread --include=config.h -g -O2 -MT nqptp-clock-sources.o -MD -MP -MF .deps/nqptp-clock-sources.Tpo -c -o nqptp-clock-sources.o nqptp-clock-sources.c
mv -f .deps/nqptp-clock-sources.Tpo .deps/nqptp-clock-sources.Po
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wall -Wextra -pthread --include=config.h -g -O2 -MT nqptp-message-handlers.o -MD -MP -MF .deps/nqptp-message-handlers.Tpo -c -o nqptp-message-handlers.o nqptp-message-handlers.c
mv -f .deps/nqptp-message-handlers.Tpo .deps/nqptp-message-handlers.Po
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wall -Wextra -pthread --include=config.h -g -O2 -MT nqptp-utilities.o -MD -MP -MF .deps/nqptp-utilities.Tpo -c -o nqptp-utilities.o nqptp-utilities.c
mv -f .deps/nqptp-utilities.Tpo .deps/nqptp-utilities.Po
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wall -Wextra -pthread --include=config.h -g -O2 -MT general-utilities.o -MD -MP -MF .deps/general-utilities.Tpo -c -o general-utilities.o general-utilities.c
mv -f .deps/general-utilities.Tpo .deps/general-utilities.Po
gcc -DHAVE_CONFIG_H -I.    -fno-common -Wall -Wextra -pthread --include=config.h -g -O2 -MT debug.o -MD -MP -MF .deps/debug.Tpo -c -o debug.o debug.c
mv -f .deps/debug.Tpo .deps/debug.Po
gcc -fno-common -Wall -Wextra -pthread --include=config.h -g -O2   -o nqptp nqptp.o nqptp-clock-sources.o nqptp-message-handlers.o nqptp-utilities.o general-utilities.o debug.o  -lrt -lpthread 
make[1]: Leaving directory '/home/pi/nqptp'
pi@raspberrypi:~/nqptp $ ./nqptp -V
Version: 1.1-dev-105-g52c038f. Shared Memory Interface Version: 6.

Any ideas? I'll try a completely new clone

rjbutler commented 2 years ago

OK, a new clone of the repo worked

noelhibbard commented 2 years ago

I have a script that looks like this which I use to bring my containers up to date which has always worked in the past up until 2022-01-03 or so.

#!/usr/bin/env bash

cd ./shairport-sync
git reset --hard
git pull

sed -i 's/RUN .\/configure /RUN .\/configure --with-pa /' ./docker/Dockerfile
sed -i 's/git \\/git \\\n        pulseaudio-dev \\/' ./docker/Dockerfile
sed -i 's/alsa-lib \\/alsa-lib \\\n        pulseaudio \\\n        pulseaudio-utils \\\n        curl \\/' ./docker/Dockerfile

SHAIRPORT_SYNC_BRANCH=development
NQPTP_BRANCH=development

docker buildx build -f ./docker/Dockerfile --build-arg SHAIRPORT_SYNC_BRANCH=$SHAIRPORT_SYNC_BRANCH --build-arg NQPTP_BRANCH=$NQPTP_BRANCH -t shairport-sync:unstable-development .

cd ..
docker-compose up -d

In this script you can see I am doing a git reset and then pull to get the latest sps from the development branch and then I use sed to add PulseAudio support to the Dockerfile. Then I build a new image and re-up up my docker compose so it uses the new image. On Sunday or Monday this resulted in the error in my first post. I switched NQPTP from the development branch to the main branch and the error went away. This morning I noticed a new commit on the development branch of NQPTP so I decided to give the NQPTP development branch another shot and sure enough it's working again. I looked at the commit and I just don't see anything that would have fixed my issue. So it's a bit of a mystery. The docker build environment is basically fresh each time so I don't see how anything would have been left behind.

Oh well, it's working now.

charlesomer commented 2 years ago

Ah that's probably because buildx is caching the NQPTP checkout stage of the build... I got caught out with that recently too. --no-cache prevents this from happening but does also result in a longer build process so isn't worth doing if NQPTP hasn't changed for example - if it's a script though it's probably easier to just leave it in. During my next PR I will add that info to the docker README, I thought I already had!

I suppose this problem would have been avoided if there was an automated docker build with PA support

noelhibbard commented 2 years ago

@rjbutler , git status only shows that you are upto date with your local copy of origin/development. If you did a git fetch it would fetch origin/development from Mike's repo at GitHub and then if you ran git status again it would show that you are behind. Rather than a new clone you probably could have done a git pull and do a new build and gotten up to date.

noelhibbard commented 2 years ago

Ah that's probably because buildx is caching the NQPTP checkout stage of the build... I got caught out with that recently too. --no-cache prevents this from happening but does also result in a longer build process so isn't worth doing if NQPTP hasn't changed for example - if it's a script though it's probably easier to just leave it in. During my next PR I will add that info to the docker README, I thought I already had!

I suppose this problem would have been avoid if there was an automated docker build with PA support

Okay that makes sense. This Docker black magic is still a bit new to me. I don't know how it decides when it's necessary start from scratch vs reuse stuff. I will add the --no-cache option to my script to avoid this in the future. A little extra build time isn't a big deal to me. Thanks for the help!

rjbutler commented 2 years ago

@noelhibbard Ugh, I knew that. I've been away from coding too long.

mikebrady commented 2 years ago

So, just to clarify, are both of you — @noelhibbard and @rjbutler — fixed up now?

noelhibbard commented 2 years ago

I am. :)

rjbutler commented 2 years ago

Me too, thanks!

mikebrady commented 2 years ago

Super. Thanks again to @charlesomer!

charlesomer commented 2 years ago

No problem, glad I could help 😄