[oe] [OE-core] postinst does not finish

Andreas Müller schnitzeltony at googlemail.com
Wed Apr 24 10:01:28 UTC 2013


On Tue, Apr 23, 2013 at 9:43 AM, Andreas Müller
<schnitzeltony at googlemail.com> wrote:
> On Tue, Apr 23, 2013 at 9:27 AM, Andreas Müller
> <schnitzeltony at googlemail.com> wrote:
>> On Mon, Apr 22, 2013 at 10:36 AM, Koen Kooi <koen at dominion.thruhere.net> wrote:
>>>
>>> Op 21 apr. 2013, om 17:09 heeft Richard Purdie <richard.purdie at linuxfoundation.org> het volgende geschreven:
>>>
>>>> On Sun, 2013-04-21 at 08:59 +0200, Koen Kooi wrote:
>>>>> Op 19 apr. 2013, om 16:00 heeft Koen Kooi <koen at dominion.thruhere.net> het volgende geschreven:
>>>>>> Op 19 apr. 2013, om 15:37 heeft Koen Kooi <koen at dominion.thruhere.net> het volgende geschreven:
>>>>>> And it still doesn't work :(
>>>>>>
>>>>>> root at beaglebone:~# systemctl status gdm -a
>>>>>> gdm.service - Gnome Display Manager
>>>>>>  Loaded: loaded (/lib/systemd/system/gdm.service; enabled)
>>>>>>  Active: active (running) since Sat 2000-01-01 19:22:11 UTC; 13 years 3 months ago
>>>>>> Main PID: 147 (gdm-binary)
>>>>>>  CGroup: name=systemd:/system/gdm.service
>>>>>>          └─147 /usr/sbin/gdm-binary -nodaemon
>>>>>>
>>>>>> Apr 19 13:56:22 beaglebone gdm-simple-slave[326]: WARNING: Couldn't look up uid
>>>>>> Apr 19 13:56:22 beaglebone gdm-simple-slave[337]: WARNING: User gdm doesn't exist
>>>>>> Apr 19 13:56:22 beaglebone gdm-simple-slave[326]: WARNING: Unable to parse output:
>>>>>> Apr 19 13:56:22 beaglebone gdm-simple-slave[326]: WARNING: Unable to parse D-Bus launch output
>>>>>> Apr 19 13:56:22 beaglebone gdm-simple-slave[338]: WARNING: User gdm doesn't exist
>>>>>> Apr 19 13:56:22 beaglebone gdm-simple-slave[326]: WARNING: Could not run helper: Failed to execute child process "/usr/lib/gdm/ck-get-x11-display-device" (No such file or directory)
>>>>>> Apr 19 13:56:22 beaglebone gdm[147]: gdm-binary[147]: WARNING: GdmDisplay: display lasted 1.401004 seconds
>>>>>> Apr 19 13:56:22 beaglebone gdm-binary[147]: WARNING: GdmDisplay: display lasted 1.401004 seconds
>>>>>> Apr 19 13:56:22 beaglebone gdm-binary[147]: WARNING: GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors
>>>>>> Apr 19 13:56:22 beaglebone gdm[147]: gdm-binary[147]: WARNING: GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors
>>>>>>
>>>>>> Hmm, let's rerun gdm.postinst:
>>>>>>
>>>>>> root at beaglebone:~# sh /var/lib/opkg/info/gdm.postinst
>>>>>> + '[' x '!=' x ']'
>>>>>> + grep '^gdm:' /etc/group
>>>>>> + grep '^gdm:' /etc/passwd
>>>>>> + adduser --disabled-password --system --home /var/lib/gdm gdm --ingroup gdm -g gdm
>>>>>> adduser: /var/lib/gdm: File exists
>>>>>> + '[' -d /var/lib/gdm ']'
>>>>>> + chown -R gdm:gdm /var/lib/gdm
>>>>>> + chmod 0750 /var/lib/gdm
>>>>>> + mkdir -p /etc/X11/
>>>>>> + echo /usr/bin/gdm
>>>>>> + OPTS=
>>>>>> + '[' -n '' ']'
>>>>>> + type systemctl
>>>>>> + systemctl enable gdm.service
>>>>>> + '[' -z '' -a enable = enable ']'
>>>>>> + systemctl restart gdm.service
>>>>>> + test x '!=' x
>>>>>> + OPT=-s
>>>>>> + type update-rc.d
>>>>>> + update-rc.d -s gdm start 99 5 2 . stop 20 0 1 6 .
>>>>>> System startup links for /etc/init.d/gdm already exist.
>>>>>> + '[' x '!=' x ']'
>>>>>> + GDK_PIXBUF_MODULEDIR=/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders
>>>>>> + gdk-pixbuf-query-loaders --update-cache
>>>>>> [  102.324520] tilcdc 4830e000.fb: timeout waiting for framedone
>>>>>> + for icondir in '/usr/share/icons/*'
>>>>>> + '[' -d /usr/share/icons/Crux ']'
>>>>>> + gtk-update-icon-cache -fqt /usr/share/icons/Crux
>>>>>> + for icondir in '/usr/share/icons/*'
>>>>>> + '[' -d /usr/share/icons/HighContrast ']'
>>>>>> + gtk-update-icon-cache -fqt /usr/share/icons/HighContrast
>>>>>> + for icondir in '/usr/share/icons/*'
>>>>>> + '[' -d /usr/share/icons/HighContrast-SVG ']'
>>>>>> + gtk-update-icon-cache -fqt /usr/share/icons/HighContrast-SVG
>>>>>> + for icondir in '/usr/share/icons/*'
>>>>>> + '[' -d /usr/share/icons/HighContrastInverse ']'
>>>>>> + gtk-update-icon-cache -fqt /usr/share/icons/HighContrastInverse
>>>>>> + for icondir in '/usr/share/icons/*'
>>>>>> + '[' -d /usr/share/icons/HighContrastLargePrint ']'
>>>>>> + gtk-update-icon-cache -fqt /usr/share/icons/HighContrastLargePrint
>>>>>>
>>>>>> (etc)
>>>>>>
>>>>>> So it looks like the postinsts do run when used inside run-postinst.service, but don't save their output (sucky description, I know).
>>>>>
>>>>> Another datapoint, same GNOME image built for x86 finishes run-postinsts as expected, but also doesn't work, gconf stuff has to get run manually again to work.
>>>>
>>>> FWIW I think there are multiple issues here and they're combining
>>>> together to make a rather weird problem.
>>>>
>>>> One issue we now know about is that the intercept code and the way it
>>>> uses "exit 1" can cause some later parts of some postinst scripts not to
>>>> get executed. I believe Laurentiu has a fix for this problem and this is
>>>> the one causing the gdm issue.
>>>>
>>>> I think the hang people are reporting is something else though, perhaps
>>>> related to the hwdb. I'm also aware of matchbox-session-sato conflicting
>>>> with settings-deamon and some multilib issues such as the wrong
>>>> qemuwrapper being used.
>>>>
>>>> We're going to have to work through each issue in turn and re-evaluate
>>>> after each fix.
>>>>
>>>> I wish we'd come across this earlier as to add fixes to the release at
>>>> this point would mean slipping the release date by a week :(. I'm
>>>> therefore leaning towards testing any fixes and queuing them quickly on
>>>> the branch post-release, following up with a point release relatively
>>>> soon to catch things that people find as the release gets more exposure.
>>>> I know the point releases have happened slowly and I want to change
>>>> that.
>>>
>>> To be honest, I don't are about point releases, I only care about fixes getting into the release branch in a timely fashion. I build from git branches, not from tarballs after all.
>>>
>>> regards,
>>>
>>> Koen
>> I think I got at least a hot hint on this: opkg-cl configure seems
>> started twice. I did
>>
>> * create an image
>> * deleted /etc/rcS.d/S98run-postinsts from this image manually
>> * booted fine
>>
>> Andreas
> This was another 'get some coffee before writing heureka' - sorry
>
> Andreas
Again heureka: I debugged this again and again with kernel param

systemd.journald.forward_to_console=true

and finally found strange message (strange because I sent a patch
somewhere long time ago to fix):

| systemd[1]: Cannot add dependency job for unit
display-manager.service, ignoring: Unit display-manager.service failed
to load: No such file or directory.

Looking into lxdm-postinst:

if [ "x$D" != "x" ]; then
    exit 1
fi
langs=""
....

OPTS=""

if [ -n "$D" ]; then
    OPTS="--root=$D"
fi

if type systemctl >/dev/null 2>/dev/null; then
	systemctl $OPTS enable lxdm.service

	if [ -z "$D" -a "enable" = "enable" ]; then
		systemctl restart lxdm.service
	fi
fi

Which idiot wrote code causing postinst exititing offline. Hereby all
appending postinsts are skipped. No systemct-native.

Looking into lxdm recipe (and later also gdm - same there - Koen I
think your image above had gdm) turned my head into deep red: The
idiot was me!

Up to now I only tested lxdm fix and postinst works fine now. I will
check meta-openembedded for further 'postinst-exits' and send a patch
after lunch.

Andreas




More information about the Openembedded-devel mailing list