Opened 6 years ago

Closed 12 months ago

Last modified 10 months ago

#10815 closed bug (fixed)

Haiku x86_64 cannot build itself

Reported by: Luposian Owned by: jessicah
Priority: normal Milestone: Unscheduled
Component: Build System Version: R1/Development
Keywords: Cc:
Blocked By: Blocking: #12910, #14796
Has a Patch: no Platform: x86-64

Description

I downloaded the latest buildtools and source tree (today). Built the tools and ran jam -q haiku-image. A few minutes into the build, Jam quits on interrupts.o, as shown in the picture.

Attachments (1)

interrupts.o Jam quit.png (176.2 KB ) - added by Luposian 6 years ago.

Download all attachments as: .zip

Change History (29)

by Luposian, 6 years ago

Attachment: interrupts.o Jam quit.png added

comment:1 by waddlesplash, 5 years ago

Owner: changed from bonefish to jessicah
Status: newassigned
Summary: interrupts.o causes JAM in Haiku x86_64 to quit.Haiku x86_64 cannot build itself

Jessica mentioned she knew how to fix this, reassigning to her so she can get around to that at some point.

comment:2 by pulkomandy, 5 years ago

Milestone: R1Unscheduled

x86_64 and buildtime only problem, moving out of R1.

The problem is the bootloader is built for a 32bit architecture but tries to use the compiler headers for a 64bit system. This can't work. We probably need a multilib compiler to do this cleanly.

comment:3 by Luposian, 5 years ago

It was building before. Why is it not building now? What changed and why?

comment:4 by Luposian, 4 years ago

Just looked at another ticket, opened/closed by jessicah, and she said something about building Haiku x86_64 on a gcc2h host. Does anyone know if Haiku gcc2h can build Haiku x86_64 successfully? That would be at least a work-around for this ticket.

comment:5 by Luposian, 3 years ago

Latest Revision (as of 8/8/16). It doesn't stop at interrupt.o anymore, but stops at boot_loader_bios_ia32, which I assume basically means the same thing? Shown below:

Welcome to the Haiku shell.

