Bug 464727

Summary: yast product creator mixes up architectures
Product: [openSUSE] openSUSE 11.1 Reporter: Bart geesink <bart>
Component: YaST2Assignee: Jiří Suchomel <jsuchome>
Status: RESOLVED FIXED QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P3 - Medium CC: lslezak
Version: Final   
Target Milestone: ---   
Hardware: Other   
OS: openSUSE 11.1   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: y2logs
successfully created image y2log
failed creation with http repo
kiwi image creation fails because of architecture problem

Description Bart geesink 2009-01-09 04:00:05 UTC
When I try to make a installation CD with yast product creator it creates an unbootable CD. /boot/i386 is completely empty.

I think the problem is related to architecture. 
When I choose the installation source, this message is displayed:
source http://192.168.1.240/suse/11.1 does not support the current architecture (i386). Change the target architecture? 
Then a checkbox where you can only choose i586.

This same problem also prevents making a kiwi image. There you get this message:

Target architecure of the current configuration (i586) does not match the system configuration (i386). 
Kiwi cannot create images for different architectures. 

Attached my y2log. The image is used for testing this is named test_for_begreport (yes that was a typo, my English is not *that* bad ;)). 

Thanks!
Comment 1 Bart geesink 2009-01-09 04:02:21 UTC
Created attachment 264034 [details]
y2logs
Comment 2 Ladislav Slezák 2009-01-14 15:32:14 UTC
Yast tried downloading the content of /boot directory:

2009-01-09 10:33:14 <1> werkbak(14221) [YCP] ProductCreator.ycp:921 CopyDirectoryRec: srcid: 7, mid: 1, src: boot, target: /media/stuff/kiwi_usbboot/test_for_bugreport//test_for_begreport
2009-01-09 10:33:14 <1> werkbak(14221) [Pkg] ProductCreator.ycp:923 Pkg Builtin called: SourceProvideDirectory
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaSetAccess.cc(provideDir):412 Going to try provide direcotry ./boot (recursively) from media nr. 1
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaManager.cc(checkDesired):116 checkDesired(5): desired (cached)
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaCurl.cc(doGetFileCopy):1166 ./boot/directory.yast
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaCurl.cc(doGetFileCopy):1183 URL: http://192.168.1.240/suse/11.1/boot/directory.yast
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaCurl.cc(doGetFileCopy):1252 dest: /var/adm/mount/AP_0x00000014/boot/directory.yast
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaCurl.cc(doGetFileCopy):1253 temp: /var/adm/mount/AP_0x00000014/boot/directory.yast.new.zypp.m0KQrW
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaCurl.cc(doGetFileCopy):1453 HTTP response: 200
2009-01-09 10:33:14 <1> werkbak(14221) [zypp] PathInfo.cc(_Log_Result):292 rename /var/adm/mount/AP_0x00000014/boot/directory.yast.new.zypp.m0KQrW -> /var/adm/mount/AP_0x00000014/boot/directory.yast
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaCurl.cc(doGetFileCopy):1482 done: /var/adm/mount/AP_0x00000014/boot/directory.yast{- 0644 0/0 size 0}
2009-01-09 10:33:14 <1> werkbak(14221) [zypp++] MediaHandler.cc(getDirectoryYast):1169 provideFile(./boot/directory.yast): OK
2009-01-09 10:33:14 <1> werkbak(14221) [zypp] MediaHandler.cc(provideDirTree):1043 provideDirTree(./boot)
2009-01-09 10:33:14 <1> werkbak(14221) [YCP] ProductCreator.ycp:924 local_dir: /var/adm/mount/AP_0x00000014/boot
2009-01-09 10:33:14 <1> werkbak(14221) [YCP] ProductCreator.ycp:863 executing: /bin/cp -a -f -- '/var/adm/mount/AP_0x00000014/boot' '/media/stuff/kiwi_usbboot/test_for_bugreport//test_for_begreport'
2009-01-09 10:33:14 <1> werkbak(14221) [YCP] ProductCreator.ycp:868 result: 0

The problem is here:
MediaCurl.cc(doGetFileCopy):1482 done: /var/adm/mount/AP_0x00000014/boot/directory.yast{- 0644 0/0 size 0}

The downloaded directory index file (directory.yast) is empty so the recursive download is immediately finished (nothing to download).

Please check the repository on the server and copy /boot directory from 11.1 properly.
Comment 3 Bart geesink 2009-01-15 04:39:55 UTC
Created attachment 265190 [details]
successfully created image y2log
Comment 4 Bart geesink 2009-01-15 04:41:21 UTC
The directory.yast is there and available:
werkbak:~ # curl http://192.168.1.240/suse/11.1/boot/directory.yast
i386/

However, if I make the installation repo available over NFS, it suddenly works! Same repo, only now over NFS. 

The problem with the creation of an image with kiwi remains however:

"Target architecure of the current configuration (i586) does not match the
system configuration (i386). Kiwi cannot create images for different architectures."

I will attach three supplementary y2logs. I have created new files for every iso I created. 

The first attachment, y2log_fail_i586_http.gz, shows again the failed creation over http

The second attachment, y2log_success_i586_nfs, shows a successful creation over nfs.

The third attachment is the log for what happens when I select the successfully created image from y2log_success_i586_nfs.gz and I try to make a kiwi image from it. This log is called y2log_failed_create_kiwi.gz
Comment 5 Bart geesink 2009-01-15 04:42:22 UTC
Created attachment 265191 [details]
failed creation with http repo
Comment 6 Bart geesink 2009-01-15 04:43:16 UTC
Created attachment 265192 [details]
kiwi image creation fails because of architecture problem
Comment 7 Ladislav Slezák 2009-03-11 11:49:00 UTC
Jiri, the check in the kiwi part looks buggy:
2009-01-15 11:39:47 <1> werkbak(14525) [Pkg] ProductCreator.ycp:190 Pkg Builtin called: SystemArchitecture
2009-01-15 11:39:47 <1> werkbak(14525) [Pkg] Arch.cc(SystemArchitecture):94 Default system architecture: i686
2009-01-15 11:40:11 <3> werkbak(14525) [YCP] Report.ycp:472 Target architecture of the current configuration (i586)
does not match the system architecture (i386).

Kiwi cannot create images for different architectures.

The target is i586, the system is i686, but the message contains i386 (that's what Arch::architecture() returned).

I think Pkg::SystemArchitecture() should be used instead of Arch::architecture() and in some cases it should be possible to continue (on compatible architectures like i586 and i686).

The result will not be exactly what expected, in this case the kiwi target architecture will be i686, but if it's acceptable for user yast should continue.
Comment 8 Ladislav Slezák 2009-03-11 12:05:32 UTC
The problem with missing files when using a http repository is a different problem, reported separately as bug #484263.
Comment 9 Jiří Suchomel 2009-03-31 13:56:05 UTC
I hope it is enough to use ProductCreator::GetArch instead of ProductCreator::Config["arch"], because GetArch tranfroms i*86 to i386
Comment 10 Jiří Suchomel 2009-04-01 09:11:06 UTC
done