Page to track building of ports for arm64. Bugs in bugzilla should be added as a dependency to [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=201763|the tracker bug]] ===== Overview ===== Most ports that build on amd64 do build on arm64, with the following notable exceptions: * ports that reference Intel-hardware or AMD-specific hardware. * ports that require Linux emulation. * ports that depend on rust (which [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251254|fails to build]] as of 20210127). * some of the more obscure languages (Pascal, Ocaml, Common Lisp). ===== Package build status ===== As of a [[http://ampere2.nyi.freebsd.org/build.html?mastername=main-arm64-default&build=p561528_s7ae27c2d6c|recent 13-STABLE poudriere build]] on the cluster, there were 799 IGNOREd ports (including zero blacklisted) and 265 failures, for a total number of SKIPPED 3049. (You may also view the [[http://ampere2.nyi.freebsd.org/jail.html?mastername=main-arm64-default|index]] to all the latest builds.) Some of the IGNOREd ports are expected failures for non-x86 architectures (e.g. no linux emulation support). This list attempts to help coordinate the efforts to fix the other ones. ===== Patches already available for testing ===== Please see [[https://bugs.freebsd.org/bugzilla/buglist.cgi?list_id=156782&order=short_desc%2Cbug_id%20DESC&product=Ports%20%26%20Packages&query_format=advanced&resolution=---&short_desc=arm64&short_desc_type=allwordssubstr|Bugzilla search on arm64]] or [[https://bugs.freebsd.org/bugzilla/buglist.cgi?list_id=156782&order=short_desc%2Cbug_id%20DESC&product=Ports%20%26%20Packages&query_format=advanced&resolution=---&short_desc=aarch64&short_desc_type=allwordssubstr|Bugzilla search on aarch64]] and "attachment is patch"; sorted by Summary (which is usuallly portname) ===== Build failures ===== ==== Build failures that are already known ==== These ports have already been marked **BROKEN** or **IGNORE**. * **BROKEN** is for ports that should be expected to build on the arch, but have failures. * **IGNORE** is for ports that are not expected to build on the arch. In general only the first case is worth working on; however, port maintainers are inconsistent in their use. The best way to browse these problems: * go to, e.g., a [[http://ampere2.nyi.freebsd.org/build.html?mastername=main-arm64-default&build=p561528_s7ae27c2d6c|recent 13-STABLE poudriere build]] on the cluster * scroll down to **Ignored ports** * right-click on **Reason** to sort alpha The **Search** textbox may be used to narrow down the results. Examples that should be relatively easy to address: * **asm** or **assembler**: uses x86-specific assembler * **c99**, **c11** Less easy: * **Blacklisted**: it was intentionally not built on the cluster. * **runaway** builds * **%%FreeBSD%% 13.0**: probably not your problem Finally, the //reason// may be missing. Contact [[/MarkLinimon|MarkLinimon]] if you need help. === Missing sbrk === **sbrk** was never available in any aarch64 release. All the ports that try to link with it [[/PortsBrokenWithSbrk|have already been marked BROKEN]]. But note that [[https://svnweb.freebsd.org/ports/head/graphics/graphviz/files/patch-lib-vmalloc-vmhdr.h?view=markup&pathrev=426075|this commit]] to graphics/graphviz was sufficient to fix one of them. :!: TODO item: investigate whether this is sufficient for all the others. ==== Build failures that are new ==== These fall into several categories: * ports that have recently been added * ports that are actually broken elsewhere (e.g. "everywhere", "only on -CURRENT", and so forth) * ports that newly fail on arm64. It requires some detective work to figure out which is which, but for now, let's narrow it down to the latter group. === New errors === These may have been caused by the change to the lld linker. Some changes have already been committed but not yet built on the cluster. Contact [[/EdMaste|EdMaste]]. * ld: error: can't create dynamic relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol * ld: error: unable to find libraries -lm, -lcrypto, -lssl, -lpthread, -lz, -lc (and so forth) * /usr/bin/ld: error: duplicate symbol: //%%<%%foo>// ===== How you can help ===== * As of 20210127, the failure of lang/rust is the most painful, blocking 2119. * [[/MarkLinimon|MarkLinimon]] is continuing to go through failures to classify errors, marking ports broken, and submitting patches. * Various people were working on lang/ocaml and games/oolite, but work seems to have stalled as of 20210127. * Some of the ports already marked BROKEN need to be investigated, starting with: | portname | affects | comments | | graphics/gegl | ?? | Segmentation fault in docs/gallery/ (currently blocked by lang/rust 20210127) | | net/asterisk* | 13 | NOT_FOR | | lang/luajit | 8 | no support for this architecture (yet) | | devel/tex-libtexluajit | 6 | Does not configure: error: Sorry, cannot preprocess lj_arch.h | | lang/spidermonkey185 | 2 | cacheFlush support is missing on this platform | ---- {{tag>Ports}}