RSB Couverture-Qemu build queries

Cillian O'Donnell cpodonnell8 at gmail.com
Mon Jun 19 10:33:48 UTC 2017


On 18 June 2017 at 03:23, Chris Johns <chrisj at rtems.org> wrote:
> On 17/6/17 6:38 am, Joel Sherrill wrote:
>>
>>
>> On Fri, Jun 16, 2017 at 2:13 PM, Cillian O'Donnell <cpodonnell8 at gmail.com
>> <mailto:cpodonnell8 at gmail.com>> wrote:
>>
>>     Hi,
>>
>>     I am getting the RSB to build Couverture-Qemu and I just want to check
>>     a few things I have done so far.
>>
>>     1. There are about 5 patches applied to the current qemu build. Only
>>     one of which applies cleanly to the Couverture build. Do you want me
>>     to try and fix these up, comment them out and leave a note for
>>     whoever wants to fix them or remove them completely? The patches that
>>     don't work are:
>>
>>     %patch add qemu
>>     pw://patchwork.ozlabs.org/patch/406903/raw/Provide-the-missing-LIBUSB_LOG_LEVEL_-for-older-libusb-or-FreeBSD.-Providing-just-the-needed-value-as-a-defined..patch
>>     <http://patchwork.ozlabs.org/patch/406903/raw/Provide-the-missing-LIBUSB_LOG_LEVEL_-for-older-libusb-or-FreeBSD.-Providing-just-the-needed-value-as-a-defined..patch>
>>
>>     %patch add qemu
>>     https://gaisler.org/qemu/0001-LEON3-Add-emulation-of-AMBA-plug-
>>     <https://gaisler.org/qemu/0001-LEON3-Add-emulation-of-AMBA-plug->
>>     play.patch
>>
>>     %patch add qemu
>>     https://gaisler.org/qemu/0002-LEON3-Build-AMBA-plug-and-play-records-from-high-lev.patch
>>     <https://gaisler.org/qemu/0002-LEON3-Build-AMBA-plug-and-play-records-from-high-lev.patch>
>>
>>     %patch add qemu
>>     https://gaisler.org/qemu/0003-LEON3-Init-UART-timers-and-CPU-if-we-run-a-RAM-image.patch
>>     <https://gaisler.org/qemu/0003-LEON3-Init-UART-timers-and-CPU-if-we-run-a-RAM-image.patch>
>>
>>
>>
>> I think they need to be proposed to the Couverture project to be evaluated. They
>> should
>> be OK with the Gaisler ones without too much trouble. We can bring in Gaisler folks.
>> The other is a portability one.
>>
>> So at least make the project aware of them.
>>
>> https://forge.open-do.org/projects/couverture-qemu/
>>
>> Make sure myself and chrisj@ are on any issue/email you file.
>>
>>
>>     2. For this source setting section, is the first part just dealing
>>     with the case were this a packaged release so a tar of the download is
>>     already included with it?
>>
>>     %if %{rsb_released} && %{!defined without_release_url}
>>         %source set qemu
>>     %{rtems_release_url}/%{rtems_version}/sources/qemu-git-42d58e7.tar.xz
>>     %else
>>         %source set qemu
>>     https://github.com/AdaCore/qemu/archive/%{qemu_version}.tar.gz
>>     <https://github.com/AdaCore/qemu/archive/%{qemu_version}.tar.gz>
>>     %endif
>>
>>
>> I think so but Chris should confirm that.
>
> I think the release process should handle this. I suggest you make this as
> simple as possible and remove the release check. I can look at this if this
> breaks the release scripts when we start the 4.12 release process.
>
>>
>>     3. What does the -q option do in the %prep section of the build, this
>>     option shows up in examples in the docs but there is no description of
>>     what it does?
>>
>>     %source setup qemu -q -n qemu-%{qemu_version}
>>
>>
>> Chris will have to answer this.
>>
>
> It is a spec file compatible option that is not used. You can remove the -q.
>
> https://docs.fedoraproject.org/ro/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s04.html
>
>>     4. The current qemu build is configured with the default setting to
>>     build for all architectures but most of the arch's aren't used by
>>     RTEMS and/or don't have machine support for same bsps, so I've added a
>>     --target-list to only build the targets that have a corresponding bsp
>>     (sparc64-softmmu is missing as it runs into build issues, I forgot to
>>     mention in the initial results). However the list spills over 80 lines
>>     so should I make a %{qemu_targets} macro and if so where should I put
>>     it?
>>
>> I like the idea of limiting the targets built. You are right that we don't
>> care about the others.
>
> Makes sense. We should only provide what we know works.
>
>> The style and variable name are Chris questions.
>>
>>      --make=%{__make} \
>>      72
>>      --target-list=arm-softmmu,i386-softmmu,lm32-softmmu,mips-softmmu,ppc-softmmu,sparc-softmmu
>>     \
>>      73     ${VDE_CONFIG} \
>>      74     --disable-smartcard-nss \
>>
>
> If the line is part of a script fragment the shell line continuation character
> (\) can be used.
>
> I would try and see if something like this works:
>
> %define qemu_archs arm-softmmu,i386-softmmu,lm32-softmmu
> %define qemu_archs %{qemu_archs},mips-softmmu,ppc-softmmu,sparc-softmmu
>
>   ....
>
> --target-list=%{?with_qemu_archs:%{with_qemu_archs}}%{!?with_threads:%{qemu_archs}}
> \
>   ...
>
> We can then override the defaults with '--with-qemu-archs=mips-softmmu' or what
> ever you want to build and test something different.

