# Use `dwarfdump --search-regex` to reduce output lines. Worse.

time find debian/build/build-oem \( -name vmlinux -o -name \*.ko \) -print0 | \
        xargs -0 -P $(nproc) -I % \
        sh -c "dwarfdump --search-regex='DW_AT_(call|decl)_file' % | awk 
'/^DW_AT_(call|decl)_file.*\// {print substr($0, index($0, \"/\"))}' | sort -u 
| flock -x debian/build/build-oem/sources.list.lock cat" | sort -u > \
        debian/build/build-oem/sources.list

real    7m20.015s
user    40m55.983s
sys     6m36.425s

=========================================================

# Use `sort --parallel`. No much improves.

time find /home/vicamo/build/worktree/1/debian/build/build-oem \( -name vmlinux 
-o -name \*.ko \) -print0 | \
        xargs -0 -P $(nproc) -I % \
        sh -c "dwarfdump -i % | awk '/DW_AT_(call|decl)_file.*\// {print 
substr($0, index($0, \"/\"))}' | sort -u | flock -x 
/home/vicamo/build/worktree/1/debian/build/build-oem/sources.list.lock cat" | 
sort -u --parallel=$(nproc) > \
        /home/vicamo/build/worktree/1/debian/build/build-oem/sources.list

real    6m27.027s
user    39m10.054s
sys     5m41.264s

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/2104911

Title:
  sources list generation using dwarfdump takes up to 0.5hr in build
  process

Status in linux package in Ubuntu:
  New
Status in linux source package in Focal:
  New
Status in linux source package in Jammy:
  New
Status in linux source package in Noble:
  New
Status in linux source package in Oracular:
  New
Status in linux source package in Plucky:
  New

Bug description:
  In debian/rules.d/2-binary-arch.mk, stamp-build-% targets, we have:
  ```
  # Collect the list of kernel source files used for this build. Need to do 
this early
  # before modules are stripped. Fail if the resulting file is empty.
  find $(build_dir) \( -name vmlinux -o -name \*.ko \) -exec dwarfdump -i {} \; 
| \
          grep -E 'DW_AT_(call|decl)_file' | sed -n 's|.*\s/|/|p' | sort -u > \
          $(build_dir)/sources.list
  test -s $(build_dir)/sources.list
  ```

  The process is single threaded and may takes up to half an hour to complete:
  ```
  $ time ...

  real 28m15.167s  
  user 54m32.917s  
  sys 4m32.531s
  ```

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2104911/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to