~> cd haiku/haiku
~/haiku/haiku> jam -q haiku-anyboot-image
Starting build of type regular ... 
qrencode support not available on x86_64 
/boot/home/haiku/haiku/src/add-ons/kernel/debugger/disasm/x86_64/Jamfile: No such file or directory
/boot/home/haiku/haiku/src/bin/debug/ltrace/arch/x86_64/Jamfile: No such file or directory
Skipping setjmp_test2.S test on non-x86 
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...found 138005 target(s)...
...updating 12981 target(s)...
MkDir1 /boot/home/haiku/haiku/generated/objects/haiku_host/x86_64/release/tools/anyboot 
C++ /boot/home/haiku/haiku/generated/objects/haiku_host/x86_64/release/tools/anyboot/anyboot.o 
Link /boot/home/haiku/haiku/generated/objects/haiku_host/x86_64/release/tools/anyboot/anyboot 
Chmod1 /boot/home/haiku/haiku/generated/objects/haiku_host/x86_64/release/tools/anyboot/anyboot 
BootLd /boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_loader_bios_ia32 
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `BIOSDrive::WriteAt(void*, long long, void const*, unsigned long)':
(.text+0xf48): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `BIOSDrive::WriteAt(void*, long long, void const*, unsigned long)':
(.text+0xf79): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `BIOSDrive::ReadAt(void*, long long, void*, unsigned long)':
(.text+0x1128): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `BIOSDrive::ReadAt(void*, long long, void*, unsigned long)':
(.text+0x1143): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `BIOSDrive::ReadAt(void*, long long, void*, unsigned long)':
(.text+0x11b2): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `BIOSDrive::ReadAt(void*, long long, void*, unsigned long)':
(.text+0x11c8): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `add_block_devices(DoublyLinkedList<Node, DoublyLinkedListStandardGetLink<Node> >*, bool) [clone .part.9]':
devices.cpp:(.text+0x1c9c): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o: In function `cpu_init':
(.text+0x3434): undefined reference to `__udivdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_partitions.a(efi_gpt.o): In function `efi_gpt_identify_partition(int, partition_data*, void**)':
efi_gpt.cpp:(.text+0x2ce): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_partitions.a(PartitionMap.o): In function `Partition::CheckLocation(long long) const':
PartitionMap.cpp:(.text+0x56f): undefined reference to `__moddi3'
PartitionMap.cpp:(.text+0x58f): undefined reference to `__moddi3'
PartitionMap.cpp:(.text+0x5c5): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_partitions.a(PartitionMap.o): In function `PrimaryPartition::GetPartitionDescriptor(partition_descriptor*) const':
PartitionMap.cpp:(.text+0x8b1): undefined reference to `__divdi3'
PartitionMap.cpp:(.text+0x8cb): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_partitions.a(PartitionMap.o): In function `LogicalPartition::GetPartitionDescriptor(partition_descriptor*, bool) const':
PartitionMap.cpp:(.text+0xcfa): undefined reference to `__divdi3'
PartitionMap.cpp:(.text+0xd1a): undefined reference to `__divdi3'
PartitionMap.cpp:(.text+0xd65): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a(bfs.o):bfs.cpp:(.text+0xe8): more undefined references to `__divdi3' follow
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a(Stream.o): In function `BFS::Stream::FindBlockRun(long long, BFS::block_run&, long long&)':
Stream.cpp:(.text+0x766): undefined reference to `__moddi3'
Stream.cpp:(.text+0x77a): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a(Stream.o): In function `BFS::Stream::ReadAt(long long, unsigned char*, unsigned long*)':
Stream.cpp:(.text+0x9b1): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a(BPlusTree.o): In function `BFS::bplustree_header::IsValid() const [clone .part.7]':
BPlusTree.cpp:(.text+0x21): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a(BPlusTree.o): In function `BFS::CachedNode::InternalSetTo(BFS::Transaction*, long long)':
BPlusTree.cpp:(.text+0x173): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a(BPlusTree.o): In function `BFS::CachedNode::SetTo(long long, BFS::bplustree_node const**, bool)':
BPlusTree.cpp:(.text+0x344): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Volume.o): In function `FATFS::Volume::_ClusterAllocated(unsigned long) [clone .part.9]':
Volume.cpp:(.text+0x2e): undefined reference to `__divdi3'
Volume.cpp:(.text+0x5a): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Volume.o): In function `FATFS::Volume::NextCluster(unsigned long, unsigned long)':
Volume.cpp:(.text+0x646): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Volume.o): In function `FATFS::Volume::_UpdateCluster(unsigned long, unsigned long)':
Volume.cpp:(.text+0x79b): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Directory.o): In function `FATFS::Directory::UpdateDirEntry(FATFS::Volume&, long long, unsigned long, unsigned long)':
Directory.cpp:(.text+0x758): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Directory.o): In function `FATFS::Directory::_AddEntry(FATFS::dir_entry&, long long&)':
Directory.cpp:(.text+0xbf1): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Stream.o): In function `FATFS::Stream::Stream(FATFS::Volume&, unsigned long, long long, char const*)':
Stream.cpp:(.text+0x8f): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Stream.o): In function `FATFS::Stream::_FindCluster(long long, unsigned long&)':
Stream.cpp:(.text+0x2ba): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Stream.o): In function `FATFS::Stream::_FindOrCreateCluster(long long, unsigned long&, bool&)':
Stream.cpp:(.text+0x44d): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Stream.o): In function `FATFS::Stream::FindBlock(long long, long long&, long long&)':
Stream.cpp:(.text+0x59d): undefined reference to `__moddi3'
Stream.cpp:(.text+0x5e6): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Stream.o): In function `FATFS::Stream::ReadAt(long long, void*, unsigned long*, long long*)':
Stream.cpp:(.text+0x6cb): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a(Stream.o): In function `FATFS::Stream::WriteAt(long long, void const*, unsigned long*, long long*)':
Stream.cpp:(.text+0xa34): undefined reference to `__moddi3'
Stream.cpp:(.text+0xa90): undefined reference to `__moddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_loader.a(DataIO.o): In function `BMallocIO::SetSize(long long)':
DataIO.cpp:(.text+0x5c8): undefined reference to `__divdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `number(Buffer&, unsigned long long, unsigned long, int, int, int)':
kernel_vsprintf.cpp:(.text+0xdf3): undefined reference to `__umoddi3'
kernel_vsprintf.cpp:(.text+0xe08): undefined reference to `__udivdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `vsnprintf':
(.text+0x14bf): undefined reference to `__umoddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `vsnprintf':
(.text+0x1897): undefined reference to `__umoddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `vsnprintf':
(.text+0x1903): undefined reference to `__umoddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `vsnprintf':
(.text+0x1916): undefined reference to `__udivdi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `vsnprintf':
(.text+0x195d): undefined reference to `__umoddi3'
/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o: In function `vsnprintf':
(.text+0x1973): undefined reference to `__udivdi3'

ld -Bstatic --script=/boot/home/haiku/haiku/src/system/ldscripts/x86_64/boot_loader_bios_ia32.ld -o "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_loader_bios_ia32" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/platform/bios_ia32/boot_platform_bios_ia32.o" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/arch/x86/boot_arch_x86.o" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_loader.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/net/boot_net.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_partitions.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/bfs/boot_bfs.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/amiga_ffs/boot_amiga_ffs.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/tarfs/boot_tarfs.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/fat/boot_fatfs.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/packagefs/boot_packagefs.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/boot_loader.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/loader/file_systems/tarfs/boot_zlib.a" "/boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_libroot.o" /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/5.4.0/libsupc++.a /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/5.4.0/libgcc.a \


...failed BootLd /boot/home/haiku/haiku/generated/objects/haiku/x86_64/release/system/boot/boot_loader_bios_ia32 ...

BUILD FAILURE:
...failed updating 1 target(s)...
...skipped 4 target(s)...
...updated 3 target(s)...
~/haiku/haiku> 
Last edited 3 years ago by pulkomandy (previous) (diff)

comment:6 by Luposian, 3 years ago

Since the build stops at a different point (though similar, I assume), I posted a new ticket for this issue. You can close this one.

comment:7 by pulkomandy, 3 years ago

Blocking: 12910 added

(In #12910) Please don't reopen a ticket for an already existing issue. The problem is still the same as before.

comment:8 by Luposian, 3 years ago

My question is, if you can build Haiku x86-64 in another OS (which is bootable, since I download bootable versions (.iso and .raw) now and then), why can't you build a bootable version within Haiku x86-64 itself? Can't you just modify the code to make the build work within Haiku x86-64 itself?

How much would need to be donated to allow complete building of Haiku x86-64 from within Haiku x86-64 once again (which worked many years ago, because I was doing it)?

comment:9 by pulkomandy, 3 years ago

The problem is the lack of a "multilib" compiler running on Haiku.

On most Linux and other systems, the compiler can build both 32-bit and 64-bit executables (using the -m32 and -m64 command line switches). This is currently not available in Haiku. In theory, it would just be a matter of passing --enable-multilib when configuring GCC, however, we have some tricks later in the compiler build process that don't play so well with that (we are moving the libraries around manually, IIRC). The fix is not very complex, just reviewing our build scripts to handle the changed paths in the multilib case.

This is required currently, because the 64-bit Haiku boots from the BIOS, which is still a 32-bit thing (and even 16-bit at the early start). So, what happens when you boot is:

  • The BIOS itself starts in 16-bit, 80286 compatible mode,
  • The boot loader switches to 32-bit, 80386 compatible mode,
  • The bootloader switches to 64-bit, Athlon64 compatible mode,
  • Finally, the 64bit kernel is started.

This means most of the bootloader is actually 32bit. To compile the bootloader, you then need a compiler that generates 32-bit executables. The small 16-bit part is written in assembler, so fortunately we don't need a 16-bit C or C++ compiler.

There is another solution to avoid this: switch to a fully 64-bit environment, with UEFI used instead of the legacy BIOS. In that case, even the bootloader runs in 64-bit mode and there are no such problems. There has been some progress on this, but it requires some work, still. IIRC, the last status update is that we need to replace the VESA driver (which is part of the BIOS and not available in UEFI), and there is a crash that is yet unexplained during boot.

As far as I know, building an x86-64 Haiku from within Haiku has never been possible because of the mentionned problem with gcc. Unless you had a multilib gcc available at some point, in which case it would be very interesting to know how you compiled it.

comment:10 by Luposian, 3 years ago

Thank you for that extensive explanation. However, many moons ago, I was able to build 64-bit Haiku from within 64-Bit Haiku and the revisions I built were bootable, as I created .iso CD images. Go far back enough in the revision tree and you will see. Problem is, you have to download the source tree from that aged time point, not recent. This was obviously before Haiku had package management and might have had an early revision (working to some degree), Web Positive.

I can't say what revision nor year, but I was doing it. Google my handle ("Luposian") and Haiku x86_64. I'm sure I mentioned something about revisions I was building at that time. If I have some free time, I'll look into it myself. "Google is your friend". :-D

Last edited 3 years ago by Luposian (previous) (diff)

comment:11 by Luposian, 3 years ago

Gee, that was hard... ;-D

https://dev.haiku-os.org/ticket/9572

I knew I wasn't crazy... weird, maybe, but not crazy. :-D

comment:12 by Luposian, 3 years ago

Ok, last comment from ticket close, the exact revision I was having success with. Now, how do we get THAT revision's "buildability" put back into the recent revisions, since we now have proof such builds were possible.

comment:13 by Luposian, 3 years ago

I downloaded, burned to CD, and installed hrev45437 (just like I did 3 years ago). Downloaded the build/source tree. Then downloaded (updated/downgraded to?) that specific revision's sources and proceeded to JAM. And whaddayaknow... it BUILT (no surprise, really)!

I was not able to make a CD (.iso) or Anyboot image with that specific revision, but I was able to make a RAW image, which I simply installed to a second partition. WebPositive works, too.

So I have personally proved you CAN built Haiku x86_64 from within Haiku x86_64. The system I used was my Acer Aspire 5560 laptop (it's at least 4 yrs. old now). Seems that revision won't boot (I downloaded the CD .iso image) on anything else I have available right now. I believe it has something to do with SATA, concerning the CD drive. Needs to be in legacy IDE mode, to boot. But it works!

comment:14 by diver, 3 years ago

Now you can give BinarySearch a try :)

comment:15 by Duggan, 3 years ago

Due to an error I encountered in building, Jessicah and I found that gawk 4.1.4 has build breaking errors, but 4.1.0 works ok. The problem is that 4.1.4 is the version included in the repo and this cannot be fixed as it changes the hash and itself breaks the build.

ie: changing line 310 in haiku/build/jam/repositories/HaikuPorts/x86_64 from gawk-4.1.4-1 to gawk-4.1.0-2 breaks the build (which is already broken because gawk 4.1.4 is already included in the existing build and has to be replaced... using gawk 4.1.4 during build craps out on haiku/src/apps/devices/DevicePCI.cpp for me, results may vary)

comment:16 by pulkomandy, 3 years ago

Someone with commit access can downgrade this: 1) Permanently, with jam upload-packages + push to the repo 2) Locally, with jam build-remote-test-repository (see "jam help" for instructions)

alternatively, put your 4.1.0 package in generated/downloads, add the appropriate checksum file, and set HAIKU_NO_DOWNLOADS. This should allow the build to proceed.

comment:17 by korli, 3 years ago

It's nice to workaround the issue, it's nicer to solve the actual problem, be it in Haiku, at Haikuports or upstream. I mean gawk version 4.1.4 should come at a point in Linux distributions (or is it already there?), the cross build would then be broken too.

in reply to:  17 comment:18 by jessicah, 3 years ago

Replying to korli:

It's nice to workaround the issue, it's nicer to solve the actual problem, be it in Haiku, at Haikuports or upstream. I mean gawk version 4.1.4 should come at a point in Linux distributions (or is it already there?), the cross build would then be broken too.

Yes, fixing it would be good... looks like will have to resort to doing diffs across release tarballs, as they don't seem to have any good changelogs.

I have gawk 4.1.1 on my Ubuntu VM, and that doesn't have any issues, although I don't think I tested that particular build on Haiku.

comment:19 by jessicah, 3 years ago

Hmm, I've just built gawk outside of HaikuPorter, 4.1.0, and that has the same internal error.

Running make check, it fails on the localenl test.

    ~/tests/gawk-4.1.0/test> localenl.sh
    LC_ALL=C passed
    LC_ALL=POSIX passed
    LC_ALL=en_US.ISO-8859-1 passed
    gawk: cmd. line:14: fatal error: internal error
    Abort
    ./localenl.sh: line 39:  2471 Done                    cat  <<EOF
    line1
    line2
    line3
    line4 
    line5
    line6
    line7
    line8
    line9
    EOF
    
          2472 Abort                   | $AWK --posix '
    BEGIN { RS="\0"; }
    { 
      if (match($0, /\n[^2\n]*2/)) { got2=1; } else { print "no match 2"; }
      if (match($0, /\n[^3\n]*3/)) { got3=1; } else { print "no match 3"; }
      if (match($0, /\n[^4\n]*4/)) { got4=1; } else { print "no match 4"; }
      if (match($0, /\n[^5\t]*5/)) { got5=1; } else { print "no match 5"; }
      if (match($0, /\n[^6\n]*6/)) { got6=1; } else { print "no match 6"; }
      if (match($0, /\n[a-z]*7\n/)){ got7=1; } else { print "no match 7"; }
      if (match($0, /\n[^8\n]*8/)) { got8=1; } else { print "no match 8"; }
      if (match($0, /8.[^9\n]+9/)) { got9=1; } else { print "no match 9"; }
    }
    
    END { exit(!(got2 && got3 && got4 && got5 && got6 && got7 && got8 && got9)); }
    '
    LC_ALL=en_US.UTF-8 FAILED

With installed gawk:

    ~/tests/gawk-4.1.0/test> AWK=/boot/system/bin/gawk localenl.sh
    LC_ALL=C passed
    LC_ALL=POSIX passed
    LC_ALL=en_US.ISO-8859-1 passed
    LC_ALL=en_US.UTF-8 passed

comment:20 by jessicah, 3 years ago

The gawk problems should be resolved now :) It would still be nice to figure out how to make gcc build a static 32-bit libgcc.a with haikuporter though...

comment:21 by taos, 3 years ago

Just for information, when building with HAIKU_BOOT_PLATFORM=efi jam -q @release-raw it now stops at Collator.o:

...
C++ /Hub/haiku/generated.x86_64/objects/haiku/x86_64/release/kits/locale/Collator.o
/Hub/haiku/src/kits/locale/Collator.cpp:8:30: fatal error: unicode/uversion.h: No such file or directory
compilation terminated.
...

BTW, thanks to jessicah for haiku_loader.efi, it's really awesome.

comment:22 by pulkomandy, 3 years ago

This error looks like a failed package download during build. Delete generated/download/icu* and generated/build_packages/icu* and try again?

in reply to:  22 comment:23 by taos, 3 years ago

Replying to pulkomandy:

This error looks like a failed package download during build. Delete generated/download/icu* and generated/build_packages/icu* and try again?

Yep, that was it. Must have choked twice on the same package since I had removed the whole generated.x86_64 folder before posting to make sure it was not the downloaded packages or some old generated files...

comment:24 by taos, 3 years ago

It seems that some things are still missing (or maybe the build system doesn't know that those things are not needed for EFI):

/Hub/haiku/src/add-ons/kernel/debugger/disasm/x86_64/Jamfile: No such file or directory
/Hub/haiku/src/bin/makebootable/platform/efi/Jamfile: No such file or directory
/Hub/haiku/src/bin/debug/ltrace/arch/x86_64/Jamfile: No such file or directory
/Hub/haiku/src/system/kernel/platform/efi/Jamfile: No such file or directory
/Hub/haiku/src/tools/makebootable/platform/efi/Jamfile: No such file or directory

Resulting in:

AddHaikuImagePackages: package mesa_swrast not available!
Skipping setjmp_test2.S test on non-x86
don't know how to make <build>makebootable
don't know how to make kernel_platform_efi.o
don't know how to make makebootable
...found 140291 target(s)...
...updating 5161 target(s)...
...can't find 3 target(s)...
...can't make 929 target(s)...

comment:25 by pulkomandy, 3 years ago

Some of these missing jamfiles are harmless and expected (missing support for some things but it shouldn't result in a build failure). I'm not sure about makebootable, I think with the EFI loader, it is not needed (makebootable is only a hack to load the bootloader from the partition, with EFI, the loader is in the boot partition and does not need to be loaded this way). Anyway, this issue is/was not about EFI. If this is the only problem left, then we can close it.

comment:26 by taos, 3 years ago

Not sure if it should be closed. When not building for EFI it stops at bios_ia32 and when building for EFI it does not produce an image file.

comment:27 by waddlesplash, 12 months ago

Resolution: fixed
Status: assignedclosed

Yes, then this ticket should be closed. We should probably continue investigating providing a multilib GCC by default, but I think there's already a ticket for that at HaikuPorts.

comment:28 by waddlesplash, 10 months ago

Blocking: 14796 added
Note: See TracTickets for help on using tickets.