Logic in modules/generic_stage_target.py:575 attempts to deduce if both
SEEDCACHE is defined in the catalyst config AND if the source_path is a
directory. If both are true, then it is supposed to rsync the stage1root
directory over as the stage2 build directory. If false, it attempts to run a
tar extraction.
In the event SEEDCACHE is not defined, but stage1root exists, catalyst
inadvertently tries to run a tar extraction on a directory, which bombs most
fantastically. Example:
Using seed-stage from
/usr/catalyst/tmp/default/stage1-mips3-2006.1-pre/tmp/stage1root/
Delete this folder if you wish to use a seed stage tarball instead
The autoresume path is
/usr/catalyst/tmp/default/.autoresume-stage2-mips3-2006.1-pre/
Location of the package cache is
/usr/catalyst/packages/default/stage2-mips3-2006.1-pre/
Location of the kerncache is
/usr/catalyst/kerncache/default/stage2-mips3-2006.1-pre/
Checking for processes running in chroot and killing them.
Running action sequence: unpack
Starting tar extract from
/usr/catalyst/tmp/default/stage1-mips3-2006.1-pre/tmp/stage1root/
to /usr/catalyst/tmp/default/stage2-mips3-2006.1-pre/ (This may take some time)
...
tar: /usr/catalyst/tmp/default/stage1-mips3-2006.1-pre/tmp/stage1root/: Cannot
read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
bzip2: Compressed file ends unexpectedly;
perhaps it is corrupted? *Possible* reason follows.
bzip2: Invalid argument
Input file = (stdin), output file = (stdout)
[snip]
To resolve this, a patch is attached the re-writes the logic of this
conditional block as such (abbreviated hacky C logic):
if has_key(SEEDCACHE) {
Logic in modules/generic_stage_target.py:575 attempts to deduce if both
SEEDCACHE is defined in the catalyst config AND if the source_path is a
directory. If both are true, then it is supposed to rsync the stage1root
directory over as the stage2 build directory. If false, it attempts to run a
tar extraction.
In the event SEEDCACHE is not defined, but stage1root exists, catalyst
inadvertently tries to run a tar extraction on a directory, which bombs most
fantastically. Example:
Using seed-stage from
/usr/catalyst/tmp/default/stage1-mips3-2006.1-pre/tmp/stage1root/
Delete this folder if you wish to use a seed stage tarball instead
The autoresume path is
/usr/catalyst/tmp/default/.autoresume-stage2-mips3-2006.1-pre/
Location of the package cache is
/usr/catalyst/packages/default/stage2-mips3-2006.1-pre/
Location of the kerncache is
/usr/catalyst/kerncache/default/stage2-mips3-2006.1-pre/
Checking for processes running in chroot and killing them.
Running action sequence: unpack
Starting tar extract from
/usr/catalyst/tmp/default/stage1-mips3-2006.1-pre/tmp/stage1root/
to /usr/catalyst/tmp/default/stage2-mips3-2006.1-pre/ (This may take some time)
...
tar: /usr/catalyst/tmp/default/stage1-mips3-2006.1-pre/tmp/stage1root/: Cannot
read: Is a directory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
bzip2: Compressed file ends unexpectedly;
perhaps it is corrupted? *Possible* reason follows.
bzip2: Invalid argument
Input file = (stdin), output file = (stdout)
[snip]
To resolve this, a patch is attached the re-writes the logic of this
conditional block as such (abbreviated hacky C logic):
if has_key(SEEDCACHE) {
··· if isdir(source_path) {
······ /* Directory exists, use rsync */
······ run rsync();
··· } else {
······ /* Directory does not exist, or is not a
······ ** directory. Attempt tar extract instead
······ **/
······ run tar_extract();
··· }
} else {
··· /* No SEEDCACHE, extract tarball */
··· run tar_extract();
}