Ok, thanks Chris I'll remove the release check, -q option and try the
above suggestion.

>
> Use '--trace --dry-run' to debug until you get the command line you want.

The --dry-run option has been running into trouble for me. I had a
look around the build config files and config.py but I haven't figured
out how to fix it. The traceback starts at gettext, if I remove
gettext it stops at libffi and if thats removed it stops at the next
dependency and so on. It's the same for the current qemu too.

../source-builder/sb-set-builder
--prefix=$HOME/development/rtems/qemu_tools --dry-run --trace
devel/couverture-qemu
RTEMS Source Builder - Set Builder, 4.12 (14a801b3ceaa modified)
Build Set: devel/couverture-qemu
Build Set: devel/autotools-internal.bset
config: devel/autoconf-2.69-1.cfg
package: autoconf-2.69-x86_64-linux-gnu-1
  See error report: rsb-report-autoconf-2.69-x86_64-linux-gnu-1.txt
config: devel/automake-1.12.6-1.cfg
package: automake-1.12.6-x86_64-linux-gnu-1
  See error report: rsb-report-automake-1.12.6-x86_64-linux-gnu-1.txt
config: devel/libtool-2.4.2-1.cfg
package: libtool-2.4.2-x86_64-linux-gnu-1
  See error report: rsb-report-libtool-2.4.2-x86_64-linux-gnu-1.txt
cleaning: autoconf-2.69-x86_64-linux-gnu-1
cleaning: automake-1.12.6-x86_64-linux-gnu-1
cleaning: libtool-2.4.2-x86_64-linux-gnu-1
Build Set: Time 0:00:00.312635
config: devel/libiconv-1.14-1.cfg
config: devel/gettext-0.18.3.1-1.cfg
Build Set: Time 0:00:00.330358
Traceback (most recent call last):
  File "../source-builder/sb-set-builder", line 29, in <module>
    setbuilder.run()
  File "../source-builder/sb/setbuilder.py", line 502, in run
    b.build(deps)
  File "../source-builder/sb/setbuilder.py", line 347, in build
    opts, macros)
  File "../source-builder/sb/build.py", line 129, in __init__
    self.config = config.file(name, opts, self.macros)
  File "../source-builder/sb/config.py", line 249, in __init__
    self.load(name)
  File "../source-builder/sb/config.py", line 1258, in load
    r = self._parse(config, dir, info)
  File "../source-builder/sb/config.py", line 991, in _parse
    l = self._expand(l)
  File "../source-builder/sb/config.py", line 623, in _expand
    ps = self._pkgconfig(epcl)
  File "../source-builder/sb/config.py", line 481, in _pkgconfig
    ps = self._pkgconfig_check(pcl[1:])
  File "../source-builder/sb/config.py", line 425, in _pkgconfig_check
    if self.macros['_dry_run'] == '1' and self.macros['with_download'] == '1':
  File "../source-builder/sb/macros.py", line 147, in __getitem__
    raise IndexError('key: %s' % (key))
IndexError: key: with_download

>
> Chris


More information about the devel mailing list