Jeramia Poland | 20 Nov 09:19 2014
Picon

emerge ati-drivers-14.4_p1 fails 3.16.5-sources xorg 1.15 gcc 4.8.3 graphite and lto

Emerging ati-drivers-14.4_p1 fails on a 3.16.5-sources install with xorg 1.15 and gcc 4.8.3 with graphite and lto enabled.  I enabled graphite and lto using these steps:

I thought graphite and or lto could be a problem so I added the no-lto and no-graphite options for ati-drivers in the package.env file but no luck.

I tried changing to the gcc-4.8.3 vanilla profile through gcc-config but that didn't work either.

I am getting a message from portage about missing xattr pax and how that might lead to a problem with ati-drivers but I'm not sure how to enable those.

Attached are the info file, build log, pqv output and environment files.

Anybody know what I should do?

Thanks,
Jeramia
Portage 2.2.8-r2 (hardened/linux/amd64, gcc-4.8.3, glibc-2.19-r1, 3.16.5-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.16.5-gentoo-x86_64-AMD_A10-5700_APU_with_Radeon-tm-_HD_Graphics-with-gentoo-2.2
KiB Mem:    15873608 total,   9231428 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Sun, 09 Nov 2014 08:00:01 +0000
ld GNU gold (Gentoo 2.24 p1.4 2.24) 1.11
ccache version 3.1.9 [disabled]
app-shells/bash:          4.2_p53
dev-java/java-config:     2.2.0
dev-lang/perl:            5.18.2-r2
dev-lang/python:          2.7.7, 3.3.5-r1, 3.4.1
dev-util/ccache:          3.1.9-r3
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.13.4
sys-devel/binutils:       2.24-r3
sys-devel/gcc:            4.8.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2-r1
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.13 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo CloogPatch science sage-on-gentoo
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* - <at> EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -flto=4 -floop-interchange -ftree-loop-distribution
-floop-strip-mine -floop-block -ftree-vectorize"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release
/etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=native -O2 -pipe -flto=4 -floop-interchange -ftree-loop-distribution
-floop-strip-mine -floop-block -ftree-vectorize"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks
fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict
unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.aditsu.net:8000/ http://gentoo.modulix.net/gentoo/ http://gentoo.gg3.net/"
LANG="en_US.utf8"
LDFLAGS="-march=native -O2 -pipe -flto=4 -floop-interchange -ftree-loop-distribution
-floop-strip-mine -floop-block -ftree-vectorize -fuse-linker-plugin"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress
--force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles
--exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage /var/lib/layman/science /var/lib/layman/sage-on-gentoo"
USE="acl amd64 bash-completion bcmath berkdb bindist blas bzip2 cli cracklib crypt cxx dri emacs fftw
gdbm graphite hardened iconv ipv6 justify lapack lm_sensors lto lzma lzo mmx modules multilib ncurses
nls nptl openmp pam pax_kernel pcre python readline session smp sse sse2 sse3 sse4_1 ssl symlink syslog
tcpd threads truetype udev unicode urandom usb xattr xtpax zlib" ABI_X86="64" ALSA_CARDS="ali5451
als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801
hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias
authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host
authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires
ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic
negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author"
CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc"
GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea
ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt
ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780
lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console
presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5"
PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby19
ruby20" USERLAND="GNU" VIDEO_CARDS="fglrx" XTABLES_ADDONS="quota2 psd pknock lscan length2
ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark
dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND,
PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC, USE_PYTHON

Portage 2.2.8-r2 (hardened/linux/amd64, gcc-4.8.3, glibc-2.19-r1, 3.16.5-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.16.5-gentoo-x86_64-AMD_A10-5700_APU_with_Radeon-tm-_HD_Graphics-with-gentoo-2.2
KiB Mem:    15873608 total,   5727044 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Mon, 17 Nov 2014 11:00:01 +0000
ld GNU gold (Gentoo 2.24 p1.4 2.24) 1.11
ccache version 3.1.9 [disabled]
app-shells/bash:          4.2_p53
dev-java/java-config:     2.2.0
dev-lang/perl:            5.18.2-r2
dev-lang/python:          2.7.7, 3.3.5-r1, 3.4.1
dev-util/ccache:          3.1.9-r3
dev-util/cmake:           2.8.12.2-r1
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.13.4
sys-devel/binutils:       2.24-r3
sys-devel/gcc:            4.8.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2-r1
sys-devel/make:           4.0-r1
sys-kernel/linux-headers: 3.13 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo CloogPatch science sage-on-gentoo
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* - <at> EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -flto=4 -floop-interchange -ftree-loop-distribution
-floop-strip-mine -floop-block -ftree-vectorize"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf
/etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo
/etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=native -O2 -pipe -flto=4 -floop-interchange -ftree-loop-distribution
-floop-strip-mine -floop-block -ftree-vectorize"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks
fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict
unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.aditsu.net:8000/ http://gentoo.modulix.net/gentoo/ http://gentoo.gg3.net/"
LANG="en_US.utf8"
LDFLAGS="-march=native -O2 -pipe -flto=4 -floop-interchange -ftree-loop-distribution
-floop-strip-mine -floop-block -ftree-vectorize -fuse-linker-plugin"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress
--force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles
--exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage /var/lib/layman/science /var/lib/layman/sage-on-gentoo"
USE="acl amd64 bash-completion bcmath berkdb bindist blas bzip2 cli cracklib crypt cxx dri emacs fftw
gdbm graphite hardened iconv ipv6 justify lapack lm_sensors lto lzma lzo mmx modules multilib ncurses
nls nptl openmp pam pax_kernel pcre python readline session smp sse sse2 sse3 sse4_1 ssl symlink syslog
tcpd threads truetype udev unicode urandom usb xattr xtpax zlib" ABI_X86="64" ALSA_CARDS="ali5451
als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801
hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias
authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host
authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires
ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic
negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author"
CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc"
GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea
ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt
ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780
lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console
presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5"
PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby19
ruby20" USERLAND="GNU" VIDEO_CARDS="fglrx" XTABLES_ADDONS="quota2 psd pknock lscan length2
ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark
dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND,
PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, SYNC, USE_PYTHON

Attachment (build.log): text/x-log, 12 KiB
Attachment (environment): application/octet-stream, 180 KiB
[ebuild  N    ] sci-mathematics/singular-3.1.6  USE="boost emacs flint python readline -doc -examples
{-test}" PYTHON_TARGETS="python2_7" 

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

[ebuild  N    ] x11-drivers/ati-drivers-14.4_p1  USE="modules multilib pax_kernel -debug -qt4
-static-libs" 

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

Brian Dolbec | 11 Sep 06:01 2014
Picon

[PATCH 0/6] Various changes towards 3.0 branch

Another convienence grouping of various patches.  
This is the last 6 patches remaining in the pending branch at this time.
Once these 3 patch series are caught up, I'll move more from 3.0 into pending.

Brian Dolbec (6):
  FIXME! Comment out a small code block causing TypeError.
  Break out more repeated (path1 + path2)'s...
  Rename a make.conf key to make_conf due to bash variable name
    restrictions
  reduce 2 operations into one simpler one
  Extend ParserBase to do variable substitution.
  Make shdir a complete path to ease it's use.

 catalyst/base/stagebase.py                        | 45 ++++++++++++-----------
 catalyst/config.py                                |  9 ++---
 catalyst/defaults.py                              |  4 +-
 catalyst/lock.py                                  | 23 +++++++++---
 catalyst/main.py                                  |  6 ++-
 etc/catalyst.conf                                 |  8 +++-
 targets/embedded/embedded-controller.sh           | 22 +++++------
 targets/grp/grp-controller.sh                     |  6 +--
 targets/livecd-stage1/livecd-stage1-controller.sh |  4 +-
 targets/livecd-stage2/livecd-stage2-controller.sh | 22 +++++------
 targets/netboot/netboot-combine.sh                |  6 +--
 targets/netboot/netboot-controller.sh             | 24 ++++++------
 targets/netboot2/netboot2-controller.sh           | 16 ++++----
 targets/stage1/stage1-controller.sh               |  8 ++--
 targets/stage2/stage2-controller.sh               |  6 +--
 targets/stage3/stage3-controller.sh               |  6 +--
 targets/stage4/stage4-controller.sh               | 22 +++++------
 targets/support/bootloader-setup.sh               |  6 +--
 targets/support/create-iso.sh                     |  4 +-
 targets/support/functions.sh                      |  2 +-
 targets/support/netboot2-final.sh                 |  4 +-
 targets/support/target_image_setup.sh             |  4 +-
 targets/tinderbox/tinderbox-controller.sh         |  6 +--
 23 files changed, 142 insertions(+), 121 deletions(-)

Brian Dolbec | 11 Sep 05:50 2014
Picon

[PATCH 0/3] Code breakup & restructuring

This is a group of 3 patches that all need to be applied for catalyst to run.
commit messages pretty much describe what they change.

Brian Dolbec (3):
  [1 of 3] Move base stage and target files to thier own sub-pkg
  [2 of 3] Update module loading for the new python structure
  [3 of 3] Rename all target .py files and classes without _target in
    them.

 catalyst/base/__init__.py                |    1 +
 catalyst/base/clearbase.py               |  115 +++
 catalyst/base/genbase.py                 |   58 ++
 catalyst/base/stagebase.py               | 1630 ++++++++++++++++++++++++++++++
 catalyst/base/targetbase.py              |   15 +
 catalyst/main.py                         |   75 +-
 catalyst/targets/clearbase.py            |  115 ---
 catalyst/targets/embedded.py             |   47 +
 catalyst/targets/embedded_target.py      |   51 -
 catalyst/targets/genbase.py              |   58 --
 catalyst/targets/generic_stage_target.py | 1630 ------------------------------
 catalyst/targets/grp.py                  |  120 +++
 catalyst/targets/grp_target.py           |  118 ---
 catalyst/targets/livecd_stage1.py        |   78 ++
 catalyst/targets/livecd_stage1_target.py |   75 --
 catalyst/targets/livecd_stage2.py        |  147 +++
 catalyst/targets/livecd_stage2_target.py |  148 ---
 catalyst/targets/netboot.py              |  129 +++
 catalyst/targets/netboot2.py             |  169 ++++
 catalyst/targets/netboot2_target.py      |  166 ---
 catalyst/targets/netboot_target.py       |  128 ---
 catalyst/targets/snapshot.py             |   93 ++
 catalyst/targets/snapshot_target.py      |   97 --
 catalyst/targets/stage1.py               |   96 ++
 catalyst/targets/stage1_target.py        |   97 --
 catalyst/targets/stage2.py               |   64 ++
 catalyst/targets/stage2_target.py        |   65 --
 catalyst/targets/stage3.py               |   27 +
 catalyst/targets/stage3_target.py        |   31 -
 catalyst/targets/stage4.py               |   38 +
 catalyst/targets/stage4_target.py        |   43 -
 catalyst/targets/targetbase.py           |   15 -
 catalyst/targets/tinderbox.py            |   47 +
 catalyst/targets/tinderbox_target.py     |   48 -
 34 files changed, 2900 insertions(+), 2934 deletions(-)
 create mode 100644 catalyst/base/__init__.py
 create mode 100644 catalyst/base/clearbase.py
 create mode 100644 catalyst/base/genbase.py
 create mode 100644 catalyst/base/stagebase.py
 create mode 100644 catalyst/base/targetbase.py
 delete mode 100644 catalyst/targets/clearbase.py
 create mode 100644 catalyst/targets/embedded.py
 delete mode 100644 catalyst/targets/embedded_target.py
 delete mode 100644 catalyst/targets/genbase.py
 delete mode 100644 catalyst/targets/generic_stage_target.py
 create mode 100644 catalyst/targets/grp.py
 delete mode 100644 catalyst/targets/grp_target.py
 create mode 100644 catalyst/targets/livecd_stage1.py
 delete mode 100644 catalyst/targets/livecd_stage1_target.py
 create mode 100644 catalyst/targets/livecd_stage2.py
 delete mode 100644 catalyst/targets/livecd_stage2_target.py
 create mode 100644 catalyst/targets/netboot.py
 create mode 100644 catalyst/targets/netboot2.py
 delete mode 100644 catalyst/targets/netboot2_target.py
 delete mode 100644 catalyst/targets/netboot_target.py
 create mode 100644 catalyst/targets/snapshot.py
 delete mode 100644 catalyst/targets/snapshot_target.py
 create mode 100644 catalyst/targets/stage1.py
 delete mode 100644 catalyst/targets/stage1_target.py
 create mode 100644 catalyst/targets/stage2.py
 delete mode 100644 catalyst/targets/stage2_target.py
 create mode 100644 catalyst/targets/stage3.py
 delete mode 100644 catalyst/targets/stage3_target.py
 create mode 100644 catalyst/targets/stage4.py
 delete mode 100644 catalyst/targets/stage4_target.py
 delete mode 100644 catalyst/targets/targetbase.py
 create mode 100644 catalyst/targets/tinderbox.py
 delete mode 100644 catalyst/targets/tinderbox_target.py

Brian Dolbec | 11 Sep 05:43 2014
Picon

[PATCH 0/5] Next group of 5 patches

Another five patches of various changes, moving towards the 3.0 code.

Brian Dolbec (5):
  Some options cleanup, unifying their use, reducing redundancy.
  Move LockInUse from support.py to lock.py, fix bad execption raising, 
    pyflakes cleanup
  Begin splitting up generic_stage_target into smaller code blocks.
  Some spacing, comment and indent cleanup
  Remove redundant /bin/bash additions in cmd() calls

 catalyst/defaults.py                     |  24 +-
 catalyst/lock.py                         |  55 +++--
 catalyst/main.py                         |  99 +++-----
 catalyst/support.py                      | 403 ++++++-------------------------
 catalyst/targets/clearbase.py            | 115 +++++++++
 catalyst/targets/genbase.py              |  58 +++++
 catalyst/targets/generic_stage_target.py | 325 +++++++++----------------
 catalyst/targets/generic_target.py       |  15 --
 catalyst/targets/grp_target.py           |   4 +-
 catalyst/targets/livecd_stage1_target.py |   2 +-
 catalyst/targets/livecd_stage2_target.py |   8 +-
 catalyst/targets/netboot2_target.py      |  14 +-
 catalyst/targets/netboot_target.py       |   8 +-
 catalyst/targets/snapshot_target.py      |  20 +-
 catalyst/targets/stage2_target.py        |   2 +-
 catalyst/targets/stage4_target.py        |   4 +-
 catalyst/targets/targetbase.py           |  15 ++
 catalyst/targets/tinderbox_target.py     |   2 +-
 18 files changed, 488 insertions(+), 685 deletions(-)
 create mode 100644 catalyst/targets/clearbase.py
 create mode 100644 catalyst/targets/genbase.py
 delete mode 100644 catalyst/targets/generic_target.py
 create mode 100644 catalyst/targets/targetbase.py

Brian Dolbec | 2 Sep 04:31 2014
Picon

[PATCH 0/7] Pending branch patches (various)


These are several small patches fixing a few bugs nad upcoming 
fixes for the new portage ebuild (patches 3,4).  
Patch 6 fixes the setup_pkgmgr() adding the 'build' use flag 
to all stages calling the function.

Brian Dolbec (7):
  Remove unused urllib import.
  Remove unused variable new and an undefined variable s.
  stage1-controller.sh: Fix portage bin path hard coding
  chroot-functions.sh: Remove --nodeps option from portage update.
  chroot-functions.sh: Fix a mis-worded comment
  setup_pkgmgr(): WIP Make the 'build' use flag optional
  Fix a relative path bug

 catalyst/support.py                 | 12 ------------
 targets/stage1/stage1-chroot.sh     |  1 +
 targets/stage1/stage1-controller.sh |  6 +++---
 targets/stage2/stage2-chroot.sh     |  1 +
 targets/support/chroot-functions.sh | 15 +++++++++++----
 targets/support/functions.sh        |  2 +-
 6 files changed, 17 insertions(+), 20 deletions(-)

--

-- 
1.9.3

Raúl Porcel | 24 Jun 18:49 2014
Picon

Fwd: spaces in parameters

I never got any answer from genkernel.

Can we implement the workaround in catalyst somehow?

Thanks

-------- Original Message --------
Subject: spaces in parameters
Date: Wed, 21 Aug 2013 11:11:00 +0200
From: Raúl Porcel <armin76@...>
To: gentoo-genkernel@...
CC: release@...

Hi,

when using catalyst, it passes some parameters to genkernel. Now it
turns out I need to use some parameters with spaces in genkernel and
seems it doesn't like them.

Right now catalyst does something like this script:

#######
parm="--kernel-cc='gcc -m64'
--kernel-config=/root/installcd-ibm-2.6.34.config all"

genkernel ${parm}
#######

This returns:
Error: Unknown option '-m64''!

If we quote ${parm}, it returns the help.

If we modify it a little:

######
parm="--kernel-cc='gcc -m64'
--kernel-config=/root/installcd-ibm-2.6.34.config"

genkernel "${parm}" all
######

It says it can't find the configuration file.

A workaround i've found is:

######
parm="--kernel-cc='gcc -m64'
--kernel-config=/root/installcd-ibm-2.6.34.config all"

echo "genkernel ${parm}" > /tmp/tmp.sh
bash /tmp/tmp.sh
######

Any ideas? If its too hard to fix, we can simply add this workaround on
catalyst.

Thanks
######

Brian Dolbec | 2 Apr 22:29 2014
Picon

[PATCH 2/8] Initial separation and creation of contents.py

---
 catalyst/contents.py                     | 87 ++++++++++++++++++++++++++++++++
 catalyst/main.py                         |  8 ++-
 catalyst/support.py                      | 52 -------------------
 catalyst/targets/generic_stage_target.py |  3 +-
 4 files changed, 96 insertions(+), 54 deletions(-)
 create mode 100644 catalyst/contents.py

diff --git a/catalyst/contents.py b/catalyst/contents.py
new file mode 100644
index 0000000..79ef9a6
--- /dev/null
+++ b/catalyst/contents.py
 <at>  <at>  -0,0 +1,87  <at>  <at> 
+
+from collections import namedtuple
+from subprocess import Popen, PIPE
+
+from support import CatalystError, warn
+
+
+# use ContentsMap.fields for the value legend
+# Key:[function, cmd]
+CONTENTS_DEFINITIONS = {
+	# 'find' is disabled because it requires the source path, which is not
+	# always available
+	#"find"		:["calc_contents","find %(path)s"],
+	"tar_tv":["calc_contents","tar tvf %(file)s"],
+	"tar_tvz":["calc_contents","tar tvzf %(file)s"],
+	"tar_tvj":["calc_contents","tar -I lbzip2 -tvf %(file)s"],
+	"isoinfo_l":["calc_contents","isoinfo -l -i %(file)s"],
+	# isoinfo_f should be a last resort only
+	"isoinfo_f":["calc_contents","isoinfo -f -i %(file)s"],
+}
+
+
+class ContentsMap(object):
+	'''Class to encompass all known commands to list
+	the contents of an archive'''
+
+
+	fields = ['func', 'cmd']
+
+
+	def __init__(self, defs=None):
+		'''Class init
+
+		 <at> param defs: dictionary of Key:[function, cmd]
+		'''
+		if defs is None:
+			defs = {}
+		#self.contents = {}
+		self.contents_map = {}
+
+		# create the archive type namedtuple classes
+		for name in list(defs):
+			#obj = self.contents[name] = namedtuple(name, self.fields)
+			obj = namedtuple(name, self.fields)
+			obj.__slots__ = ()
+			self.contents_map[name] = obj._make(defs[name])
+		del obj
+
+
+	def generate_contents(self, file_, getter="auto", verbose=False):
+		try:
+			archive = getter
+			if archive == 'auto' and file_.endswith('.iso'):
+				archive = 'isoinfo_l'
+			if (archive in ['tar_tv','auto']):
+				if file_.endswith('.tgz') or file_.endswith('.tar.gz'):
+					archive = 'tar_tvz'
+				elif file_.endswith('.tbz2') or file_.endswith('.tar.bz2'):
+					archive = 'tar_tvj'
+				elif file_.endswith('.tar'):
+					archive = 'tar_tv'
+
+			if archive == 'auto':
+				warn('File %r has unknown type for automatic detection.'
+					% (file_, ))
+				return None
+			else:
+				getter = archive
+				func = getattr(self, '_%s_' % self.contents_map[getter].func)
+				return func(file_, self.contents_map[getter].cmd, verbose)
+		except:
+			raise CatalystError,\
+				"Error generating contents, is appropriate utility " +\
+				"(%s) installed on your system?" \
+				% (self.contents_map[getter].cmd)
+
+
+	 <at> staticmethod
+	def _calc_contents_(file_, cmd, verbose):
+		_cmd = (cmd % {'file': file_ }).split()
+		proc = Popen(_cmd, stdout=PIPE, stderr=PIPE)
+		results = proc.communicate()
+		result = "\n".join(results)
+		if verbose:
+			print result
+		return result
+
diff --git a/catalyst/main.py b/catalyst/main.py
index 7bcf2cb..4146bca 100644
--- a/catalyst/main.py
+++ b/catalyst/main.py
 <at>  <at>  -25,6 +25,7  <at>  <at>  from catalyst.support import (required_build_targets,
 	valid_build_targets, CatalystError, find_binary, LockInUse)

 from hash_utils import HashMap, HASH_DEFINITIONS
+from contents import ContentsMap, CONTENTS_DEFINITIONS

 

 <at>  <at>  -184,7 +185,8  <at>  <at>  def parse_config(myconfig):
 	if "digests" in myconf:
 		conf_values["digests"]=myconf["digests"]
 	if "contents" in myconf:
-		conf_values["contents"]=myconf["contents"]
+		# replace '-' with '_' (for compatibility with existing configs)
+		conf_values["contents"] = myconf["contents"].replace("-", '_')

 	if "envscript" in myconf:
 		print "Envscript support enabled."
 <at>  <at>  -348,6 +350,10  <at>  <at>  def main():
 	# import configuration file and import our main module using those settings
 	parse_config(myconfig)

+	# initialize our contents generator
+	contents_map = ContentsMap(CONTENTS_DEFINITIONS)
+	conf_values["contents_map"] = contents_map
+
 	# initialze our hash and contents generators
 	hash_map = HashMap(HASH_DEFINITIONS)
 	conf_values["hash_map"] = hash_map
diff --git a/catalyst/support.py b/catalyst/support.py
index 308d9c0..e25394e 100644
--- a/catalyst/support.py
+++ b/catalyst/support.py
 <at>  <at>  -62,58 +62,6  <at>  <at>  def hexify(str):
 	return r
 # hexify()

-def generate_contents(file,contents_function="auto",verbose=False):
-	try:
-		_ = contents_function
-		if _ == 'auto' and file.endswith('.iso'):
-			_ = 'isoinfo-l'
-		if (_ in ['tar-tv','auto']):
-			if file.endswith('.tgz') or file.endswith('.tar.gz'):
-				_ = 'tar-tvz'
-			elif file.endswith('.tbz2') or file.endswith('.tar.bz2'):
-				_ = 'tar-tvj'
-			elif file.endswith('.tar'):
-				_ = 'tar-tv'
-
-		if _ == 'auto':
-			warn('File %r has unknown type for automatic detection.' % (file, ))
-			return None
-		else:
-			contents_function = _
-			_ = contents_map[contents_function]
-			return _[0](file,_[1],verbose)
-	except:
-		raise CatalystError,\
-			"Error generating contents, is appropriate utility (%s) installed on your system?" \
-			% (contents_function, )
-
-def calc_contents(file,cmd,verbose):
-	args={ 'file': file }
-	cmd=cmd % dict(args)
-	a=os.popen(cmd)
-	mylines=a.readlines()
-	a.close()
-	result="".join(mylines)
-	if verbose:
-		print result
-	return result
-
-# This has map must be defined after the function calc_content
-# It is possible to call different functions from this but they must be defined
-# before hash_map
-# Key,function,cmd
-contents_map={
-	# 'find' is disabled because it requires the source path, which is not
-	# always available
-	#"find"		:[calc_contents,"find %(path)s"],
-	"tar-tv":[calc_contents,"tar tvf %(file)s"],
-	"tar-tvz":[calc_contents,"tar tvzf %(file)s"],
-	"tar-tvj":[calc_contents,"tar -I lbzip2 -tvf %(file)s"],
-	"isoinfo-l":[calc_contents,"isoinfo -l -i %(file)s"],
-	# isoinfo-f should be a last resort only
-	"isoinfo-f":[calc_contents,"isoinfo -f -i %(file)s"],
-}
-

 def read_from_clst(file):
 	line = ''
diff --git a/catalyst/targets/generic_stage_target.py b/catalyst/targets/generic_stage_target.py
index b6a6200..de4842c 100644
--- a/catalyst/targets/generic_stage_target.py
+++ b/catalyst/targets/generic_stage_target.py
 <at>  <at>  -1703,6 +1703,7  <at>  <at>  class generic_stage_target(generic_target):
 		if os.path.exists(file+".CONTENTS"):
 			os.remove(file+".CONTENTS")
 		if "contents" in self.settings:
+			contents_map = self.settings["contents_map"]
 			if os.path.exists(file):
 				myf=open(file+".CONTENTS","w")
 				keys={}
 <at>  <at>  -1711,7 +1712,7  <at>  <at>  class generic_stage_target(generic_target):
 					array=keys.keys()
 					array.sort()
 				for j in array:
-					contents=generate_contents(file,contents_function=j,\
+					contents = contents_map.generate_contents(file, j,
 						verbose="VERBOSE" in self.settings)
 					if contents:
 						myf.write(contents)
Brian Dolbec | 3 Apr 01:46 2014
Picon

Patch 0/8 Remaining patches in pending.

[PATCH 1/8] Initial separation and creation of a hash_utils.py module

Well, that was a crappy way for git send-email to react.  
First when cancelling, it only cancelled the cover letter and the first commit.
And without entering an email address.  Second time it didn't send the cover and the 1/8 commit.
I didn't meant to group these together, but, since theyre on the list...

Brian Dolbec | 22 Mar 18:02 2014
Picon

2.X bugfixes

Due to the firmware bug fixed by the first patch in this series which needs
to be released and used for production of install media. I took the opportunity
To add all the other bug fixes from the pending and 3.0 branches.  This 
includes a few convenience commits like the 2 chmod ones.  I would like to 
push these to the main repo and make a release.

They are currently available for testing in my github account.

git remote add dolsen-github git@...:dol-sen/catalyst.git
git fetch dolsen-github
git checkout dolsen-github/2.X

 [PATCH 01/17] livecdfs-update: No tmpfs on /lib/firmware
 [PATCH 02/17] update-modules doesn't exists anymore.
 [PATCH 03/17] depscan.sh doesn't exists anymore.
 [PATCH 04/17] /etc/conf.d/rc doesn't exists anymore.
 [PATCH 05/17] Fix merging kernel without kerncache enabled.
 [PATCH 06/17] Rename System.map in a way that it won't be matched if
 [PATCH 07/17] Allow kernelopts as a valid value for kernels.
 [PATCH 08/17] Make use of _kernelopts for hppa.
 [PATCH 09/17] Fix and improve kernel build when kerncache is enabled.
 [PATCH 10/17] Don't make cdtar mandatory.
 [PATCH 11/17] Use the system's iplboot to be sure it matches palo's
 [PATCH 12/17] Remove unused hppa cdtar.
 [PATCH 13/17] chmod +x all sh scripts so they can run from the git
 [PATCH 14/17] chmod +x targets/stage1/build.py
 [PATCH 15/17] Add more working files, directories to .gitignore
 [PATCH 16/17] Fix undefined variable: RLIMIT_NOFILE
 [PATCH 17/17] Fix a relative path bug

Brian Dolbec | 3 Mar 00:07 2014
Picon

[PATCH] Commit a testpath file to source with instructions on it's use.

Make testpath automagic via dwfeed's tweak
Update HOWTO on how to run the git checkout code directly without being installed.
---
 doc/HOWTO.txt | 10 ++++++++--
 testpath      | 19 +++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)
 create mode 100644 testpath

diff --git a/doc/HOWTO.txt b/doc/HOWTO.txt
index 8fe63c1..cec22c3 100644
--- a/doc/HOWTO.txt
+++ b/doc/HOWTO.txt
 <at>  <at>  -233,9 +233,15  <at>  <at>  Running catalyst from a Git checkout

 If you're developing catalyst, you'll want to test your altered
 version.  An easy way to run it without reinstalling is to setup a
-local configuration file and run:
+local configuration file.  The checkout also includes a testpath file
+which when sourced adds it's bin/ to PATH and it's checkout dir to
+PYTHONPATH.  That terminal will then use the checkout bin/catalyst and
+the checkout's python modules.

-    # ./catalyst -c catalyst.conf -f path/to/your.spec
+cd into the checkout directory and run:
+
+    # source ./testpath
+    # catalyst -c catalyst.conf -f path/to/your.spec

 The local configuration file can use all the defaults except for
 `sharedir`, which you should change to point to your development
diff --git a/testpath b/testpath
new file mode 100644
index 0000000..8394ff6
--- /dev/null
+++ b/testpath
 <at>  <at>  -0,0 +1,19  <at>  <at> 
+
+# When sourced from the same directory as the checkout these 2 paths direct
+# commands use your git checkout in the terminal window you wish to run
+# the git code in...
+# cd ~/catalyst
+# source ./testpath
+# edit a config file "test.conf" with similar path changes for it to find
+# and use/run the git checkout code and to store it's data to a test directory
+# it can then be run on a system without being installed or replacing an existing
+# catalyst install which may be used for production.
+#
+# then run catalyst from there
+#  eg:
+#
+# catalyst -c ./test.conf -p  -f stage1.spec
+
+export PATH="$(dirname $BASH_SOURCE[0])/bin:${PATH}"
+
+export PYTHONPATH="$(dirname $BASH_SOURCE[0]):${PYTHONPATH}"
Brian Dolbec | 3 Mar 00:05 2014
Picon

[PATCH] Fix autoresume file paths to only be configured once.

Use: pjoin as a shorter alias to os.path.join()
---
 catalyst/targets/generic_stage_target.py | 175 +++++++++++++++++--------------
 1 file changed, 95 insertions(+), 80 deletions(-)

diff --git a/catalyst/targets/generic_stage_target.py b/catalyst/targets/generic_stage_target.py
index 2b3d7ce..095327a 100644
--- a/catalyst/targets/generic_stage_target.py
+++ b/catalyst/targets/generic_stage_target.py
 <at>  <at>  -33,6 +33,9  <at>  <at>  SOURCE_MOUNTS_DEFAULTS = {
 	"shm": "shmfs",
 	}

+# for convienience
+pjoin = os.path.join
+

 class generic_stage_target(generic_target):
 	"""
 <at>  <at>  -334,9 +337,10  <at>  <at>  class generic_stage_target(generic_target):
 	def set_target_path(self):
 		self.settings["target_path"]=normpath(self.settings["storedir"]+\
 			"/builds/"+self.settings["target_subpath"]+".tar.bz2")
-		if "AUTORESUME" in self.settings\
-			and os.path.exists(self.settings["autoresume_path"]+\
-				"setup_target_path"):
+		setup_target_path_resume = pjoin(self.settings["autoresume_path"],
+			"setup_target_path")
+		if "AUTORESUME" in self.settings and \
+				os.path.exists(setup_target_path_resume):
 			print \
 				"Resume point detected, skipping target path setup operation..."
 		else:
 <at>  <at>  -348,7 +352,7  <at>  <at>  class generic_stage_target(generic_target):
 #				cmd("rm -f "+self.settings["target_path"],\
 #					"Could not remove existing file: "\
 #					+self.settings["target_path"],env=self.env)
-			touch(self.settings["autoresume_path"]+"setup_target_path")
+			touch(setup_target_path_resume)

 			if not os.path.exists(self.settings["storedir"]+"/builds/"):
 				os.makedirs(self.settings["storedir"]+"/builds/")
 <at>  <at>  -484,10 +488,12  <at>  <at>  class generic_stage_target(generic_target):
 		self.chroot_lock=LockDir(self.settings["chroot_path"])

 	def set_autoresume_path(self):
-		self.settings["autoresume_path"]=normpath(self.settings["storedir"]+\
-			"/tmp/"+self.settings["rel_type"]+"/"+".autoresume-"+\
-			self.settings["target"]+"-"+self.settings["subarch"]+"-"+\
-			self.settings["version_stamp"]+"/")
+		self.settings["autoresume_path"] = normpath(pjoin(
+			self.settings["storedir"], "tmp", self.settings["rel_type"],
+			".autoresume-%s-%s-%s"
+			%(self.settings["target"], self.settings["subarch"],
+				self.settings["version_stamp"])
+			))
 		if "AUTORESUME" in self.settings:
 			print "The autoresume path is " + self.settings["autoresume_path"]
 		if not os.path.exists(self.settings["autoresume_path"]):
 <at>  <at>  -673,8 +679,8  <at>  <at>  class generic_stage_target(generic_target):
 	def unpack(self):
 		unpack=True

-		clst_unpack_hash=read_from_clst(self.settings["autoresume_path"]+\
-			"unpack")
+		unpack_resume = pjoin(self.settings["autoresume_path"], "unpack")
+		clst_unpack_hash=read_from_clst(unpack_resume)

 		if "SEEDCACHE" in self.settings:
 			if os.path.isdir(self.settings["source_path"]):
 <at>  <at>  -720,7 +726,7  <at>  <at>  class generic_stage_target(generic_target):

 		if "AUTORESUME" in self.settings:
 			if os.path.isdir(self.settings["source_path"]) \
-				and os.path.exists(self.settings["autoresume_path"]+"unpack"):
+				and os.path.exists(unpack_resume):
 				""" Autoresume is valid, SEEDCACHE is valid """
 				unpack=False
 				invalid_snapshot=False
 <at>  <at>  -732,8 +738,7  <at>  <at>  class generic_stage_target(generic_target):
 				invalid_snapshot=True

 			elif os.path.isdir(self.settings["source_path"]) \
-				and not os.path.exists(self.settings["autoresume_path"]+\
-				"unpack"):
+				and not os.path.exists(unpack_resume):
 				""" Autoresume is invalid, SEEDCACHE """
 				unpack=True
 				invalid_snapshot=False
 <at>  <at>  -793,18 +798,19  <at>  <at>  class generic_stage_target(generic_target):
 			cmd(unpack_cmd,error_msg,env=self.env)

 			if "source_path_hash" in self.settings:
-				myf=open(self.settings["autoresume_path"]+"unpack","w")
+				myf=open(unpack_resume,"w")
 				myf.write(self.settings["source_path_hash"])
 				myf.close()
 			else:
-				touch(self.settings["autoresume_path"]+"unpack")
+				touch(unpack_resume)
 		else:
 			print "Resume point detected, skipping unpack operation..."

 	def unpack_snapshot(self):
 		unpack=True
-		snapshot_hash=read_from_clst(self.settings["autoresume_path"]+\
+		unpack_portage_resume = pjoin(self.settings["autoresume_path"],
 			"unpack_portage")
+		snapshot_hash=read_from_clst(unpack_portage_resume)

 		if "SNAPCACHE" in self.settings:
 			snapshot_cache_hash=\
 <at>  <at>  -841,8 +847,7  <at>  <at>  class generic_stage_target(generic_target):
 			if "AUTORESUME" in self.settings \
 				and os.path.exists(self.settings["chroot_path"]+\
 					self.settings["portdir"]) \
-				and os.path.exists(self.settings["autoresume_path"]\
-					+"unpack_portage") \
+				and os.path.exists(unpack_portage_resume) \
 				and self.settings["snapshot_path_hash"] == snapshot_hash:
 					print \
 						"Valid Resume point detected, skipping unpack of portage tree..."
 <at>  <at>  -868,7 +873,7  <at>  <at>  class generic_stage_target(generic_target):
 				myf.close()
 			else:
 				print "Setting snapshot autoresume point"
-				myf=open(self.settings["autoresume_path"]+"unpack_portage","w")
+				myf=open(unpack_portage_resume,"w")
 				myf.write(self.settings["snapshot_path_hash"])
 				myf.close()

 <at>  <at>  -876,9 +881,10  <at>  <at>  class generic_stage_target(generic_target):
 				self.snapshot_lock_object.unlock()

 	def config_profile_link(self):
+		config_protect_link_resume = pjoin(self.settings["autoresume_path"],
+			"config_profile_link")
 		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+\
-				"config_profile_link"):
+			and os.path.exists():
 			print \
 				"Resume point detected, skipping config_profile_link operation..."
 		else:
 <at>  <at>  -892,12 +898,13  <at>  <at>  class generic_stage_target(generic_target):
 				self.settings["target_profile"]+" "+\
 				self.settings["chroot_path"]+"/etc/portage/make.profile",\
 				"Error creating profile link",env=self.env)
-			touch(self.settings["autoresume_path"]+"config_profile_link")
+			touch(config_protect_link_resume)

 	def setup_confdir(self):
+		setup_confdir_resume = pjoin(self.settings["autoresume_path"],
+			"setup_confdir")
 		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+\
-				"setup_confdir"):
+			and os.path.exists(setup_confdir_resume):
 			print "Resume point detected, skipping setup_confdir operation..."
 		else:
 			if "portage_confdir" in self.settings:
 <at>  <at>  -905,7 +912,7  <at>  <at>  class generic_stage_target(generic_target):
 				cmd("rsync -a "+self.settings["portage_confdir"]+"/ "+\
 					self.settings["chroot_path"]+"/etc/portage/",\
 					"Error copying /etc/portage",env=self.env)
-				touch(self.settings["autoresume_path"]+"setup_confdir")
+				touch(setup_confdir_resume)

 	def portage_overlay(self):
 		""" We copy the contents of our overlays to /usr/local/portage """
 <at>  <at>  -1029,8 +1036,9  <at>  <at>  class generic_stage_target(generic_target):
 		self.override_cflags()
 		self.override_cxxflags()
 		self.override_ldflags()
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"chroot_setup"):
+		chroot_setup_resume = pjoin(self.settings["autoresume_path"],
+			"chroot_setup")
+		if "AUTORESUME" in self.settings and os.path.exists(chroot_setup_resume):
 			print "Resume point detected, skipping chroot_setup operation..."
 		else:
 			print "Setting up chroot..."
 <at>  <at>  -1126,32 +1134,34  <at>  <at>  class generic_stage_target(generic_target):
 			cmd("cp "+self.settings["chroot_path"]+"/etc/portage/make.conf "+\
 				self.settings["chroot_path"]+"/etc/portage/make.conf.catalyst",\
 				"Could not backup /etc/portage/make.conf",env=self.env)
-			touch(self.settings["autoresume_path"]+"chroot_setup")
+			touch(chroot_setup_resume)

 	def fsscript(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"fsscript"):
+		fsscript_resume = pjoin(self.settings["autoresume_path"], "fsscript")
+		if "AUTORESUME" in self.settings and os.path.exists(fsscript_resume):
 			print "Resume point detected, skipping fsscript operation..."
 		else:
 			if "fsscript" in self.settings:
 				if os.path.exists(self.settings["controller_file"]):
 					cmd("/bin/bash "+self.settings["controller_file"]+\
 						" fsscript","fsscript script failed.",env=self.env)
-					touch(self.settings["autoresume_path"]+"fsscript")
+					touch(fsscript_resume)

 	def rcupdate(self):
+		rcupdate_resume = pjoin(self.settings["autoresume_path"], "rcupdate")
 		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"rcupdate"):
+			and os.path.exists(rcupdate_resume):
 			print "Resume point detected, skipping rcupdate operation..."
 		else:
 			if os.path.exists(self.settings["controller_file"]):
 				cmd("/bin/bash "+self.settings["controller_file"]+" rc-update",\
 					"rc-update script failed.",env=self.env)
-				touch(self.settings["autoresume_path"]+"rcupdate")
+				touch(rcupdate_resume)

 	def clean(self):
+		clean_resume = pjoin(self.settings["autoresume_path"], "clean")
 		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"clean"):
+			and os.path.exists(clean_resume):
 			print "Resume point detected, skipping clean operation..."
 		else:
 			for x in self.settings["cleanables"]:
 <at>  <at>  -1182,11 +1192,11  <at>  <at>  class generic_stage_target(generic_target):
 		if os.path.exists(self.settings["controller_file"]):
 			cmd("/bin/bash "+self.settings["controller_file"]+" clean",\
 				"clean script failed.",env=self.env)
-			touch(self.settings["autoresume_path"]+"clean")
+			touch(clean_resume)

 	def empty(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"empty"):
+		empty_resume = pjoin(self.settings["autoresume_path"], "empty")
+		if "AUTORESUME" in self.settings and os.path.exists(empty_resume):
 			print "Resume point detected, skipping empty operation..."
 		else:
 			if self.settings["spec_prefix"]+"/empty" in self.settings:
 <at>  <at>  -1210,11 +1220,11  <at>  <at>  class generic_stage_target(generic_target):
 					os.makedirs(myemp,0755)
 					os.chown(myemp,mystat[ST_UID],mystat[ST_GID])
 					os.chmod(myemp,mystat[ST_MODE])
-			touch(self.settings["autoresume_path"]+"empty")
+			touch(empty_resume)

 	def remove(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"remove"):
+		remove_resume = pjoin(self.settings["autoresume_path"], "remove")
+		if "AUTORESUME" in self.settings and os.path.exists(remove_resume):
 			print "Resume point detected, skipping remove operation..."
 		else:
 			if self.settings["spec_prefix"]+"/rm" in self.settings:
 <at>  <at>  -1229,29 +1239,29  <at>  <at>  class generic_stage_target(generic_target):
 					if os.path.exists(self.settings["controller_file"]):
 						cmd("/bin/bash "+self.settings["controller_file"]+\
 							" clean","Clean  failed.",env=self.env)
-						touch(self.settings["autoresume_path"]+"remove")
+						touch(remove_resume)
 				except:
 					self.unbind()
 					raise

 	def preclean(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"preclean"):
+		preclean_resume = pjoin(self.settings["autoresume_path"], "preclean")
+		if "AUTORESUME" in self.settings and os.path.exists(preclean_resume):
 			print "Resume point detected, skipping preclean operation..."
 		else:
 			try:
 				if os.path.exists(self.settings["controller_file"]):
 					cmd("/bin/bash "+self.settings["controller_file"]+\
 						" preclean","preclean script failed.",env=self.env)
-					touch(self.settings["autoresume_path"]+"preclean")
+					touch(preclean_resume)

 			except:
 				self.unbind()
 				raise CatalystError, "Build failed, could not execute preclean"

 	def capture(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"capture"):
+		capture_resume = pjoin(self.settings["autoresume_path"], "capture")
+		if "AUTORESUME" in self.settings and os.path.exists(capture_resume):
 			print "Resume point detected, skipping capture operation..."
 		else:
 			""" Capture target in a tarball """
 <at>  <at>  -1272,18 +1282,18  <at>  <at>  class generic_stage_target(generic_target):
 			self.gen_contents_file(self.settings["target_path"])
 			self.gen_digest_file(self.settings["target_path"])

-			touch(self.settings["autoresume_path"]+"capture")
+			touch(capture_resume)

 	def run_local(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"run_local"):
+		run_local_resume = pjoin(self.settings["autoresume_path"], "run_local")
+		if "AUTORESUME" in self.settings and os.path.exists(run_local_resume):
 			print "Resume point detected, skipping run_local operation..."
 		else:
 			try:
 				if os.path.exists(self.settings["controller_file"]):
 					cmd("/bin/bash "+self.settings["controller_file"]+" run",\
 						"run script failed.",env=self.env)
-					touch(self.settings["autoresume_path"]+"run_local")
+					touch(run_local_resume)

 			except CatalystError:
 				self.unbind()
 <at>  <at>  -1350,8 +1360,8  <at>  <at>  class generic_stage_target(generic_target):
 		self.chroot_lock.unlock()

 	def unmerge(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"unmerge"):
+		unmerge_resume = pjoin(self.settings["autoresume_path"], "unmerge")
+		if "AUTORESUME" in self.settings and os.path.exists(unmerge_resume):
 			print "Resume point detected, skipping unmerge operation..."
 		else:
 			if self.settings["spec_prefix"]+"/unmerge" in self.settings:
 <at>  <at>  -1379,22 +1389,25  <at>  <at>  class generic_stage_target(generic_target):
 				except CatalystError:
 					self.unbind()
 					raise
-				touch(self.settings["autoresume_path"]+"unmerge")
+				touch(unmerge_resume)

 	def target_setup(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"target_setup"):
+		target_setup_resume = pjoin(self.settings["autoresume_path"],
+			"target_setup")
+		if "AUTORESUME" in self.settings and os.path.exists(target_setup_resume):
 			print "Resume point detected, skipping target_setup operation..."
 		else:
 			print "Setting up filesystems per filesystem type"
 			cmd("/bin/bash "+self.settings["controller_file"]+\
 				" target_image_setup "+ self.settings["target_path"],\
 				"target_image_setup script failed.",env=self.env)
-			touch(self.settings["autoresume_path"]+"target_setup")
+			touch(target_setup_resume)

 	def setup_overlay(self):
-		if "AUTORESUME" in self.settings \
-		and os.path.exists(self.settings["autoresume_path"]+"setup_overlay"):
+		setup_overlay_resume = pjoin(self.settings["autoresume_path"],
+			"setup_overlay")
+		if "AUTORESUME" in self.settings and \
+				os.path.exists(setup_overlay_resume):
 			print "Resume point detected, skipping setup_overlay operation..."
 		else:
 			if self.settings["spec_prefix"]+"/overlay" in self.settings:
 <at>  <at>  -1404,11 +1417,11  <at>  <at>  class generic_stage_target(generic_target):
 							self.settings["target_path"],\
 							self.settings["spec_prefix"]+"overlay: "+x+\
 							" copy failed.",env=self.env)
-				touch(self.settings["autoresume_path"]+"setup_overlay")
+				touch(setup_overlay_resume)

 	def create_iso(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"create_iso"):
+		create_iso_resume = pjoin(self.settings["autoresume_path"], "create_iso")
+		if "AUTORESUME" in self.settings and os.path.exists(create_iso_resume):
 			print "Resume point detected, skipping create_iso operation..."
 		else:
 			""" Create the ISO """
 <at>  <at>  -1418,15 +1431,16  <at>  <at>  class generic_stage_target(generic_target):
 					env=self.env)
 				self.gen_contents_file(self.settings["iso"])
 				self.gen_digest_file(self.settings["iso"])
-				touch(self.settings["autoresume_path"]+"create_iso")
+				touch(create_iso_resume)
 			else:
 				print "WARNING: livecd/iso was not defined."
 				print "An ISO Image will not be created."

 	def build_packages(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+\
-				"build_packages"):
+		build_packages_resume = pjoin(self.settings["autoresume_path"],
+			"build_packages")
+		if "AUTORESUME" in self.settings and \
+				os.path.exists(build_packages_resume):
 			print "Resume point detected, skipping build_packages operation..."
 		else:
 			if self.settings["spec_prefix"]+"/packages" in self.settings:
 <at>  <at>  -1442,7 +1456,7  <at>  <at>  class generic_stage_target(generic_target):
 						cmd("/bin/bash "+self.settings["controller_file"]+\
 							" build_packages "+mypack,\
 							"Error in attempt to build packages",env=self.env)
-						touch(self.settings["autoresume_path"]+"build_packages")
+						touch(build_packages_resume)
 					except CatalystError:
 						self.unbind()
 						raise CatalystError,self.settings["spec_prefix"]+\
 <at>  <at>  -1450,8 +1464,9  <at>  <at>  class generic_stage_target(generic_target):

 	def build_kernel(self):
 		"Build all configured kernels"
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"build_kernel"):
+		build_kernel_resume = pjoin(self.settings["autoresume_path"],
+			"build_kernel")
+		if "AUTORESUME" in self.settings and os.path.exists(build_kernel_resume):
 			print "Resume point detected, skipping build_kernel operation..."
 		else:
 			if "boot/kernel" in self.settings:
 <at>  <at>  -1467,7 +1482,7  <at>  <at>  class generic_stage_target(generic_target):
 						env=self.env)
 					for kname in mynames:
 						self._build_kernel(kname=kname)
-					touch(self.settings["autoresume_path"]+"build_kernel")
+					touch(build_kernel_resume)
 				except CatalystError:
 					self.unbind()
 					raise CatalystError,\
 <at>  <at>  -1475,9 +1490,9  <at>  <at>  class generic_stage_target(generic_target):

 	def _build_kernel(self, kname):
 		"Build a single configured kernel by name"
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]\
-				+"build_kernel_"+kname):
+		kname_resume = pjoin(self.settings["autoresume_path"],
+			"build_kernel_" + kname)
+		if "AUTORESUME" in self.settings and os.path.exists(kname_resume):
 			print "Resume point detected, skipping build_kernel for "+kname+" operation..."
 			return
 		self._copy_kernel_config(kname=kname)
 <at>  <at>  -1519,8 +1534,7  <at>  <at>  class generic_stage_target(generic_target):
 				cmd("rm -R "+self.settings["chroot_path"]+\
 					"/tmp/initramfs_overlay/",env=self.env)

-		touch(self.settings["autoresume_path"]+\
-			"build_kernel_"+kname)
+		touch(kname_resume)

 		"""
 		Execute the script that cleans up the kernel build
 <at>  <at>  -1573,29 +1587,30  <at>  <at>  class generic_stage_target(generic_target):
 					"/initramfs_overlay"],env=self.env)

 	def bootloader(self):
