OK, I did as you suggested. Eg. downloaded the nightly build file, and made a boot image on the SDcard.
It installed OK.
I completed step 1 thru 3 without any problems. and the dev/video0 and video1 devices are now created.
There was an error when I attempted to create a test image still shot.
[ 51%] Built target input_uvc
make[3]: Entering directory '/home/pi/mjpg-streamer-libcamera/mjpg-streamer-experimental/_build'
Scanning dependencies of target input_libcamera
make[3]: Leaving directory '/home/pi/mjpg-streamer-libcamera/mjpg-streamer-experimental/_build'
make[3]: Entering directory '/home/pi/mjpg-streamer-libcamera/mjpg-streamer-experimental/_build'
[ 55%] Building CXX object plugins/input_libcamera/CMakeFiles/input_libcamera.dir/input_libcamera.cpp.o
In file included from /home/pi/mjpg-streamer-libcamera/mjpg-streamer-experimental/plugins/input_libcamera/LibCamera.h:20,
from /home/pi/mjpg-streamer-libcamera/mjpg-streamer-experimental/plugins/input_libcamera/input_libcamera.cpp:31:
/usr/include/libcamera/libcamera/controls.h: In instantiation of βvoid libcamera::ControlList::set(const libcamera::Control&, const std::initializer_list<_Up>&) [with T = libcamera::Span<const long long int, 2>; V = long long int]β:
/home/pi/mjpg-streamer-libcamera/mjpg-streamer-experimental/plugins/input_libcamera/input_libcamera.cpp:259:77: required from here
/usr/include/libcamera/libcamera/controls.h:403:14: error: no matching function for call to βlibcamera::ControlValue::set<libcamera::Span<const long long int, 2> >(libcamera::Span<const long long int, 4294967295>)β
403 | val->set(Span<const typename std::remove_cv_t>{ value.begin(), value.size() });
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/libcamera/libcamera/controls.h:178:7: note: candidate: βtemplate<class T, typename std::enable_if<((! libcamera::details::is_span::value) && (! std::is_same<std::__cxx11::basic_string, typename std::remove_cv< >::type>::value)), std::nullptr_t>::type > void libcamera::ControlValue::set(const T&)β
178 | void set(const T &value)
| ^~~
/usr/include/libcamera/libcamera/controls.h:178:7: note: template argument deduction/substitution failed:
/usr/include/libcamera/libcamera/controls.h:177:30: error: no type named βtypeβ in βstruct std::enable_if<false, std::nullptr_t>β
177 | std::nullptr_t> = nullptr>
| ^~~~~~~
/usr/include/libcamera/libcamera/controls.h:190:7: note: candidate: βtemplate<class T, typename std::enable_if<(libcamera::details::is_span::value || std::is_same<std::__cxx11::basic_string, typename std::remove_cv< >::type>::value), std::nullptr_t>::type > void libcamera::ControlValue::set(const T&)β
190 | void set(const T &value)
| ^~~
/usr/include/libcamera/libcamera/controls.h:190:7: note: template argument deduction/substitution failed:
/usr/include/libcamera/libcamera/controls.h:403:14: note: cannot convert βlibcamera::Span<const long long int, 4294967295>((& value)->std::initializer_list::begin(), (& value)->std::initializer_list::size())β (type βlibcamera::Span<const long long int, 4294967295>β) to type βconst libcamera::Span<const long long int, 2>&β
403 | val->set(Span<const typename std::remove_cv_t>{ value.begin(), value.size() });
| ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So, this is a different issue than I found when I tried this earlier. But to the same effect: libcamera not successfully built. Lines following the quoted text told me various Error 1 and Error 2
I am checking over my work to see if I missed any steps.