4 ms·
When Debian is ported to a new architecture does that mean something special needs to happen to all of the packages in the repository for them to work on that n
by sohrob 3y ago
When Debian is ported to a new architecture does that mean something special needs to happen to all of the packages in the repository for them to work on that new architecture?
- jffry 3y agoSounds like they need to cross-compile enough stuff to get a bootable system in the new architecture: https://wiki.debian.org/DebianBootstrap#Cross-building https://wiki.debian.org/DebianBootstrap#Cross-building
- pabs3 3y agoRelated link: https://wiki.debian.org/PortsDocs/New#Bootstrap https://wiki.debian.org/PortsDocs/New#Bootstrap
- lmm 3y agoWell-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.
- KingLancelot 3y ago[dead]
- totetsu 3y agoWhat kind of assumptions would badly-written applications make to make themselves impractical to cross-build?
- ilyt 3y agoAssembler optimizations without fallback to pure C for other architectures for example.
- sanxiyn 3y agoAll Debian packages are built natively. There is no cross build going on here.
- pabs3 3y agoDuring the initial port bootstrap process, the initial package set is cross-built using rebootstrap: https://wiki.debian.org/PortsDocs/New#Bootstrap 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.
- bregma 3y agoOthar 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.
- smallpipe 3y agoYou're missing the biggest one, concurrency model.
- capitol_ 3y agoIn my packaging work I encounter hard coded assumptions about pointer width, endianness and presence of atomic operations.
- hampereddustbin 3y agoI 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
- sanxiyn 3y agoDebian packages declare their supported architectures. "all" means it is architecture independent and will be available to a new architecture without rebuild. "any" means it is portable and will be available to a new architecture by rebuilding. In both cases no source change is needed. Special packages (for example, compilers generating native code) enumerate supported architectures. For these packages, source change is needed, at least adding the name of the new architecture to the enumeration. But usually that's not the difficult part.
- planede 3y agoMaybe some packages may need special attention, like various language runtimes and browsers that normally do JIT compilation to the target architecture. I guess some of these might work in interpreted mode, but not as efficiently.