Re: [PATCH 1/2] v4l2-compliance: Add version command

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/07/2020 15:51, Laurent Pinchart wrote:
> Hi Hans,
> 
> On Fri, Jul 10, 2020 at 03:33:25PM +0200, Hans Verkuil wrote:
>> On 10/07/2020 15:25, Laurent Pinchart wrote:
>>> On Fri, Jul 10, 2020 at 10:18:12PM +0900, Paul Elder wrote:
>>>> Add a --version option to v4l2-compliance to retrieve the version of
>>>> v4l2-compliance.
>>>>
>>>> Signed-off-by: Paul Elder <paul.elder@xxxxxxxxxxxxxxxx>
>>>> ---
>>>>  utils/v4l2-compliance/v4l2-compliance.cpp | 11 +++++++++++
>>>>  1 file changed, 11 insertions(+)
>>>>
>>>> diff --git a/utils/v4l2-compliance/v4l2-compliance.cpp b/utils/v4l2-compliance/v4l2-compliance.cpp
>>>> index 4b45f110..72b9768f 100644
>>>> --- a/utils/v4l2-compliance/v4l2-compliance.cpp
>>>> +++ b/utils/v4l2-compliance/v4l2-compliance.cpp
>>>> @@ -79,6 +79,7 @@ enum Option {
>>>>  	OptMediaBusInfo = 'z',
>>>>  	OptStreamFrom = 128,
>>>>  	OptStreamFromHdr,
>>>> +	OptVersion,
>>>>  	OptLast = 256
>>>>  };
>>>>  
>>>> @@ -153,9 +154,15 @@ static struct option long_options[] = {
>>>>  	{"stream-all-formats", optional_argument, 0, OptStreamAllFormats},
>>>>  	{"stream-all-io", no_argument, 0, OptStreamAllIO},
>>>>  	{"stream-all-color", required_argument, 0, OptStreamAllColorTest},
>>>> +	{"version", no_argument, 0, OptVersion},
>>>>  	{0, 0, 0, 0}
>>>>  };
>>>>  
>>>> +static void version()
>>>> +{
>>>> +	printf("v4l2-compliance " PACKAGE_VERSION "\n");
>>>
>>> Is it enough to rely on the v4l-utils package version, or should we add
>>> a git commit count as well ? The traditional version number will make it
>>> difficult to test for features added between two released versions.
>>
>> If you add a version option, then v4l2-compliance should also show the SHA.
>> It's already available (grep for SHA), so easy enough to add here.
> 
> The issue with the SHA is that, while it identifies the exact commit, it
> is useless to compare versions. We are using v4l2-compliance to test the
> libcamera V4L2 compatibility layer, and this depends on recent features
> merged in the master branch but not available in a release yet. We would
> like the test to be skipped if the v4l2-compliance is too old. Printing
> the package version is a good step forward, but would require waiting
> for the next release before the test can be enabled. That's probably OK
> overall, but it's a bit annoying during development. That's why I was
> wondering if a commit count (as output by git rev-list --count HEAD)
> would be useful too. In our case, the fact that v4l2-compliance supports
> the --version option will be enough to know it's recent enough, but I'm
> thinking about the future (for libcamera and other users).

That would work, then you would get this:

v4l2-compliance 1.21.0-4606
v4l2-compliance SHA: 3b22ab02b960e4d1e90618e9fce9b7c8a80d814a, 64 bits, 64-bit time_t

cec-compliance 1.21.0-4604
cec-compliance SHA: 3b22ab02b960e4d1e90618e9fce9b7c8a80d814a

I still want the SHA, though :-)

The problem with the commit count is that someone can fork v4l-utils and apply
its own patches. So the count does not sufficiently identify the version.

It's no doubt fine for libcamera, but for getting a new driver into mainline
I must know the exact version that is used for the compliance test.

Regards,

	Hans

> 
>> Also, if you add --version here, then it really should be added to most
>> other utils as well (certainly media-ctl and cec-follower/ctl/compliance).
>>
>>>> +}
>>>> +
>>>>  static void usage()
>>>>  {
>>>>  	printf("Usage:\n");
>>>> @@ -244,6 +251,7 @@ static void usage()
>>>>  	printf("  -P, --no-progress  Turn off progress messages.\n");
>>>>  	printf("  -T, --trace        Trace all called ioctls.\n");
>>>>  	printf("  -v, --verbose      Turn on verbose reporting.\n");
>>>> +	printf("  --version          Show version information.\n");
>>>>  #ifndef NO_LIBV4L2
>>>>  	printf("  -w, --wrapper      Use the libv4l2 wrapper library.\n");
>>>>  #endif
>>>> @@ -1664,6 +1672,9 @@ int main(int argc, char **argv)
>>>>  		case OptNoProgress:
>>>>  			no_progress = true;
>>>>  			break;
>>>> +		case OptVersion:
>>>> +			version();
>>>> +			std::exit(EXIT_SUCCESS);
>>>>  		case ':':
>>>>  			fprintf(stderr, "Option `%s' requires a value\n",
>>>>  				argv[optind]);
> 




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux