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

[Git][lintian/lintian][master] Emit warning when nproc is used in debian/rules



Title: GitLab

Maytham Alsudany pushed to branch master at lintian / lintian

Commits:

  • be30cc13
    by Maytham Alsudany at 2025-03-20T00:26:34+00:00
    Emit warning when nproc is used in debian/rules
    
    As per Debian Policy 4.9.1, packages should respect `parallel` in
    `DEB_BUILD_OPTIONS`. Using `nproc` without checking `DEB_BUILD_OPTIONS`
    is not good.
    
    This commit adds the debian-rules-calls-nproc tag, which is emitted when
    `nproc` is executed in debian/rules.
    
    Closes: #1088671
    
    Apply fixes
    

6 changed files:

Changes:

  • lib/Lintian/Check/Debian/Rules.pm
    ... ... @@ -456,6 +456,12 @@ sub source {
    456 456
                     $pointer);
    
    457 457
             }
    
    458 458
     
    
    459
    +        if ($line =~ /\$\$\(\s*((\/usr)?\/bin\/)?nproc\s*\)/s
    
    460
    +            || $line =~ /\$\(shell \s*((\/usr)?\/bin\/)?nproc\s*\)/s
    
    461
    +            || $line =~ /`\s*((\/usr)?\/bin\/)?nproc\s*\`/s) {
    
    462
    +            $self->pointed_hint('debian-rules-calls-nproc',$pointer);
    
    463
    +        }
    
    464
    +
    
    459 465
             if ($line !~ /^ifn?(?:eq|def)\s/ && $line =~ /^([^\s:][^:]*):+(.*)/s) {
    
    460 466
                 my ($target_names, $target_dependencies) = ($1, $2);
    
    461 467
                 @current_targets = split $SPACE, $target_names;
    

  • t/recipes/checks/debian/rules/debian-rules-calls-nproc/build-spec/debian/rules
    1
    +#!/usr/bin/make -f
    
    2
    +
    
    3
    +NUM_CPUS=`/usr/bin/nproc`
    
    4
    +
    
    5
    +%:
    
    6
    +	dh $@
    
    7
    +
    
    8
    +override_dh_auto_build:
    
    9
    +	# This use of `nproc` will not cause a hint. 
    
    10
    +	@echo "Building with $$(nproc) jobs."
    
    11
    +	dh_auto_build -- -j $(shell nproc)
    
    12
    +	echo Just saying the word nproc also will not cause a hint.

  • t/recipes/checks/debian/rules/debian-rules-calls-nproc/build-spec/fill-values
    1
    +Skeleton: source-native
    
    2
    +Testname: debian-rules-calls-nproc
    
    3
    +Description: debian/rules calls nproc

  • t/recipes/checks/debian/rules/debian-rules-calls-nproc/eval/desc
    1
    +Testname: debian-rules-calls-nproc
    
    2
    +Check: debian/rules

  • t/recipes/checks/debian/rules/debian-rules-calls-nproc/eval/hints
    1
    +debian-rules-calls-nproc (source): debian-rules-calls-nproc [debian/rules:3]
    
    2
    +debian-rules-calls-nproc (source): debian-rules-calls-nproc [debian/rules:11]
    
    3
    +debian-rules-calls-nproc (source): debian-rules-calls-nproc [debian/rules:10]

  • tags/d/debian-rules-calls-nproc.tag
    1
    +Tag: debian-rules-calls-nproc
    
    2
    +Severity: warning
    
    3
    +Check: debian/rules
    
    4
    +Explanation: The <code>debian/rules</code> file for this package appears to
    
    5
    + use nproc to determine the number of jobs to run in parallel during the
    
    6
    + package build. This violates the Debian Policy, as the build must respect
    
    7
    + "parallel=N" when passed in DEB_BUILD_OPTIONS.
    
    8
    + .
    
    9
    + To determine the number of jobs to run in parallel during the package build,
    
    10
    + you can use the DEB_BUILD_OPTION_PARALLEL variable from
    
    11
    + <code>/usr/share/dpkg/buildopts.mk</code>, which is set to the value of "N"
    
    12
    + when "parallel=N" is passed.
    
    13
    + .
    
    14
    +     include /usr/share/dpkg/buildopts.mk
    
    15
    +     NUM_CPUS=$(DEB_BUILD_OPTION_PARALLEL)
    
    16
    + .
    
    17
    + You can also use Make's <code>addprefix</code> to add a prefix like "-j" if
    
    18
    + the DEB_BUILD_OPTION_PARALLEL variable is present, which can then be passed as
    
    19
    + an argument.
    
    20
    +See-Also: debian-policy 4.9.1


  • Reply to: