User:Bcl

Personal homepage

Packages

 * pylint fedora package
 * python-logilab-common fedora package
 * python-logilab-astng fedora package
 * gnupg fedora package (note, v1.4.10 not gnupg2)
 * livecd-tools fedora package
 * parted fedora package
 * bip fedora package
 * mx fedora package

Misc

 * git-changelog A simplified version of dcantrell's makebumpver script, it prints a nice summary of commits since the specified tag, suitable for use in a rpm spec file %changelog section.

Anaconda Development
Development System
 * Fedora 14
 * squid proxy to cache packages
 * lighttpd to serve up updates.img
 * tftpd to serve up pxe boot images
 * mock + pungi for building

mock setup
config_opts['plugin_conf']['bind_mount_enable'] = True config_opts['plugin_conf']['bind_mount_opts']['dirs'].append(('/home/user/projs/anaconda', '/root/anaconda' )) config_opts['plugin_conf']['bind_mount_opts']['dirs'].append(('/local/repo', '/repo' )) config_opts['plugin_conf']['bind_mount_opts']['dirs'].append(('/local/pungi', '/pungi' ))
 * Edit the  file to bind your working directories inside the mock root. This keeps mock from wiping those directories on --init
 * Edit the  file to bind your working directories inside the mock root. This keeps mock from wiping those directories on --init
 * Edit the  file for the distribution or copy it to a new name and edit
 * Add  to the main section.
 * comment out mirrorlist entries
 * Open up the mirror list url(s) in a browser and pick a mirror, use the same one for base and updates
 * Add  in each section instead of mirrorlist
 * Do this for each section with a mirrorlist
 * Setup the initial mock environment, replace the fedora-13-i386 with the mock file edited above

Now you have a mock chroot environment setup that will use the proxy cache for packages.

Building boot images
Use the compose and pungi.ks files below, place them into /root/ in the mock to be built. Replace REPO_URL_HERE with the same repo you selected for the mock's yum.conf file.


 * pungi.ks
 * 1) un-comment the applicable repo

repo --name=fedora --baseurl=REPO_URL_HERE --proxy=http://proxy.home:3128

%packages @base kernel syslinux nomtools anaconda %end
 * 1) Very small install footprint

echo "*** Running pungi --force --nosource --nodebuginfo --nosplitmedia -G -C -B -c /root/pungi.ks --ver=13"
 * compose
 * 1) !/bin/bash

pungi --cachedir=/pungi/cache --force --nosource --nodebuginfo --nosplitmedia -G -C -B -c /root/pungi.ks --ver=13 echo "*** Done."

Change the --ver to match whichever release you are building for

Building updates
Anaconda includes the ability to update itself by passing  to the kernel at boot time. This allows you to use the same boot media and test changes to stage2 of the installer.


 * This assumes a working mock chroot (ie. I built boot images with this one first)
 * You need a git repo of Anaconda, I branch for the build so I don't clutter up master with build by-products.
 * bind the anaconda directory to the mock being used by editing  as described above.
 * NOTE: DO NOT use  to mount directories inside the mock. They will be obliterated the next time --init is run.
 * Install the development tools group
 * enter the chroot
 * grab a copy of the current anaconda*src.rpm from someplace and install the dependencies with:
 * now build anaconda
 * copy the updates.img over to the updates directory and optionally rename it
 * enter the chroot
 * grab a copy of the current anaconda*src.rpm from someplace and install the dependencies with:
 * now build anaconda
 * copy the updates.img over to the updates directory and optionally rename it
 * now build anaconda
 * copy the updates.img over to the updates directory and optionally rename it
 * copy the updates.img over to the updates directory and optionally rename it
 * copy the updates.img over to the updates directory and optionally rename it
 * copy the updates.img over to the updates directory and optionally rename it
 * copy the updates.img over to the updates directory and optionally rename it

You can skip installing development tools and anaconda deps for subsequent iterations.

Now add  to the kernel parameters when booting the install media.

NOTE: By running yum inside the chroot you may mess up the rpmdb version, this depends on how close your host system is to the target system. So YMMV

Build with a test anaconda.rpm
'''NOTE: This doesn't actually seem to work when the released anaconda version matches that in the branch. buildinstall isn't letting the local repo override the one in the repo'''

Normally when a punji build is done it pulls anaconda from the repo/proxy cache. Instead you want it to use your new build (ie. when doing stage1 development which cannot be updated by updates= being passed to the kernel)


 * make sure mock is mounting your anaconda directory as described above. Again, do not use  to do it.
 * Removed the cached files. Otherwise it pull pull from there and not update to the latest
 * edit  and add
 * Removed the cached files. Otherwise it pull pull from there and not update to the latest
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add
 * edit  and add

Boot with the pxe image and see what happens.

NOTE: The removal of the local repo cache is needed because yum gets confused by its presence.

Update boot.iso with new anaconda rpm
After you have a working boot.iso you can easily update it with the files from the new anaconda rpm you built above. Use the [upd_bootiso] script to do this:

This will extract the files from initrd.img and install.img on the boot.iso, update the files and then re-build the boot.iso

This is considerably faster than using mock + pungi to compose a whole new iso from scratch.

Note, this script currently only works with x86 due to the fact that I borrowed part of it from the  script and haven't built on other architectures yet.

Releasing anaconda
This requires permission to upload new anaconda files.


 * If that fails for deps:
 * Alternatively grab the srpm using  and run yum-builddep on that.
 * Make sure anaconda.spec.in looks ok
 * Alternatively grab the srpm using  and run yum-builddep on that.
 * Make sure anaconda.spec.in looks ok
 * Make sure anaconda.spec.in looks ok

In the fedora package then do:
 * Copy the anaconda.spec and anaconda-*tar.gz over to the package directory
 * Make sure anaconda.spec looks ok
 * Make sure anaconda.spec looks ok