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

Re: Bug#1022239: festival FTBFS: make[2]: *** [/usr/lib/speech_tools/config/rules/targets.mak:55: src] Error 2



Control: tags -1 patch

On Sat, Oct 22, 2022 at 05:07:54PM +0200, Samuel Thibault wrote:
> Control: severity -1 wishlist
> 
> Samuel Thibault, le sam. 22 oct. 2022 17:06:07 +0200, a ecrit:
> > Nilesh Patra, le sam. 22 oct. 2022 20:09:05 +0530, a ecrit:
> > > Command: dpkg-buildpackage --sanitize-env -us -uc -b -rfakeroot -j5
> > 
> > Ok, that's why. festival's makefile does not support parallel builds.
> > That's why we do not pass any -j parameter to the explicit make call.
> > 
> > It seems that dpkg-buildpackage's -j option forcibly passes -j
> > in MAKEFLAGS. Is there a way to prevent it from doing that, or
> > should users just know whether they can use -j, and rather use
> > DEB_BUILD_OPTIONS=parallel=nn if they don't know?
> 
> -J's documentation
> 
> “
>        -J, --jobs-try[=jobs|auto]
>            This option (since dpkg 1.18.2, long option since dpkg 1.18.8) is
>            equivalent to the -j option except that it does not set the
>            MAKEFLAGS environment variable, and as such it is safer to use with
>            any package including those that are not parallel-build safe.
> 
>            auto is the default behavior (since dpkg 1.18.11). Setting the
>            number of jobs to 1 will restore a serial behavior.
> ”
> 
> leads me into thinking that this is notabug from festival, and people
> should be just using -J and not -j?


I see, yes indeed. I have "$dpkg_buildpackage_user_options = ['-j5'];" set in
my sbuildrc since atleast a couple of years or so and this is the first time I
have seen something choke.

If the makefile does not support parallel building, then it makes sense
to explicity declare that with a --no-parallel. The custom $(MAKE) call can go
away. I tried again with -j5 option, and passing a --no-parallel seems to
mitigate this. I have attached the patch for the same, please consider taking
a look.

BTW, if you could do something to not build the festival.info file during the
build, somehow split build and doc for override_dh_auto_build into -arch and -indep call, that'd make
festival natively cross-building, and I'd be quite happy on seeing that.
Currently, you are installing festival.info.* files in festival binary package and
cross-build would choke there if doc call is separated into -indep rule.
One way could be to build this package twice, once natively and once cross-build but that'd be a ugly.

-- 
Best,
Nilesh
diff --git a/debian/rules b/debian/rules
index 5b28cca..435e7db 100755
--- a/debian/rules
+++ b/debian/rules
@@ -10,11 +10,6 @@ export FORCE_SOURCE_DATE=1
 FAKETIME = TZ=UTC faketime @$(SOURCE_DATE_EPOCH)
 endif
 
-ifeq ($(origin CC),default)
-CC := $(DEB_HOST_GNU_TYPE)-gcc
-CXX := $(DEB_HOST_GNU_TYPE)-g++
-endif
-
 override_dh_auto_configure:
 #Avoid conflicting with upstreams build system
 
@@ -22,7 +17,7 @@ override_dh_auto_test:
 #Upstream states test is only for their local development not a functional test
 
 override_dh_auto_build:
-	$(MAKE) CC='$(CC)' CXX='$(CXX)'
+	dh_auto_build --no-parallel --buildsystem=makefile
 	cd doc && $(FAKETIME) $(MAKE) festival.info festival.html festival.ps
 
 override_dh_auto_clean:

Attachment: signature.asc
Description: PGP signature


Reply to: