[libcamera-devel] [PATCH] utils: Added a helper script to manage dependencies

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Feb 28 14:59:56 CET 2023


On Tue, Feb 28, 2023 at 05:01:56PM +0900, Paul Elder via libcamera-devel wrote:
> On Thu, Feb 23, 2023 at 06:17:08PM +0100, sfilbertf via libcamera-devel wrote:
> 
> Interesting idea. However, you're missing both changelog as well as a
> Signed-off-by tag.
> 
> Here are some resources:
> 
> https://cbea.ms/git-commit/
> https://docs.kernel.org/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin

I'm also a bit concerned about hiding a "sudo" call inside a script.

> > ---
> >  utils/bootstrap-deps.sh | 102 ++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 102 insertions(+)
> >  create mode 100755 utils/bootstrap-deps.sh
> > 
> > diff --git a/utils/bootstrap-deps.sh b/utils/bootstrap-deps.sh
> > new file mode 100755
> > index 00000000..95e7e66c
> > --- /dev/null
> > +++ b/utils/bootstrap-deps.sh
> > @@ -0,0 +1,102 @@
> > +#!/usr/bin/env bash
> > +
> > +# Currently only for ubuntu and debian based distros
> > +apt_get_ext=$(command -v apt-get)
> > +if [ -z ${apt_get_ext} ]; then
> > +	exit
> > +fi
> > +
> > +# Help message
> > +function help {
> > +	echo "Usage:"
> > +	echo "./bootstrap-deps.sh [arg1] [arg2] . . ."
> > +	echo ""
> > +	echo "Where argi can be:"
> > +	echo "-all       for all dependencies"
> > +	echo "-cam       for cam"
> > +	echo "-qcam      for qcam"
> > +	echo "-tracing   for tracing with lttng"
> > +	echo "-gstreamer for gstreamer"
> > +	echo "-hotplug   for device hotplug enumeration"
> > +	echo "-docs      for documentation"
> > +	echo "-ipams     for IPA module signing"
> > +	echo "-debug     for improved debugging"
> > +	echo "-android   for android"
> > +	echo "-lcc       for lc-compliance"
> > +}
> > +
> > +if [ $# == 1 ] && [ $1 == "-h" ] || [ $1 == "-help" ]; then
> > +	help
> > +	exit
> > +fi
> > +
> > +# Dependencies
> > +CORE="libyaml-dev python3-yaml python3-ply python3-jinja2"
> > +IPAMS="libgnutls28-dev"
> > +DEBUG="libdw-dev libunwind-dev"
> > +HOTPLUG="libudev-dev"
> > +DOCS="python3-sphinx doxygen graphviz texlive-latex-extra"
> > +GSTREAMER="libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev"
> > +CAM="libevent-dev libdrm-dev libjpeg-dev libsdl2-dev"
> > +QCAM="qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5 qttools5-dev-tools libtiff-dev"
> > +TRACING="liblttng-ust-dev python3-jinja2 lttng-tools"
> > +ANDROID="libexif-dev libjpeg-dev"
> > +LCCOMP="libevent-dev"
> > +
> > +# Meson build system
> > +pip3 install --user meson
> > +pip3 install --user --upgrade meson

Installing meson in $HOME is discouraged, as having differents version
in $HOME and in /usr can cause issues when running ninja install.

> > +# libcamera core
> > +sudo apt-get install -y ${CORE}
> > +
> > +# Optional dependencies
> > +for arg in "$@"
> > +do
> > +	case ${arg} in 
> > +		# For all dependencies
> > +		"-all")
> > +			sudo apt-get install -y ${IPAMS} ${DEBUG} ${HOTPLUG} ${DOCS} ${GSTREAMER} ${CAM} ${QCAM} ${TRACING} ${ANDROID} ${LCCOMP}	
> > +		;;
> > +		# For cam
> > +		"-cam")
> > +			sudo apt-get install -y ${CAM}
> > +		;;
> > +		# For qcam
> > +		"-qcam")
> > +			sudo apt-get install -y ${QCAM}
> > +		;;	
> > +		# For tracing 
> > +		"-tracing")
> > +			sudo apt-get install -y ${TRACING}
> > +		;;
> > +		# For gstreamer
> > +		"-gstreamer")
> > +			sudo apt-get install -y ${GSTREAMER}
> > +		;;
> > +		# For hotplug 
> > +		"-hotplug")
> > +			sudo apt-get install -y ${HOTPLUG}
> > +		;;
> > +		# For documentation
> > +		"-docs")
> > +			sudo apt-get install -y ${DOCS}
> > +		;;
> > +		# For IPA module signing
> > +		"-ipams")
> > +			sudo apt-get install -y ${IPAMS}
> > +		;;
> > +		# For improved debugging
> > +		"-debug")
> > +			sudo apt-get install -y ${DEBUG}
> > +		;;
> > +		# For android
> > +		"-android")
> > +			sudo apt-get install -y ${ANDROID}
> > +		;;
> > +		# For lc-compliance
> > +		"-lcc")
> > +			sudo apt-get install -y ${LCCOMP}
> > +		;;
> > +	esac	
> > +done

How about collecting all the needed packages in one variable and running
apt-get install once only ?

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list