Building Rawhide(f18) for PPC

From FedoraProject

Revision as of 20:05, 13 July 2012 by Hamzy (Talk | contribs)

Jump to: navigation, search

I have run into the following issues:

Contents

(informational) you need to be running Fedora 17 to run a rawhide mock shell

Your host OS needs to have an rpm version that supports usermove. Also, your host OS is used when files are mounted.

[dwa] Fetch the version of rpm from the builder repos, or update to RHEL 6.3, rpm 4.8.0-27.el6 supports usrmove.

no source repo for rawhide

This is used when downloading source rpms to rebuild when fixing problems. A defect will be written.

cat << __EOF__ >> /etc/yum.conf

[fedora-source]
name=fedora-source
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=rawhide-source&arch=ppc64
failovermethod=priority
__EOF__

(informational) yum not installed during mock --init

[dwa] Edit your mock config files, look at the config_opts['chroot_setup_cmd'] line. or use 'mock -r foo --install <package name>' instead of yum within the chroot.

loop devices not created during mock --init

You have to run the following inside the shell:

MAKEDEV loop

apply wwoods patch: hack to fix ppc ISO volume labels so yaboot doesn't flip out

(cd  /usr/lib/python2.7/site-packages/; cat << __EOF__ | patch -p2
commit 04156443a55e1841e86a984c58b5a19531180621
Author: Will Woods <wwoods@redhat.com>
Date:   Wed Nov 16 16:17:58 2011 -0500

    hack to fix ppc ISO volume labels so yaboot doesn't flip out

    blerg. yaboot freaks out if there's any slashes in its config, so we
    can't boot anything with non-ascii characters in the volume name. So we
    need to remove all non-ascii chars, and do it the same way lorax does
    it.

    This is why lorax and pungi shouldn't both be building bootable images.

diff --git a/src/pypungi/__init__.py b/src/pypungi/__init__.py
index d558307..638e534 100644
--- a/src/pypungi/__init__.py
+++ b/src/pypungi/__init__.py
@@ -1120,8 +1120,13 @@ class Pungi(pypungi.PungiBase):
         # NOTE: if this doesn't match what's in the bootloader config, the
         # image won't be bootable!
         extraargs.append('-V')
-        extraargs.append('%s %s %s' % (self.config.get('pungi', 'name'),
-            self.config.get('pungi', 'version'), self.config.get('pungi', 'arch')))
+        cdlabel = '%s %s %s' % (self.config.get('pungi', 'name'),
+                                self.config.get('pungi', 'version'),
+                                self.config.get('pungi', 'arch'))
+        if self.config.get('pungi', 'arch').startswith('ppc'):
+            # special case for PPC, because yaboot is terrible
+            cdlabel = ''.join(ch if ch.isalnum() else '_' for ch in cdlabel)
+        extraargs.append(cdlabel)

         extraargs.extend(['-o', isofile])

__EOF__
)

yaboot is not in repo

You see the following during the build:

template command error in ppc.tmpl:
  runcmd /srv/pungi/test/work/Fedora/ppc64/installroot/usr/lib/yaboot/addnote /srv/pungi/test/rawhide/Fedora/ppc64/os/ppc/chrp/yaboot
  OSError: [Errno 2] No such file or directory

The solution is to install yaboot. However, yaboot is not in the rawhide repo!

yum install http://dl.fedoraproject.org/pub/fedora-secondary/releases/17/Fedora/ppc64/os/Packages/y/yaboot-1.3.17-2.fc16.ppc.rpm

(fixed) libdrm_nouveau.so.1()(64bit) is needed by xorg-x11-drv-nouveau- 1:0.0.16-34.20110720gitb806e3f.fc17.ppc64

I worked on http://fpaste.org/ua34/ . Karsten fixed it in the build simultaneously.

docbook-style-xsl-1.77.1-1.fc18 was tagged instead of docbook-style-xsl-1.77.2-1.fc18

At one time, ppc.koji looked like this:

NVR                                     Built by        Finished                State
docbook-style-xsl-1.77.1-1.fc18         karsten         2012-06-22 09:34:30     complete
docbook-style-xsl-1.77.1-2.fc18         karsten         2012-06-07 14:03:13     complete

It would be nice if we could figure out how this happened and prevent it in the future...


systemd.spec needs to depend on docbook-style-xsl >= 1.77.1-2

