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