Hacker News new | ask | show | jobs
by lmm 1056 days ago
Well-written applications will just work. Badly-written applications may require patches or be impractical to build at all, and some system software may not make sense on the architecture at all.

There's a whole lot of build infrastructure for Debian; by default the package maintainer doesn't need to do anything specific, building for all architectures will happen by default.

2 comments

I wouldn't go as far as telling something is badly written just because it's written to work on one platform. It can be an exceptional application even when it only works using a single platforms' intrinsics. Similarly a badly written application may work on many platforms
What kind of assumptions would badly-written applications make to make themselves impractical to cross-build?
Othar than word size (eg. i386 vs. x86_64), endianness (eg. PPC vs. x86), alignment (eg. ARM vs. x86) there's plenty of other low-level issues like parameter passing conventions, call frame handling, exception handling, presence or absence of optional instructions or registers, and a number of other subtle gotchas that could affect a port. Instruction probing is one of the ones we run into where everything builds find and fails at runtime.

If you're working at a high enough level you're probably fine. Like the difference between being an auto mechanic and using the app to hail a ride.

You're missing the biggest one, concurrency model.
In my packaging work I encounter hard coded assumptions about pointer width, endianness and presence of atomic operations.
All Debian packages are built natively. There is no cross build going on here.
During the initial port bootstrap process, the initial package set is cross-built using rebootstrap:

https://wiki.debian.org/PortsDocs/New#Bootstrap

Perhaps in the future Debian will be able to have cross-build-only architectures, that have hardware too slow to build software.

Assembler optimizations without fallback to pure C for other architectures for example.