[Buildroot] libffi or the crazy world of toolchain options

Yann E. MORIN yann.morin.1998 at free.fr
Sun Aug 26 20:40:50 UTC 2012


Thomas, All,

On Sunday 26 August 2012 12:23:46 Yann E. MORIN wrote:
> On Saturday 25 August 2012 17:06:05 Thomas Petazzoni wrote:
> > This patch, I hope, illustrate how crazy this story of "depends on"
> > needed for toolchain options has become. We need to find a solution
> > for this. Yann has proposed something (see
> > http://lists.busybox.net/pipermail/buildroot/2012-August/057144.html).
> > 
> > Opinions? My patch, or Yann's solution? Other solutions?
[--SNIP--]
> Today, I'll be working on my proposal (eg. the BR2_PKG_XX_AVAILABLE stuff),
> and will post a patchset.

OK, now I have a shell+awk script (pkg-avail, attached) that:
  - adds a BR2_PACKAGE_XXX_AVAILABLE symbol for all packages
  - moves packages dependencies to that symbol
  - adds a single dependency against that symbol to the corresponding
    BR2_PACKAGE_XXX /main/ symbol

and a second shell script (pkg-avail-test, attached too) that:
  - runs a batch of randconfig before the changes, and saves the
    generated .config files
  - applies the changes
  - uses the previous batch of randconfigs as defconfig files
  - compares the initial .config with the new .config

Note that the pkg-avail-test script does a few tricks to be able to compare
before and after the change:
  - removes the commented date-line
  - fakes any required DEFCONFIG files (eg. for barebox, the kernel, the
    ct-ng bachkend)
  - removes the _AVAILABLE symbols in new .config files

So far, I've run 10.000 iterations (took ~1h), and I saw no difference.

(
  What I saw, however, is that there are at least two 'select' on packages
  that have 'unmet direct dependencies':
    - (BR2_INIT_SYSV) selects BR2_PACKAGE_SYSVINIT which has unmet direct
      dependencies (BR2_PACKAGE_BUSYBOX_SHOW_OTHERS)
    - (BR2_PACKAGE_COLLECTD_RRDTOOL) selects BR2_PACKAGE_RRDTOOL which has
      unmet direct dependencies (BR2_USE_WCHAR)
  I hope that this can be solved by this on-going change, but I'll anyway
  try to send a fix for those two so it can go in 2012.08.
)

What's left, now, is to change each dependency on a package /main/ symbol
to a dependency on the corresponding _AVAILABLE symbol, plus a select on
the the /main/ symbol. I hope to update my scripts with this functionality.
I definitely do not want to manually review hundreds of packages! ;-)

Both scripts use stgit to manage the stack queue of changes (I heavily
use stgit, it eases things for me).

I am not posting the corresponding patchset, because:
  - it is really big
  - it's not final
  - anyone can experiment with my two scripts

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pkg-avail
Type: application/x-shellscript
Size: 2482 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20120826/fa42b733/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pkg-avail-test
Type: application/x-shellscript
Size: 1514 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20120826/fa42b733/attachment-0005.bin>


More information about the buildroot mailing list