-		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+"bootloader"):
+		bootloader_resume = pjoin(self.settings["autoresume_path"], "bootloader")
+		if "AUTORESUME" in self.settings and os.path.exists(bootloader_resume):
 			print "Resume point detected, skipping bootloader operation..."
 		else:
 			try:
 				cmd("/bin/bash "+self.settings["controller_file"]+\
 					" bootloader " + self.settings["target_path"],\
 					"Bootloader script failed.",env=self.env)
-				touch(self.settings["autoresume_path"]+"bootloader")
+				touch(bootloader_resume)
 			except CatalystError:
 				self.unbind()
 				raise CatalystError,"Script aborting due to error."

 	def livecd_update(self):
+		livecd_update_resume = pjoin(self.settings["autoresume_path"],
+			"livecd_update")
 		if "AUTORESUME" in self.settings \
-			and os.path.exists(self.settings["autoresume_path"]+\
-				"livecd_update"):
+			and os.path.exists(livecd_update_resume):
 			print "Resume point detected, skipping build_packages operation..."
 		else:
 			try:
 				cmd("/bin/bash "+self.settings["controller_file"]+\
 					" livecd-update","livecd-update failed.",env=self.env)
-				touch(self.settings["autoresume_path"]+"livecd_update")
+				touch(livecd_update_resume)

 			except CatalystError:
 				self.unbind()

Gmane