The steps I took to get Elive onto the Pinebook Pro that came with Manjaro Plasma desktop installed.
To be clear Manjaro is excellent with only a few minor bugs, like an unchangeable keyboard layout if you don't know how to set it from the command-line and an extremely jittery touchpad that just cannot be configured well enough through the GUI.

As a first I got Debian Bullseye Sid onto a micro-SD card using the script from https://github.com/daniel-thompson/pinebook-pro-debian-installer an excellent way of installing and might even be nicely alterable to be used for an Elive installation.
For now my interest is first and foremost to see if the default E16 Beta desktop for Elive will install and run.
Checking out the Bullseye arm64 repositories I see there's Enlightenment (E24) available so I installed that straight out with a reasonable result excepting some minor caveats like battery-sensor not working and network-manager and connman getting in each others way.

That looks alright anyway so it was time to see if E16 would run. As there are no .deb packages available for E16 other than the Elive ones, I was left with the option of making my own and/or installing from source. So I did.
I downloaded the code through https://www.enlightenment.org/download which gives a link at Sourceforge https://prdownloads.sourceforge.net/enlightenment/e16-1.0.22.tar.gz
Unpacked the tar.gz and ran the commands (./configure, make, sudo
make install) which naturally required quite a few extra
(especiall build- and dev-) packages that weren't installed by default.
All in all, after a few tries E16 installed without errors. Alas it didn't show up in lightdm (I could change that in the lightdm.conf file but wasn't in a hurry) and simply started it from a virtual console i.e TTY1 with:
startx e16 -- :1

There are some caveats like that it only looks for themes and stuff in the ~/.e16 directory and not the settings in /usr/share/e16 but it allows the changes none the less.
using the elive retrowave-theme here
After that it was time to build the debian package in the downloaded source directory of E16 using the command:
checkinstall --install=no --review-controlWhere naturally “checkinstall” had to be installed as well as some more dev stuff. I added the install=no option to avoid installing straight from there and the review-control to be able to discern it from the package I was aiming to get from the Elive repos. These settings gave me the .deb, which after installation behaved exactly like the source-code install did ….. exactly as it should.
So now knowing it could all run on the machine it was time to get down to the slavery of:
Being a lazy bugger and hating repetitive tasks, I started off by getting shell commands to do the heavy lifting for me….and Linux being Debian naturally all commands are available.
To get a nicely formatted list of all installed packges:
dpkg-query -l

and to keep from having to run that again and again save it to a txt file and just wanting a list of the packges line by line:
dpkg-query -l > installed.txt
Next sort out which ones came from the elivecd repos:
grep Package /var/lib/apt/lists/repo.buster.elive.elivecd.org_dists_buster_*_Packages |awk '{print$2;}'> elivecd-installed.txt
and I saved the output to a file again.
And now to get a file containing all the “all” tagged .debs in “installed.txt” using grep and format it into another file.
less installed.txt |grep all |grep -v amd64 |grep -v i386 |awk '{print$2;}' > installed-all-packs.txt
Where the “"grep -v” additions are there to filter out packages that have “all” in their name or description. To get only the amd64 package names, you guessed it:
less installed.txt > grep -v all |awk '{print$2;}' > installed-amd64-packs.txt
Now do a comparison of the files to make a list of the packages using “comm”
comm -12 <(sort elivecd-installed.txt) <(sort installed-amd64-packs.txt)
I did the repacking on my Elive (amd64)machine which handily allows repackaging of installed packages (with “dpkg-repack”) to a different architecture. Wanting to be in control I didn't just feed the list of amd64 packages into the repack command but not wanting to type the same command over and over again … I made a small repack script that asked for the package name, repacked it and after successfully creating a .deb, copy it over to a directory (repository) on an external USB disk.
#! /usr/bin/bash
{
echo -n "Name of package: ";
read;
sudo dpkg-repack --arch=arm64 ${REPLY} && cp ${REPLY}*deb /media/triantares//Samsung_T5_BU/Arm64/ && echo "Copied to USB, Bye!"
}
After which I'd also want to copy over the “all” packages from the Elive repos to accompany the created arm64 packages into the local repo:
DL=`cat installed-all-packs.txt` # setting the variable list
echo $DL # check the output, just to be sure.
apt-get download $DL # download the lot to the current directory
unset DL #won't be needing that variable anymore
cp *.deb /media/triantares/Samsung_T5_BU/Arm64/ #copy to the repo
There were a few packages that couldn't be found so I had to repack those few from my system with my repack script albeit setting “–arch=all” this time.
Next it was time to prepare the repo so it can be added to the
/etc/apt/sources.list on the Pinebook. To do that I need to generate a
Packages.gz and a Release file in the repo. So “cd” into the repo and run
"dpkg-scanpackages . /dev/null > Release" and if there's
no errors "dpkg-scanpackages . |gzip -c9 > Packages.gz"
—- and it's done.
And subsequently put it up on my server so I always have access.
