The Mer Wiki now uses your Mer user account and password (create account on https://bugs.merproject.org/)
Wayland Nemo VM Image
m (→Setup Nemo Wayland VM: raw .ks link) |
(→Setup Nemo Wayland VM) |
||
Line 30: | Line 30: | ||
First of all, you need to create an image that you can use for your VM: | First of all, you need to create an image that you can use for your VM: | ||
− | * A working Mer SDK setup is required. If you have not installed Mer SDK yet, read [https://wiki.merproject.org/wiki/Platform_SDK] | + | * A working Mer SDK setup is required. If you have not installed Mer SDK yet, read [https://wiki.merproject.org/wiki/Platform_SDK#Mer_platform_SDK] until the "Basic Tasks" section (excluded). |
* Start the SDK, and run (inside the SDK): | * Start the SDK, and run (inside the SDK): |
Revision as of 21:17, 27 August 2013
Contents |
Intro
Hello guys :) It's faenil here,
I've been looking into making a Qt4-free, Wayland based i486 VM Nemomobile image... so that we can start porting core Nemo apps to Qt5 and, when all apps are ported to Qt5 harmattan components, start looking into QtQuickControls for Nemo's upcoming Glacier UI :)
Big thanks to Stskeeps and everyone who helped me in this project so far :)
Current status
After few days of hacking, we have a Nemo Wayland image ready! \o/
It's very basic, it boots to a QML Wayland compositor and uses the work-in-progress Qt5 version of the current Nemo homescreen ;) It should be enough to proceed to the next step: porting core Nemo apps to Qt5/QtQuick2!
You can find the status of current Nemo apps ports on the Qt5 ports page!
We need help porting apps! Most of the apps are already using Harmattan QML components (com.nokia.meego), so the porting work shouldn't take a lot of time ;)
Please join us and give a hand! :)
- YOU CAN HELP!! :)
- YOU CAN HELP!! :)
- YOU CAN HELP!! :) To know how, head to Qt5 ports page
If you want to help, please do not hesitate to come to #nemomobile (freenode IRC) and talk to me :) (nickname: faenil)
Setup Nemo Wayland VM
First of all, you need to create an image that you can use for your VM:
- A working Mer SDK setup is required. If you have not installed Mer SDK yet, read [1] until the "Basic Tasks" section (excluded).
- Start the SDK, and run (inside the SDK):
echo 5.9.68.173 repo.pub.meego.com | sudo tee -a /etc/hosts
and then
sudo zypper ar http://repo.pub.meego.com/releases/Mer-Tools/rolling/builds/i486/packages/ mer-tools
and
sudo zypper install syslinux-extlinux sudo zypper in -t pattern Mer-SB2-i486
- Now download the .ks file for the Wayland Nemo VM, and build the image using:
sudo mic create raw --record-pkgs=name --pkgmgr=zypp --arch=i486 KS_FILE_NAME.ks --tokenmap=MER_RELEASE:latest,NEMO_RELEASE:latest,SSU_RELEASE_TYPE:rnd,FLAVOUR:devel
This will create a "mic-output" folder and it will write the image (a .raw file) inside that folder.
- Run this command to convert the .raw to a .VDI VirtualBox disk image:
VBoxManage convertfromraw ./mic-output/nemo-i486-vm-wayland-sda.raw ./nemoWayland.vdi --format VDI
- Now open VirtualBox and create a new VM as explained in [2]
NOTE: YOU DON'T NEED THE "Finalizing the installation" step. Also, you don't have any .iso to set, instead go to
Settings->Storage->Sata Controller->Empty and then "Choose a virtual hard disk file" and select the .VDI you created earlier
NOTE: don't start the VM yet!
- Now use this command to set the resolution (you can change the resolution, but have to keep 32 bits):
VBoxManage setextradata "NAME_OF_THE_VM" CustomVideoMode1 "480x854x32"
- Now start the VM, and check that it boots. Currently, after the VM has finished booting you'll have a screen with black background and "Fingerterm" string on top left. That's the launcher, tapping on Fingerterm will open the terminal emulator, which currently only works in landscape, so it's a bit useless, but there's an almost ready QtQuick2 port of fingerterm, so you will have a working terminal very soon ;)
- If you want to contribute to Nemo, you also need a working SB2 target, read the next section to know how to create and setup the needed stuff :)
Setup Wayland VM SB2 target
Once you have a working Nemo Wayland VM, you have to set up an SB2 target which is used to build packages from sourcecode. USE THIS .KS to create the SB2 target! To know how to do that, follow "Make your own target" and "Target setup" guides here [3], WITH A FEW EXCEPTIONS:
1) You can skip the mer-kickstarter commands (because you already have the .ks file)
2) When you get to the image creation command, use this instead (RUN THIS INSIDE MERSDK):
sudo mic create fs --record-pkgs=name -o /parentroot/srv/mer/targets/ --pkgmgr=zypp --arch=i486 KS_FILE_NAME.ks --tokenmap=MER_RELEASE:latest,NEMO_RELEASE:latest,SSU_RELEASE_TYPE:rnd,FLAVOUR:devel
3) and when you get to the sb2-init command in the tutorial, use this one instead:
sb2-init -L --sysroot=/ -C --sysroot=/ -m sdk-build -n -N TARGET_NAME /opt/cross/bin/i486-meego-linux-gnu-gcc
then
echo -n "i486-meego-linux" > etc/rpm/platform
then keep following the tutorial, and you'll end up with a working SB2 target setup in Mer SDK ;)
Qt4/Qt5 middleware matrix
Here you can see which Qt4 middleware has been replaced in the Wayland in Nemo, and what replaced it.
Qt4 package | Qt5 package |
commhistory-daemon | nemo:devel has Qt5 (same name) |
connman-qt | connman-qt5 |
connman-qt-declarative | connman-qt5-declarative |
contactsd | nemo:devel has Qt5 (same name) |
contextkit | Aard: "stays for now, we'll slowly replace the contextkit providers by native statefs plugins" |
contextkit-plugin-cellular | Same as contextkit |
contextkit-plugin-connman | Same as contextkit |
contextkit-plugin-mce | Same as contextkit |
contextkit-plugin-upower | Same as contextkit |
kcalcore | kcalcore-qt5 (mer:qt:devel) |
libaccounts-qt | libaccounts-qt5 (mer:qt:devel) |
libcommhistory | libcommhistory-qt5 |
libcommhistory-declarative | libcommhistory-qt5-declarative |
libcommhistory-tools | libcommhistory-qt5-tools |
libcontentaction | libcontentaction-qt5 |
libdbus-qeventloop | (part of libresourceqt) |
libdeclarative-connectivity | Qt5-qtdeclarative-* |
libdeclarative-gallery | Qt5-* |
libdeclarative-location | Qt5-* |
libdeclarative-multimedia | Qt5-* |
libdeclarative-organizer | Qt5-* |
libdeclarative-systeminfo | Qt5-* |
libiodata | libiodata-qt5 |
libmeegotouch | GET RID OF IT? |
libmeegotouch-l10n-en | GET RID OF IT? |
libmlocale | libmlocale-qt5 |
libngf-qt | libngf-qt5 |
libofono-qt | libqofono-qt5 |
libqmfclient1 | libqmfclient1-qt5 |
libqmfmessageserver1 | libqmfmessageserver1-qt5 |
libqtconnectivity1 | Qt5-* |
libqtcontacts1 | Qt5-* |
libqtcore4 | Qt5-* |
libqtdbus4 | Qt5-* |
libqtdeclarative4 | Qt5-* |
libqtdeclarative4-folderlistmodel | Qt5-* |
libqtdesigner4 | Qt5-* |
libqtgallery1 | Qt5-* |
libqtgui4 | Qt5-* |
libqtlocation1 | Qt5-* |
libqtmultimediakit1 | Qt5-* |
libqtnetwork4 | Qt5-* |
libqtopengl4 | Qt5-* |
libqtorganizer1 | Qt5-* |
libqtscript4 | Qt5-* |
libqtsensors1 | Qt5-* |
libqtserviceframework1 | Qt5-* |
libqtsparql | Qt5-* |
libqtsparql-tracker | Qt5-* |
libqtsparql-tracker-direct | Qt5-* |
libqtsql4 | Qt5-* |
libqtsql4-sqlite | Qt5-* |
libqtsvg4 | Qt5-* |
libqtsysteminfo1 | Qt5-* |
libqttest4 | Qt5-* |
libqtversit1 | Qt5-* |
libqtversitorganizer1 | Qt5-* |
libqtwebkit4 | Qt5-* |
libqtwebkit-qmlwebkitplugin | Qt5-* |
libqtxml4 | Qt5-* |
libqtxmlpatterns4 | Qt5-* |
libresourceqt | libresourceqt-qt5 |
libsignon-glib | required for the telepathy-accounts bridge |
libsignon-qt | libsignon-qt5 |
lipstick | lipstick-qt5 |
lipstick-colorful-home | lipstick-colorful-home-qt5 |
lipstick-tools | lipstick-qt5-tools |
maliit-qt4 | maliit-framework-* |
maliit-plugins-* | |
mapplauncherd-booster-qtcomponents | mapplauncherd-booster-qtcomponents-qt5 |
mapplauncherd-qt | mapplauncherd-qt5 |
meegotouch-compositor | GET RID OF IT? |
meegotouch-compositor-gestures | GET RID OF IT? |
meegotouch-demos | GET RID OF IT? |
meegotouch-demos-l10n | GET RID OF IT? |
meegotouch-systemui | GET RID OF IT? |
meegotouch-theme | GET RID OF IT? |
mkcal | mkcal-qt5 |
mlite | mlite-qt5 |
mthemedaemon | GET RID OF IT? |
nemo-qml-plugin-accounts | nemo-qml-plugin-accounts-qt5 |
nemo-qml-plugin-configuration | nemo-qml-plugin-configuration-qt5 |
nemo-qml-plugin-contacts | nemo-qml-plugin-contacts-qt5 |
nemo-qml-plugin-contacts-tools | nemo-qml-plugin-contacts-qt5-tools |
nemo-qml-plugin-contextkit | nemo-qml-plugin-contextkit-qt5 |
nemo-qml-plugin-dbus | nemo-qml-plugin-dbus-qt5 |
nemo-qml-plugin-email | nemo-qml-plugin-email-qt5 |
nemo-qml-plugin-folderlistmodel | PORTED BUT NEED Qt5 PACKAGING |
nemo-qml-plugin-messages-internal | nemo-qml-plugin-messages-internal-qt5 |
nemo-qml-plugin-signon | nemo-qml-plugin-signon-qt5 |
nemo-qml-plugin-systemsettings | NO Qt5 PORT YET |
nemo-qml-plugin-thumbnailer | nemo-qml-plugin-thumbnailer-qt5 |
nemo-qml-plugin-time | nemo-qml-plugin-time-qt5 |
PackageKit-qt | PackageKit-Qt5 |
qca | GET RID OF IT? Only used by meepasswords |
qca-ossl | GET RID OF IT? Only used by meepasswords |
qjson | GET RID OF IT? (should be included in Qt5?) |
qmsystem | qmsystem-qt5 |
qt-components | qt-components-qt5 |
sensorfw | sensorfw-qt5 |
sensorfw-configs | same sensorfw-qt5 package? |
signon | big package providing signon-daemon and libsignon, ported to qt5 |
statefs-contextkit-provider | compatibility layer, exposing statefs via contextkit API |
statefs-contextkit-subscriber-qt4 | bridge to load qt4 contextkit providers into statefs, and provide them to qt5 applications via statefs interface |
telepathy-accounts-signon | telepathy-accounts bridge |
telepathy-qt4 | telepathy-qt5 |
timed | timed-qt5 |
tracker | Stays. NO Qt5 PORT AT THE MOMENT |
tracker-utils | Stays. NO Qt5 PORT AT THE MOMENT |
voicecall | voicecall-qt5 |
voicecall-ui-reference | GET RID OF IT? |