Plasma-framework 5.55.0 isn't building for aarch64 without this patch.
Aleix Pol ran into the same problem with flatpak builds, and created the
patch: https://codereview.qt-project.org/#/c/253276/
Fails to build for armhf with the error below, and doesn't seem to be
tested on anything but x86_64 anyway according to the project's
README.md file. I did not report this upstream, because we are using
the version from Purism's repository that is at 1.2.31. Upstream is
already at 1.2.68, which may have fixed this already. So if somebody
needs to have it working for anything other than x86_64, we should try
the upstream version first.
[ 83%] Creating preprocessed clst file /home/pmos/build/src/mfgtools-uuu_1.2.31/uuu/gen/emmc_burn_all.clst
gen_txt_include.sh: applet not found
make[2]: *** [uuu/CMakeFiles/uuu.dir/build.make:63: uuu/gen/uuu.clst] Error 127
make[2]: *** Waiting for unfinished jobs....
gen_txt_include.sh: applet not found
make[2]: *** [uuu/CMakeFiles/uuu.dir/build.make:68: uuu/gen/emmc_burn_loader.clst] Error 127
gen_txt_include.sh: applet not found
gen_txt_include.shmake[2]: *** [uuu/CMakeFiles/uuu.dir/build.make:73: uuu/gen/emmc_burn_all.clst] Error 127
: applet not found
make[2]: *** [uuu/CMakeFiles/uuu.dir/build.make:93: uuu/gen/sd_burn_all.clst] Error 127
make[1]: *** [CMakeFiles/Makefile2:184: uuu/CMakeFiles/uuu.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 83%] Built target uuc
make: *** [Makefile:130: all] Error 2
Do not replace compiler-gcc.h. This is necessary now, as we are
replacing compiler-gcc.h by default again, as it is needed for most
kernels. Not increasing the pkgrel to avoid unnecessary rebuild, I have
verified that this works.
NOTE: in the last commit message, I wrote about OVERWRITE_GCC=0. But
the variable is called REPLACE_GCC, as I've decided to rename it before
submitting. I forgot to change it in the commit message.
[skip ci]: this kernel takes more than one hour to build, so it won't
finish in CI.
Instead of never overwriting compiler-gcc.h if it exists, overwrite it
by default except if OVERWRITE_GCCH=0 is set in the environment.
Most kernels *do* need this file replaced and won't build without this
patch.
When we bump the version in pmaports.cfg and the min. required pmaports
version in the pmbootstrap code, then forks of pmaports.git must be
rebased on pmaports.git master. Otherwise "pmbootstrap init" fails, and
because we have it set to quiet (so the output does not distract from
the interesting output if everything goes fine), there was no meaningful
error message yet.
Wrap the "pmbootstrap init" call and display a helpful message that
tells the user to rebase.
Right now, this doesn't build anymore, it is failing with:
/home/pmos/build/src/itinerary-c47772e49de6662acd7769d5c8cef94379ea7bcf/src/app/reservationmanager.h:21:10: fatal error: KItinerary/ExtractorRepository: No such file or directory
#include <KItinerary/ExtractorRepository>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I've tried to update it to the latest commit, but then it fails with
another error. Turns out, this package depends on kitinerary (with a
k!), and whenever we update that, we also need to update this package
to the latest commit. Unfortunatelly, itinerary does not have tagged
versions yet.
So I would like to remove it for now, it does not seem like anybody is
using it at this point, and so it's just additional maintenance effort
for nothing. We could package it again, when it has tagged versions and
is therefore easy to update together with kitinerary.
Remove kitinerary too, because it isn't used by anything else.
Add python2 to makedepends, so it builds in strict mode for armv7.
Otherwise it would fail with:
checking whether /usr/bin/python2 version >= 2.6... configure: error: too old
Turns out we do need to fork this aport, as it builds qgpgme, which
Alpine's aport does not build as of now. Updated to 1.12.0 and changed
the pkgver to 9999, so it does not conflict with Alpine's aport.
We had probably added this, because no binary package was present in
Alpine at the time. Now it is present, and the package has been updated
in Alpine. No need to keep this outdated version around.
Run 'pmbootstrap aportgen gcc6-aarch64 gcc6-armhf' again and commit
the resulting changes, as these packages are meant to be always
auto-generated and therefore in sync with main/gcc6.
This changes the pkgver to 9999, as it was required in main/gcc6 to
avoid conflicts with Alpine's gcc6 package.
Rename test_aports_kde.py to test_aports_framework_versions.py and
generalize all referenes in the code from "KDE frameworks" to
"frameworks". Check that all Qt packages have the same version, support
having the real version in _pkgver and pkgver=9999.
Scan all pmaports, not only the ones in the kde dir. Do not output all
packages of the "other" category anymore, the package count is enough.
Let pmbootstrap properly parse the package URLs, this is required for
the next commit where we start comparing the pkgver of all QT packages
- based on the URL like we do it for the KDE packages.
Regenerate these aports, so the test case does not complain anymore
that they are outdated. Adds armv7 to the arch lines, as that is the
aportgen change which was done in pmbootstrap!1730.
Workaround for a build error on aarch64, where the binary package
repository is currently stuck. Compiling it for aarch64 like this:
$ pmbootstrap build --strict --arch=aarch64 qemu
Resulted in:
>>> qemu: Analyzing dependencies...
ERROR: unsatisfiable constraints:
openssl-dev-1.1.1a-r0:
conflicts: libressl-dev-2.7.4-r2[pc:libcrypto=1.1.1a]
libressl-dev-2.7.4-r2[pc:libssl=1.1.1a]
libressl-dev-2.7.4-r2[pc:openssl=1.1.1a]
satisfies: curl-dev-7.62.0-r2[openssl-dev]
libssh2-dev-1.8.0-r4[pc:libcrypto]
libssh2-dev-1.8.0-r4[pc:libssl]
spice-dev-0.14.1-r3[pc:openssl]
libressl-dev-2.7.4-r2:
conflicts: openssl-dev-1.1.1a-r0[pc:libcrypto=2.7.4]
openssl-dev-1.1.1a-r0[pc:libssl=2.7.4]
openssl-dev-1.1.1a-r0[pc:openssl=2.7.4]
satisfies: world[libressl-dev]
libssh2-dev-1.8.0-r4[pc:libcrypto]
libssh2-dev-1.8.0-r4[pc:libssl]
spice-dev-0.14.1-r3[pc:openssl]
>>> ERROR: qemu: builddeps failed
Note that the only package not mentioned in both "satisfies" outputs is
curl-dev. The real questions are: why is libressl-dev getting pulled in
at all? (Alpine switched back from libressl to openssl, so this should
not happen). And why does this only happen for aarch64, but not for
x86_64 and armhf? But at least this patch unblocks the package builder.
Builds abuild-sign and abuild-tar.static without any dependencies, so
they can be used outside of an Alpine Linux system. We need this for
build.postmarketos.org.
In this CI test, we add the upstrem postmarketOS/pmaports.git
remote to the checked out git repository. Do not crash when it exists
already, so we don't need to remove it before each run when testing
locally.
* Move a comment that was after a line of code above that line. That
line was very long compared to all others in the file, and now the
file fits in 80 characters in every line, like PEP-8 recommends.
* Replace "folder" with "dir" in the comments (as I learned lately
that "folder" is only a Windows concept).
This reverts commit ee659a5bb4
and increases the pkgrels of all affected linux pmaports.
I have compiled *every single kernel* that was modified with this
commit, and it worked. That took 12 hours. So I'm pretty confident that
this is a good commit. Let's roll it out and go back to stability \o/
I'll kick off the binary repo building directly after pushing this, but
it will take some time until all binary packages are available again.
[skip ci]: it wouldn't finish in time.
Add -j1 to compiling the standby code, which is compiled separately
already. This change seems to make the kernel always compile, I've
tried it 6 times, 3 times of that with pmbootstrap's "--no-ccache"
option. It got past an error about 30 seconds into the build, which
happened roughly 2 out of 10 times:
gcc6-armv6-alpine-linux-muslgnueabihf-ld: cannot find standby.o: No such file or directory
I thought, this was related to gcc6 changes, or to changes in abuild,
but both were not the case.
Grant Miller confirmed that this fixed the build, he was able to
compile the kernel ten times in a row with this commit.
The purpose of this package was to fill in until it is built in Alpine.
However, it takes forever to build the foreign arch versions. That's
due to the fact that GCC is compiling it self, and then the distcc
cross compiler magic does not work. Not worth it. [skip ci].
Further adjustments. It would have been better if I tried to build
it first, sorry for that. Another patch is coming in the pmbootstrap
repo, which makes it work even without the gcc6 pmaport.
Copy Alpine's gcc6 aport to temp. They don't have it built for aarch64
and armhf at the moment. Due to dependency checks, this means we can't
build the kernels that need gcc6, even when cross compiling with
gcc6-armhf etc. See #138 for details.
Do not add --pixman-type to the commandline, when
deviceinfo_weston_pixman_type is filled out.
--pixman-type was enabled in Weston with a custom patch, that currently
prevents us from upgrading Weston (#136).
The option allowed working around broken framebuffer drivers in
Android downstream kernels, which reported the wrong color format.
But it only works for Weston, the right way to patch this would be
patching the kernels, and we have some approaches here:
https://wiki.postmarketos.org/wiki/Troubleshooting:display#My_screen_is_red.21
When rendering on framebuffer, always do software rendering. This
should make it possible to boot up Plasma Mobile on most devices with
downstream kernels, although terribly slow. Still better than a black
screen though. Tested and working on the samsung-i9100.
We can improve the code and possibly make the rendering mode
configurable per device once we experimented more with:
* llvmpipe vs. softpipe on various devices
* armv7 (around the corner in Alpine)
* a proper display manager like lightdm
Both depend on qt5-qtwebengine, which needs to be rebuilt in Alpine
after the soname bump of libavformat [1]. Disable them for now, so
plasma mobile can still be installed, and the pmbootstrap test case
that installs it runs through again.
[1]: https://github.com/alpinelinux/aports/pull/5586
These can be manually generated when one really wants to cross compile
from arm to x86_64. Usually this is not needed, so let's save the
compile time. [skip ci]
This covers most use cases and saves a lot of build time. Can be
changed on demand. Again, this simplifies package building as part of
the new build infrastructure effort. [skip ci]
Adjust the mime-type that gets used to find executables to
application/x-pie-executable and change the APKBUILD logic to print out
a meaningful error when the executables can not be found.
Also fix the broken patch logic (doesn't display an error anymore).
Check if all device packages have the same arch in their device
APKBUILD as they have in their deviceinfo. And that they have
!archcheck set in the options.
Use the device's architecture instead of noarch. Because the device
packages should never be built for other architectures, even if all
depends can be built for other arches as well.
This simplifies package building as part of the new build
infrastructure effort.
pmbootstrap has also been changed to output this by default in
aportgen.
They have been unmaintained and didn't build for months now.
Removing, so the new build infra structure can build all packages and
we don't need to exclude this folder anymore like we are doing now.
More information: <https://wiki.postmarketos.org/wiki/LuneOS_UI>
[skip ci]
We used to put a "compiler-gcc6.h" file inside every vendor kernel's
aport. This is redundant and only works with GCC6. With this patch,
a common "compiler-gcc.h" file will be used, that works independently
of the GCC version.
The file is from Decatf's android_kernel_samsung_p4 repository, where
it was taken from upstream Linux, but adjusted to work with older
vendor kernels (different #ifndef check at the top etc).
https://github.com/Decatf/android_kernel_samsung_p4/blob/bd0772df2132bf56cda78e7204facf434cd5aa40/include/linux/compiler-gcc.h
This introduces a new .shared-patches folder. New
"pmbootstrap aportgen" code will make use of this, and create symlinks
to the patches inside that folder when running
"pmbootstrap aportgen linux-..." (or using the new device wizard).
All kernels compile again, after the GCC 8 upgrade.
All 3.x kernels have been changed to use GCC 6 now, because we can't
say for sure that they boot with GCC 8 even if we made them compile
with that newer GCC. If someone wants to test a kernel for a newer
device which they can test, see the instructions on
<https://postmarketos.org/vendorkernel>.
The linux-sony-castor-windy 4.x kernel did not compile out of the box
with the latest GCC, so we set it to GCC 6 as well. This can probably
be fixed easily.
linux-teclast-x80-pro: removed Werror and updated to latest 4.14 kernel
from kernel.org, otherwise this would not compile anymore (tested with
both GCC 6 and 8, probably incompatibility with the latest binutils or
something).
This commit will take too long to compile in CI, so let's [skip ci].
I've compiled all kernels multiple times and fixed them up until all of
them were working again.
Related: #103
I thought only having specific symlinks was enough, and it was for one
kernel. However, to make sure it works with all kernels, let's just add
symlinks for all the binutils.
* remove everything that causes conflicts when installing gcc6 and
gcc6-armhf side by side
* fix up the existing "if cross compiling" code path to use the
/usr/gcc6 prefix
* link binutils binaries to the locations they are expected to be
by gcc (this took me hours to figure out....) as well as by the
linux build system with CROSS_COMPILE
* link all gcc binaries to /usr/bin/gcc6-*
Based on the last version from Alpine, but installed to /usr/gcc6 and
with pretty much everything disabled except for the C compiler.
We can probably throw out a lot of patches, and make the APKBUILD much
smaller. But let's focus on making it possible to compile old kernels
again first. There's still a lot to do for that, see #103.