add the following to the spec file: BuildRequires: docbook-style-xsl >= 1.77.1-2

(fixed) apply haraldh dracut patch

dracut's initramfs prefix is not needed anymore http://fpaste.org/K2sR/

From 77c9a1c05b6c25733f3d7b142f1f6b01bac879d7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Mon, 4 Jun 2012 16:16:07 +0200
Subject: [PATCH] pylorax/treebuilder.py: do not use dracut prefix anymore

dracut's initramfs prefix is not needed anymore.
---
 src/pylorax/treebuilder.py |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/pylorax/treebuilder.py b/src/pylorax/treebuilder.py
index 0ec651f..e498294 100644
--- a/src/pylorax/treebuilder.py
+++ b/src/pylorax/treebuilder.py
@@ -193,8 +193,7 @@ class TreeBuilder(object):
         '''Rebuild all the initrds in the tree. If backup is specified, each
         initrd will be renamed with backup as a suffix before rebuilding.
         If backup is empty, the existing initrd files will be overwritten.'''
-        dracut = ["dracut", "--prefix=/run/initramfs",
-                  "--nomdadmconf", "--nolvmconf"] + add_args
+        dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + add_args
         if not backup:
             dracut.append("--force")
 
-- 
1.7.10.2

fixed by http://git.fedorahosted.org/git/?p=lorax.git;a=commit;h=8e71bb045ade2b04ce845cc357326ab21a1d8af1

(optional/helpful) apply pungi debug output

The following would be helpful to know what the full dracut commandline that will be run in case you need to rerun it.

diff -Nur lorax.orig/usr/lib/python2.7/site-packages/pylorax/__init__.py lorax.new/usr/lib/python2.7/site-packages/pylorax/__init__.py
--- lorax.orig/usr/lib/python2.7/site-packages/pylorax/__init__.py      2012-07-12 13:58:51.131356002 -0500
+++ lorax.new/usr/lib/python2.7/site-packages/pylorax/__init__.py       2012-07-12 13:58:49.531356025 -0500
@@ -277,8 +277,8 @@
                                   domacboot=domacboot, templatedir=templatedir)

         logger.info("rebuilding initramfs images")
-        dracut_args=["--xz", "--add", "anaconda pollcdrom",
-                     "--install", "/.buildstamp"]
+        dracut_args=["--xz", "--add", "anaconda pollcdrom", "--omit", "plymouth",
+                     "--install", "/.buildstamp strace"]
         treebuilder.rebuild_initrds(add_args=dracut_args)

         logger.info("populating output tree and building boot images")

(fixed) apply hamzy dracut readonly patch

If no prefix is specified on the command line, then the following is seen: /sbin/dracut: line 548: unset: prefix: cannot unset: readonly variable

hamzy submitted 0051-fix-readonly-prefix.patch to http://news.gmane.org/find-root.php?message_id=%3c1341768989%2d50296%2d1%2dgit%2dsend%2demail%2dhamzy%40us.ibm.com%3e

(needed?) add python-udev to builder-rawhide-koji.ks

add "installpkg python-pyudev" to runtime-install.tmpl

You see the following during boot up:

Traceback (most recent call last):
  File "/usr/sbin/anaconda", line 646, in <module>
    from pyanaconda import kickstart
  File "/usr/lib64/python2.7/site-packages/pyanaconda/kickstart.py", line 21, in <module>
    from storage.deviceaction import *
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/__init__.py", line 41, in <module>
    from devices import *
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/devices.py", line 116, in <module>
    from udev import *
  File "/usr/lib64/python2.7/site-packages/pyanaconda/storage/udev.py", line 28, in <module>
    from pyanaconda.baseudev import *
  File "/usr/lib64/python2.7/site-packages/pyanaconda/baseudev.py", line 27, in <module>
    import pyudev
  File "/usr/lib64/python2.7/site-packages/pyanaconda/pyudev.py", line 37, in <module>
    raise ImportError, "No library named %s" % libudev
ImportError: No library named None
<mock-chroot>[root@bluebill ~]# vi /usr/share/lorax/runtime-install.tmpl
...
installpkg python-pyudev
...

don't delete ldconfig from glibc in runtime-cleanup.tmpl

It seems that the python code to find the udev library uses

$ ldconfig -p

