• Masahiro Yamada's avatar
    kbuild: deb-pkg: support DEB_BUILD_OPTIONS=parallel=N in debian/rules · ed79c34d
    Masahiro Yamada authored
    'make srcdeb-pkg' generates a source package, which you can build
    later by using dpkg-buildpackage.
    
    In older dpkg versions, 'dpkg-buildpackage --jobs=N' sets not only
    DEB_BUILD_OPTIONS but also MAKEFLAGS. Hence, passing -j or --jobs
    to dpkg-buildpackage was enough for kicking the parallel execution.
    
    The behavior was changed by commit 1d0ea9b2ba3f ("dpkg-buildpackage:
    Change -j, --jobs semantics to non-force mode") of dpkg project. [1]
    
    Since then, 'dpkg-buildpackage --jobs=N' sets only DEB_BUILD_OPTIONS,
    which is not parsed by the current debian/rules. To build the package
    in parallel, you need to pass the alternative --jobs-force option or
    set the MAKEFLAGS environment variable.
    
    Debian policy [2] suggests the following code snippet for debian/rules.
    
      ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
          NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
          MAKEFLAGS += -j$(NUMJOBS)
      endif
    
    I tweaked the code to filter out parallel=1 and passed --jobs=1 to
    dpkg-buildpackage from scripts/Makefile.package. It is needed to force
    'make deb-pkg' without the -j option to run in serial. Please note that
    dpkg-buildpackage sets parallel=<nproc> in DEB_BUILD_OPTIONS by default
    (that is, --jobs=auto is the default) and --jobs=1 is needed to restore
    the serial execution. When dpkg-buildpackage is invoked from Kbuild,
    the number of jobs is inherited from the top level Makefile. Passing
    --jobs=1 to dpkg-buildpackage allows debian/rules to skip parsing
    DEB_BUILD_OPTIONS.
    
    [1] https://salsa.debian.org/dpkg-team/dpkg/-/commit/1d0ea9b2ba3f6a2de5b1a6ff55f3df7b71f73db6
    [2] https://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-optionsReported-by: default avatarBastian Germann <bage@linutronix.de>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    ed79c34d
rules 925 Bytes