[vlc-devel] [PATCH 5/6] contrib: protobuf: build protoc from contribs

Steve Lhomme robux4 at ycbcr.xyz
Tue Mar 24 10:32:09 CET 2020


On 2020-03-23 17:23, Rémi Denis-Courmont wrote:
> Le maanantaina 23. maaliskuuta 2020, 17.27.26 EET Steve Lhomme a écrit :
>> Similar to how it's done for luac: we have a triplet-protoc in contrib/bin.
>> ---
>>   configure.ac                   | 10 +++++++++-
>>   contrib/src/protobuf/rules.mak | 19 +++++++++++++++++--
>>   2 files changed, 26 insertions(+), 3 deletions(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index bc1874cb97c..8af142d48bd 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -502,6 +502,12 @@ AS_IF([test -n "${CONTRIB_DIR}"], [
>>       ])
>>     ])
>>
>> +  AS_IF([test -z "$PROTOC"], [
>> +    AS_IF([test -x
>> "${CONTRIB_DIR}/../bin/${host_alias}-protoc${BUILDEXEEXT}"], [ +
>> PROTOC="${CONTRIB_DIR}/../bin/${host_alias}-protoc${BUILDEXEEXT}" +    ])
>> +  ])
>> +
>>     AS_IF([test "${SYS}" = "darwin"], [
>>       export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
>>       export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
>> @@ -3870,7 +3876,9 @@ dnl  Chromecast streaming support
>>   dnl
>>   m4_pushdef([protobuf_lite_version], 2.5.0)
>>   AC_ARG_VAR(PROTOC, [protobuf compiler])
>> -AC_CHECK_PROGS(PROTOC, protoc, no)
>> +AS_IF([test -z "$PROTOC"], [
>> +   AC_CHECK_TOOL(PROTOC, protoc, no)
>> +])
>>   PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [
>>       AS_IF([test "x${PROTOC}" != "xno"], [
>>           build_chromecast="yes"
> 
> I don't know if this is right or wrong, but it belongs in a separate patch.

If you mean the lines above, it's related as in the case he host-protoc 
is found we use that and don't test it (like luac). Otherwise we revert 
to the system detection. No reason to change from AC_CHECK_PROGS to 
AC_CHECK_TOOL. I'll change that.

>> diff --git a/contrib/src/protobuf/rules.mak b/contrib/src/protobuf/rules.mak
>> index c505ef7548b..28f38445566 100644
>> --- a/contrib/src/protobuf/rules.mak
>> +++ b/contrib/src/protobuf/rules.mak
>> @@ -2,9 +2,10 @@
>>   PROTOBUF_VERSION := 3.1.0
>>   PROTOBUF_URL :=
>> https://github.com/google/protobuf/releases/download/v$(PROTOBUF_VERSION)/p
>> rotobuf-cpp-$(PROTOBUF_VERSION).tar.gz
>>
>> -PKGS += protobuf
>> +PKGS += protobuf protoc
>> +PKGS_PROGS += protoc
>>   ifeq ($(call need_pkg, "protobuf-lite >= 3.1.0 protobuf-lite < 3.2.0"),)
>> -PKGS_FOUND += protobuf
>> +PKGS_FOUND += protobuf protoc
>>   else
>>   # check we have a matching protoc to use
>>   PROTOC_ABSPATH = $(shell PATH="$(PATH)" which protoc)
> 
> Won't work. See how luac does it.

You mean adding protoc to PKGS_ALL ?


>> @@ -44,3 +45,17 @@ protobuf: protobuf-$(PROTOBUF_VERSION)-cpp.tar.gz
>> .sum-protobuf cd $< && $(HOSTVARS) ./configure $(HOSTCONF)
>> --with-protoc="$(PROTOC)" cd $< && $(MAKE) && $(MAKE) install
>>   	touch $@
>> +
>> +.sum-protoc: .sum-protobuf
>> +	touch $@
>> +
>> +protoc: protobuf-$(PROTOBUF_VERSION)-cpp.tar.gz .sum-protoc
>> +	$(UNPACK)
>> +	mv protobuf-$(PROTOBUF_VERSION) protobuf-$(PROTOBUF_VERSION)-cpp
>> +	$(APPLY) $(SRC)/protobuf/protobuf-win32.patch
>> +	$(MOVE)
>> +
>> +.protoc: protoc
>> +	cd $< && $(BUILDVARS) ./configure $(BUILDCONF)
>> +	cd $< && $(MAKE) && $(MAKE) install
>> +	touch $@
> 
> That will install plenty of crap that we most probably don't want to install.

As the great philosopher once said: storage is cheap.

And it's not that much. And there's no rule to only build and only 
install protoc from the whole protobuf package.


More information about the vlc-devel mailing list