So the fix would be to not delete it from the runtime image:

<mock-chroot>[root@bluebill ~]# vi /usr/share/lorax/runtime-cleanup.tmpl
...from
removefrom glibc /${libdir}/libthread* /${libdir}/rtkaio* /sbin/*
...to
removefrom glibc /${libdir}/libthread* /${libdir}/rtkaio*
...

systemd.spec Provides libudev

Now that you've included python-pyudev into the install image, you will see the following:

yum.Errors.YumRPMCheckError: [u'ERROR with transaction check vs depsolve:', 'libudev is needed by python-pyudev-0.15-1.fc18.noarch', u'Please report this error at https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&version=rawhide&component=yum']

The fix is to fix the systemd rpm to note that systemd-libs-186-1.fc18.ppc64.rpm needs to claim that it provides libudev.

diff -Nur SPECS.orig/systemd.spec SPECS/systemd.spec
--- SPECS.orig/systemd.spec     2012-07-12 14:22:36.791356007 -0500
+++ SPECS/systemd.spec  2012-07-12 14:24:00.741356003 -0500
@@ -93,6 +93,7 @@
 Group:          System Environment/Base
 Summary:        systemd libraries
 License:        LGPLv2+ and MIT
+Provides:       libudev = %{version}
 Obsoletes:      libudev < 183
 Obsoletes:      systemd < 185-4
 Conflicts:      systemd < 185-4

[dwa] Not a bug, udev is being folded into systemd in f18

[hamzy] It looks like a bug to me.

pyanaconda/pyudev.py uses .0 version of libudev library

Anaconda searches for libudev.so.0. However, libudev is now libudev.so.1

hamzy has submitted the patch to anaconda-devel-list at https://www.redhat.com/archives/anaconda-devel-list/2012-July/msg00027.html

don't delete localdef from glibc-common in runtime-cleanup.tmpl

<mock-chroot>[root@bluebill ~]# vi /usr/share/lorax/runtime-cleanup.tmpl
...from
removefrom glibc-common /usr/bin/tzselect /usr/bin/localedef
...to
removefrom glibc-common /usr/bin/tzselect
...

Failed to start Network Manager

I see the following during startup:

[FAILED] Failed to start Network Manager.
         See 'systemctl status NetworkManager.service' for details.

When trying to look for logs, I could not find any. This seems like another problem to me.

Also, I noticed the following:

[anaconda root@ibm_dpi-13173d /]# systemctl status NetworkManager.service
NetworkManager.service - Network Manager
          Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled)
          Active: failed (Result: signal) since Wed, 11 Jul 2012 02:48:24 +0000; 2min 32s ago
         Process: 1358 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=killed, signal=ABRT)
          CGroup: name=systemd:/system/NetworkManager.service

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

The following seems to fix it:

switch_root:/# sed -i -e 's/StandardError=null/StandardError=kmesg/' /sysroot/usr/lib/systemd/system/NetworkManager.service

ifconfig does not exist on install root

$ ip addr show

is equivalent. Also, other network tools like ping and nslookup are missing.

Dependency failed for Shell on tty2

This holds booting while waiting for it to timeout:

[ TIME ] Timed out waiting for device dev-tty2.device.
[DEPEND] Dependency failed for Shell on tty2.

libgphoto2.so.2()(64bit) is needed by sane-backends-libs-1.0.22-10.fc18.ppc64

  YumRPMCheckError: [u'ERROR with transaction check vs depsolve:', 'libgphoto2.so.2()(64bit) is needed by sane-backends-libs-1.0.22-10.fc18.ppc64', 'libgphoto2_port.so.0()(64bit) is needed by sane-backends-libs-1.0.22-10.fc18.ppc64', 'libgphoto2.so.2()(64bit) is needed by sane-backends-1.0.22-10.fc18.ppc64', 'libgphoto2_port.so.0()(64bit) is needed by sane-backends-1.0.22-10.fc18.ppc64', 'libgphoto2.so.2()(64bit) is needed by sane-backends-drivers-cameras-1.0.22-10.fc18.ppc64', 'libgphoto2_port.so.0()(64bit) is needed by sane-backends-drivers-cameras-1.0.22-10.fc18.ppc64', u'Please report this error at https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&version=rawhide&component=yum']

sane-backends needs to be rebuilt because the SONAME of libgphoto2 has changed.