Rebuild against new calamares version. Usually the upstream-compat CI
job should have warned about this, but it didn't. Turns out, that abuild
did not trace the dependencies of calamares-extension-mod-mobile because
the main package had arch="noarch".
Related: https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10022
Add the dependency to properly support file transfer between sandboxed
applications. Currently they can be used with flatpak (e.g. for quickly
testing out applications, not a recommended way to applications) and long
term we could use this in combination with apparmor for natively packaged
applications.
Notably the KDE version is already getting pulled in by when installing
postmarketos-ui-plasma-*.
Wireguard's userspace tool 'wg-quick' requires certain network and
netfilter options in the kernel config to be enabled, since it uses
policy routing and some 'iptables' modules. An overview of the options
and why they are required can be found in pmaports#909.
NOTE: after rebasing this patch on the one that enables anbox related
kconfig options, only CONFIG_IP_MULTIPLE_TABLES=y was left.
NeoChat is available in community, and will be shipped by default on the
PinePhone KDE CE, so let's do the same
[ci:skip-vercheck]: just modifying _pmb_recommends
This adds a patch that enables signing blobs via flag.
Certain recent Asus Tegra devices (tf201, tf300, tf700/1)
only accept signed blobs, this was implemented upstream
but seems that some lines got deleted.
This also updates upstream repository to use PMOS one.
This patch checks if deviceinfo_bootimg_blobpack is "sign"
in that case it passes signing flag for devices that require.
Devices (tf101) that don't use signing will continue working
when passing "true" as now.
This adds sleep-inhibitor as a dependency when elogind is present, and
installs a conf for it with some plugins enabled that are beneficial to
devices running pmOS. The elogind suspend hook is dropped.
This resolves issues where suspend is aborted in the hook *after*
PrepareForSleep is sent over dbus (which might cause some things to
disable radios/modems, etc for suspend).
The 'period' in the conf is in minutes, a value of 0.1 is 6 seconds,
which seems reasonable for releasing the lock when conditions for
inhibiting no longer apply, without spinning the CPU too frequently.
The calamares module and branding was made distro-agnostic and moved to
calamares-extensions.git. A new "make install" target inside
postmarketos-ondev.git installs all files, so we need less logic in the
APKBUILD.
Replace lightdm with tinydm. Add xset dependency to disable screen
blanking.
Don't use cmake to copy the files to the target path, because it would
install to the wrong directory:
/usr/lib/qml/QtQuick/VirtualKeyboard/Styles/Plasma/
instead of:
/usr/lib/qt5/qml/QtQuick/VirtualKeyboard/Styles/Plasma/
I've spent some time trying to figure out why it does that, but could
not find it right away. This is just a legacy component, so not worth
spending much time on this detail.
Adds support for pinephone
Adds migration away from python and to C for event path discovery and touch dimensions
[ci:skip-build]: already built successfully in CI
Let all packages depending on tinydm depend on tinydm-openrc too. This
is needed to make sure that tinydm-openrc is installed, before the
tinydm service is enabled in the UI's post-install scripts.
This was not an issue because tinydm currently depends on tinydm-openrc.
But that's a hack and will be removed when upstreaming tinydm to alpine.
[ci:skip-build]: already built successfully in CI
Fix failure in the osk-sdl "keyboard-font" check when there is a second
key starting with "keyboard-font" (as in osk-sdl MR 105):
==> initramfs: creating /boot/initramfs-postmarketos-allwinner-extra
ERROR: Font specified in /etc/osk.conf does not exist!
ERROR: postmarketos-mkinitfs-0.17-r0.trigger: script exited with error 1
Do not change config files in post-install scripts anymore (with sed
commands or by other means). Instead, ship the files inside the packages
and use "replaces", so apk allows the package to overwrite files from
other packages:
https://wiki.alpinelinux.org/wiki/APKBUILD_Reference#replaces
Notes on specific files:
* /etc/elogind/logind.conf: original file only consists of commented out
compile defaults. Copy them over for now. In the future we should be
able to install our own config into a .d directory, without all the
comments: 8358fc5950
* /etc/fstab: original file only has /dev/cdrom and /dev/usbdisk
entries, which are not useful for postmarketOS:
https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/alpine-baselayout/APKBUILD
* /etc/motd: reformat the text, add link to the chat
* /etc/conf.d/syslog: original file only contained 'SYSLOGD_OPTS="-t"',
make the override file as if the sed statement from post-install was
executed
* /etc/wpa_supplicant/wpa_supplicant.conf: post-install script touches
this file. We probably added it back in 2017 in relation to enabling
D-Bus (though the PR does not mention it explicity), but at least with
the current init.d script of NetworkManager, we can simply have '-u' in
wpa_supplicant_args:
https://github.com/postmarketOS/pmbootstrap/pull/578https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/wpa_supplicant/wpa_supplicant.initd
* /etc/sudoers: base on original /etc/sudoers, but remove all the
commented out stuff except for the visudo note at the top. We could
also put a file in /etc/sudoers.d, but since the wheel line is present
in the original /etc/sudoers and only commented out, it would be kind
of unexpected to enable it in a file in /etc/sudoers.d. I prefer this
stripped down version of the file, that is easy to read.
Refactor the install code to be generic, so we only need to add the new
path in one place when adding a new file. Put the full path into the
filename to make this possible.
I've tried to mimic the final directory structure in the aport first
(e.g. $pkgdir/sbin/swapfile -> main/postmarketos-base/sbin/swapfile),
but that leads to conflicts as abuild only takes the filename for
checksums (conflict with etc/conf.d/swapfile):
https://gitlab.alpinelinux.org/alpine/abuild/-/issues/10013
We don't really need checksum verification for the files shipped in the
same directory (not downloaded), but nevertheless this is a bug. It
leads to confusing behavior and might be fixed by letting abuild demand
that there is only one source file with the same name, as I suggested in
the issue linked above. So let's avoid this altogether with the flat
file name.
wireguard needs the ipv6 multitable option to make a seperate routing
table for the inside and outside vpn part of the network.
[ci:skip-build]: already built successfully in CI
Even on the PinePhone KDE community edition Megapixels will be shipped
instead of plasma-camera, so let's do the same
The resulting package doesn't change, _pmb_recommends is only a
pmbootstrap thing, so we don't have to bump pkgrel
[ci:skip-vercheck]
Battery percentage monitoring support:
* lg-hammerhead
* samsung-klte
Mobile internet support:
* fairphone-fp2
QCOM_SOCINFO for querying information from the SoC
[ci:skip-build]: already built successfully in CI
Update ov5640 autofocus related patch. We had it working with Martijn's
patch in 5.9.1_git20201019-r2 (MR 1654), but then dropped the patch in
favor of the patch that was added to megi's tree in 5.9.3_git20201101
(MR 1678).
It turns out that the patch added to megi's tree was different than the
patch we were carrying, it was a WIP version where loading the autofocus
firmware did not work anymore.
Megi decided to drop the autofocus patch from his tree for now, as the
firmware uploader takes more time in Martijn's proper patch. According
to Martijn it takes about a second, which seems reasonable for the
postmarketOS use case. I've added the previous version again as
out-of-tree patch.
Martijn found that for some reason the continuous autofocus still
doesn't want to start with this kernel and current patch version, as for
some reason the firmware load fails. But he extended the patch to make
autofocus work again with "tap to focus" at least.
0005-dts-pinephone-Disable-flash-led-in-OV5640-node.patch is not needed
anymore, the same change is in megi's tree.
Co-Authored-By: Martijn Braam <martijn@brixit.nl>
[ci:skip-build]: already built successfully in CI
The devices supported by this package are Galaxy S3 (GT-I9300, GT-I9305,
SHV-E210K/L/S) and the Galaxy Note 2 (GT-N7100, GT-N7105) - a family of
boards also known by the codename "Midas" - and the Galaxy S2 (GT-I9100)
From this list, only the i9100 doesn't support the bootimg method.
Because of this, this kernel package is using the isorec method for all
the devices on the list. Additionally, for the midas devices, there is
no problem with this because the boot.img file is, in fact, a copy of
the kernel+initramfs on the pmos boot partition and what the isorec
initramfs does is actually to load the initramfs on that partition
directly (at least on my understanding).
Use the dtb-appended kernel file, e.g. postmarketos-exynos4-dtb instead
of postmarketos-exynos4, if it is available. This is needed to flash a
mainline kernel with appended dtb to isorec devices.
This patches from the megi solves the issue of the MIPI-DSI panels
framerate being at 2/3rd of actual or expected rate.
[ci:skip-build]: already built successfully in CI
Squeekboard >= 0.10.0 looks for an a11y setting to determine if it
should show up on the screen. This sets the config setting to 'true' so
that it shows up by default. It can apparently be toggled off in Gnome
Settings, but I haven't found the UI switch to do that yet..
Switch from the 5.8.x kernel with allwinner specific patches to megi's
5.9 based tree. He drives the PinePhone related kernel development
forward like no other, his tree and changes are well documented on
xnux.eu, and he frequently publishes tested "build this one" commits with
the latest improvements. It makes a faster and less time consuming
workflow to simply package these versions (after a smoke test) into
postmarketOS edge, and after some time to catch possible regressions
ship the same version in postmarketOS stable.
This kernel should make HDMI work for most people, and improve call
quality (thanks to smaeul's patches, which are integrated into megi's
tree).
Kernel config changes:
* Enable MODEM_POWER in the kernel config, among other improvements this
allows us to get rid of the 30s delay on power off.
* Enable CONFIG_DRM_PANEL_ILITEK_ILI9881C (new PineTab panel)
* Enable CONFIG_ZRAM
* Enable CONFIG_HID_MULTITOUCH
Related: https://xnux.eu/devices/feature/modem-pp.html#toc-modem-power-driver
Changelog: https://megous.com/git/linux/tag/?h=orange-pi-5.9-20201019-1553
Co-Authored-By: Martijn Braam <martijn@brixit.nl>
Co-Authored-By: Clayton Craft <clayton@craftyguy.net>
This adds emoji support to the squeekboard emoji picker, and to any apps
that might want to display emojis (chatty, firefox, text editor, etc)
Thanks @vurpo for the tip.
We have tried out lightdm-mobile-greeter for three weeks, but let's remove
it again from the default install.
The greeter behaves completely different from the Phosh (or any other
UI's) lockscreen, therefore it provides a bad user experience. Not only
the design is different, but it also can't display the same information
as the Phosh lockscreen. You can't accept a call coming in while the
greeter is displayed, and whatever other features will be added to the
lockscreen in the future would not be in the greeter (e.g. making a photo
without logging in, emergency calls without login, ...).
It's clear to me now, that postmarketOS in the default installation
should install one UI in single-user mode, and that UI should use its
lockscreen to display all login screens. The case of having multiple UIs
installed at the same time is used rarely, so instead of optimizing for
it, document how to enable a greeter after the installation in the wiki:
https://wiki.postmarketos.org/wiki/Configure_postmarketOS_for_multiple_UIs_or_users
Besides the strong reasons above to ship with no greeter at all, we had
problems with lightdm-mobile-greeter in particular:
* It did not work with Plasma Mobile
* When HDMI was plugged in, the greeter was not usable (especially
annoying, because Phosh tends to crash after plugging in HDMI, so it
would go back to the greeter which then means you need to reboot)
This reverts commit be693339ec.
cpio expects a newline-separated list of files from stdin by default,
and you can change that to a NULL-terminated list of files by using the
'-0' switch.
Previously we were passing a NULL-terminated list ('-print0') and using
cpio with the default setting. For some reason busybox cpio works with
that but GNU cpio doesn't like that and generates an initramfs without
any files (as it only gets "a single file").
With this change the initramfs generation works fine with both busybox
cpio and gnu cpio.
Fixes#815
- Update to Linux 5.9-rc7
- Add "BAM DMUX" driver as network interface to the modem
for mobile data
- Major rewrite/cleanup of all MSM8916 device trees
- Lots of cleanup everywhere
- I hope I did not forget something :)
Devices:
- bq-paella: Add vibrator
- samsung-j5nlte: Add display
- samsung-a2015 (a3u/a5u): Fix USB-OTG detection
- "Initial" support for Xiaomi Redmi 2 (wingtech-wt88047)
- USB
- Storage (eMMC, SD card)
- Display, brightness control
- Touchscreen, buttons
- IMU (accelerometer+gyroscope)
- Notification LED
- Sound
- WiFi, Bluetooth
- Modem
- Initial support for Motorola Moto E 2015 (motorola-surnia)
- USB
- Storage (eMMC, SD card)
- Display, brightness control
- Touchscreen, buttons
- WiFi, Bluetooth
- Battery status
- Initial support for Samsung Galaxy Grand Prime
- USB
- Storage (eMMC, SD card)
- Initial support for Oppo Mirror 5s (oppo-a51f)
- USB
- Storage (eMMC, SD card)
- WiFi, Bluetooth
Since
https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/12086 the
Cheese application won't be installed anymore unless explicitely
specified. Applications that usually depend on it now depend on
cheese-libs instead.
This means we can stop hiding it and allowing people to install it
themselves if they want too
This application doesn't work 100% when launched from the 'desktop', but
it is still useful as a handler for opening image files from a file
browser, so the icon is hidden.
eog is a nice image viewer that works pretty well on a
touchscreen/mobile display.
Nemo is a file manager from the Cinnamon desktop project, which forked
from Nautilus some time ago. It is much more usable than Nautilus on a
touchscreen/mobile display.
Set eog as default app in mimeapps.list, so it even works when hiding
the launcher with postmarketos-hidden-desktop-entries (we'll hide it,
because it doesn't work when opened directly; no image is shown and
opening a file does not work either). The list of associated mimetypes
is taken from here:
https://gitlab.gnome.org/GNOME/eog/-/blob/master/data/org.gnome.eog.desktop.in.in
We now trigger on files in /usr/share/postmarketos-mkinitfs-triggers.
This can be used by other packages like osk-sdl for which an updated
version would otherwise never be used in the initramfs
Enable the freezer cgroup. This allows a user to start a large application like
firefox, freeze it to save some power, and unfreeze it to continue using it,
without having to restart the application completely. Stopping and restarting
the application completely results in more battery usage as well as lost state.
Signed-off-by: Serge Hallyn <serge@hallyn.com>
Sloppy patch that makes the displayport alt-mode output signal work on
the PinePhone convergence edition. Proper fix is in the 5.8 tree
[ci:skip-build]: Martijn made sure that it builds and works. This is
time critical, so skip the CI build.
Fix mobile-config-firefox not replacing postmarketos-config-firefox on
upgrade. Without the pkgver in provides, apk only considers
mobile-config-firefox as virtual package name, not as replacement.
Verified with the CE factory image:
$ sudo apk upgrade
...
(20/29) Purging postmarketos-config-firefox (1-r0)
(21/29) Installing mobile-config-firefox (1.0.1-r1)
...
postmarketos-ui-plasma-mobile has plasma-camera in _pmb_recommends.
plasma-camera does not build for x86, because mpg123-libs-1.26.3-r0 is
still broken in Alpine edge repos (aports#11807).
Disable postmarketos-ui-plasma-mobile for x86 again, so the CI check
test_aports_ui doesn't fail anymore with:
postmarketos-ui-plasma-mobile/APKBUILD: package 'plasma-camera' from _pmb_recommends not found for arch 'x86'
[ci:skip-vercheck]: only modifying arches
[ci:skip-build]: unfortunately, postmarketos-ui-plasma-mobile fails to
build for x86_64 too due to broken libdv in Alpine (aports#11892).
I'll create MRs to Alpine to fix the broken depends, so we should be
able to enable it again soon.
Related: https://gitlab.alpinelinux.org/alpine/aports/-/issues/11807
Related: https://gitlab.alpinelinux.org/alpine/aports/-/issues/11892
Pressing power button should not power off a device. Although it is
expected on desktops and laptops, it isn't expected on phones and
tablets. Instead it should just turn off the screen or go into a deep
sleep, but that isn't handled by elogind. So let elogind just ignore the
button altogether.
Also re-order the dependencies alphabetically while we're touching the
package anyway
Previously we added the header in the kernel packages but as we already
add the ramdisk header here and to simplify the process we also add the
addition of the kernel header into mkinitfs.
With the new mobile-config-firefox, the window width is small enough
that the window does not need to be scaled. This looks better overall,
and avoids scaling glitches.
New version does not just support Firefox 68 (firefox-esr in Alpine 3.12),
which is going to be EOL soon. It also supports the new ESR 78
(firefox-esr in Alpine edge, soon also in 3.12, supported until ~2021-04)
and 79 (current stable "rapid release" version; firefox in Alpine edge).
The source was moved to a dedicated git repo, so other distributions can
also use it. Keep the distro-specific links here in a separate HTML
file, so they can be modified without changing
mobile-config-firefox.git.
Related: https://gitlab.com/postmarketOS/mobile-config-firefox
- Update to Linux 5.8
- samsung-skomer:
- Fix accelerometer mount-matrix
- Fix some potential display issue(s)
- Enable touchscreen driver in kernel config
[ci:skip-build]: already built successfully in CI
See the patch descriptions for more details. All patches will be
submitted upstream (patch 0001 has already been submitted more than half
a year ago but hasn't had any activity yet).
"plasma" and some related packages are currently missing in Alpine edge
armv7 due to a cyclic dependency. Let's disable all packages depending
on plasma for armv7 temporarily, to get the pmOS edge armv7 repo up
again.
[ci:skip-build], [ci:skip-vercheck]: only arch line changed
Related: build.postmarketos.org#72
Add mimeapps.list, so links clicked in postmarketos-welcome and other
applications properly open in firefox. Without this patch, they just
don't open at all.
Bump the pkgver instead of the pkgrel, so the APKBUILD is in sync again
on both master and v20.05 (right now, the pkgrel on v20.05 is ahead by
one, otherwise the file is the same).
Related: https://help.gnome.org/admin/system-admin-guide/stable/mime-types-application.html.en
Disable the first run screen in GNOME software, which invites the user
to browse and install apps. We do not want people to use GNOME software to
do that when they open it for the first time in postmarketOS after
installing, we want them to do updates. So this dialog is misleading for
our users, and will lead to a bad experience for those who follow what
it suggests.
I think there's more wrong with that dialog (in context of postmarketOS),
more detailed reasoning and screenshot in:
https://gitlab.com/postmarketOS/pmaports/-/merge_requests/1449#note_385456592
Replace firefox with firefox-esr, remove epiphany. With the current
version of epiphany, the postmarketOS wiki doesn't even load every time,
so that's not something we want to ship.
Add policies.json and prefs.js to configure Firefox (yes, you need both
to be able to control all this):
Mobile improvements:
* Enable zooming with fingers
* Mobile user agent (from tor browser for android)
Privacy improvements:
* Disable search suggestions, so URLs do not get sent to search engines
as they are getting typed.
* Disable Firefox studies
* Disable Telemetry
* Set DuckDuckGo as default search engine, not Google
Uncluttering (screen space, remove broken features, less distractions):
* Move all buttons to the overflow menu and remove spacers around the
address bar
* Empty "new tab" page (loads faster, no annoying "top sites" etc.)
* Disable developer tools, so the hamburger menu fits the screen of the
pinephone. These aren't really useful on phones anyway.
* Disable "Firefox Screenshots": the feature did not work with the mobile
resolution in Phosh.
* No default bookmarks from Firefox
* Disable First Run Page
* Disable Post Update Page
* Disable "User Messaging" (What's new, Extension/Feature
Recommendations, Urlbar Interventions)
Add a local html file that serves as lightweight default homepage. It
links to the postmarketOS blog and wiki, explains that this is desktop
firefox with mobile configuration and explains how to change settings
and install addons (with a direct link to ublock origin). Users can
override the homepage, new tab page, search engine, search suggestions
pre-configured by this package directly in the UI.
I chose Firefox ESR, because:
* It fits the screen better: the "new tab" button is bigger, the menu
opening when you click the top-right button actually fits the screen,
with all its submenus. There are zoom controls in the same menu, which
make the preferences pages very usable.
* It's possible to override the default search engine with a policy
file; that's not possible in non-ESR firefox (we'd probably need to
change it in the sources).
Related: https://github.com/mozilla/policy-templates
Co-authored-by: Martijn Braam <martijn@brixit.nl>
In phosh, we have broken Cheese (Camera) and Extensions (from GNOME shell)
icons in the launcher. They get dragged in via dependencies, so the
easiest way to disable them is just overruling the .desktop icon. We can
make Cheese visible again in a post-install script (just check if it
points to nodisplay.desktop and delete the link) once we have it working.
Hide icons for terminal programs (htop, nvim, vim) as well as "Firefox
Safe Mode" too. If somebody really wants to use the FF safe mode, they
can do so via terminal.
Have a simple initial version, maybe make it more sophisticated with
UI-specific hidden icons later (right now, it doesn't make sense to
install this in normal GNOME, because there you would need
org.gnome.Extensions). (There is "NotShowIn=phosh" (untested), but using
this would mean that we need to keep all the information of the original
desktop file for the UIs that will display them; we can't just use the
symlink trick. I'm not sure if we want that at all, but it's
definitively over-engineered for now.)
The p? is not redundant. Without it, the p in mmcblk0p2 for example does
not get cut off, meaning the resulting device is not "mmcblk0" but
"mmcblk0p". My bad, sorry for the breakage.
Fixes: 9f6600ba ("main/postmarketos-mkinitfs: rm pmOS_deleteme")
Fixes: 9d86f6fe ("main/postmarketos-mkinitfs: resize: unallocated space check, even if forced")
Remove the "pmOS_deleteme" partition left behind by the on-device
installer, if it exists. Let the existing resize_root_partition() extend
the root partition over the newly gained space (and rest of the storage
device) right afterwards.
In resize_root_partition(), put the unallocated space check into an
extra function has_unallocated_space(). Run it even if
PMOS_FORCE_PARTITION_RESIZE is used, so we don't attempt to resize the
partition if there is no free space.
While at it, change "sed 's/p?2$//'" to "sed 's/2$//' in an already
modified line, because it means the same thing and is less confusing
(? in regex means: 0 or 1 time).