Development VM Technical Information
Fedora Packages
The development VM has a number of pre-installed packages. Due to new features that are added to the library it may be necessary to install some additional packages.
The json-c library is now used for graphical CUPS ticket formatting. From a terminal window type:
sudo dnf install json-c-devel
The libesmtp library will be used to allow sending tickets as emails.
sudo dnf install libesmtp-devel
The following table is a list of packages that should be installed in the VM. These should normally already be installed except the above.
package name | Notes |
gdk-pixbuf2-modules-extra | Without this Eclipse splash screen may not appear correctly |
pcre-tools | Perl-compatible regular expressions |
expat-devel | |
libuuid-devel | |
libXdmcp-devel | |
libdrm-devel | |
libgbm-devel | |
pcre-devel | Perl-compatible regular expressions development |
libcurl-devel | cURL network data transfer development |
gstreamer1-devel | Pipeline-based multimedia framework development |
mariadb-devel | MariaDB (MySQL compatible) database development |
cmake | |
wxGTK3 | GIMP ToolKit for GUIs |
wxGTK-devel | GIMP ToolKit development |
sqlite-devel | SQLite database development |
cups-devel | CUPS (Common Unix Printing System) development |
libarchive-devel | Read/Write compressed archive development |
libattr-devel | |
libunistring-devel | |
libacl-devel | Library for access control lists development |
lzo-devel | Data compression development |
NetworkManager-libnm-devel | Library for networking configuration development |
libudev-devel | Device manager development |
subversion | SVN source control |
ffmpeg | |
json-c-devel | JSON manipulation development |
libesmtp-devel | SMTP email client development |
Utilities and taskbar links should already be configured in the VM. For reference these are the packages:
package name | Notes |
sqlitebrowser | DB Browser for SQLite databases |
meld | Difference tool |
putty | Terminal utility |
chromium | Web browser |
flatpak | Alternative package manager |
snapd | Alternative package manager |
GIMP Graphics editor:
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install flathub org.gimp.GIMP
MySQL Workbench
sudo ln -s /var/lib/snapd/snap /snap sudo snap install mysql-workbench-community
From application menu right-click gimp and "Pin to task manager"
From application menu select "Development", right-click "DB Browser for SQLite" and "Pin to task manager"
From application menu select "Development", right-click "MySQL Workbench" and "Pin to task manager" From application menu select "Development", right-click "Meld" and "Pin to task manager"
From application menu select "Internet", right-click "Putty" and "Pin to task manager"
From application menu select "Internet", right-click "Chromium" and "Pin to task manager"
From application menu select "Utilities", right-click "KCalc" and "Pin to task manager"
Environment Variables
The development VM uses a number of environment variables. To review or edit these from a terminal window type kate /etc/profile.d/arm825env.sh
#Setup environment variables for ARM825 development AARCH64=/opt/armv8a export AARCH64 AARCH64MX8M=/opt/armv8a-mx8m export AARCH64MX8M export DSPWIDTH=1280 export DSPHEIGHT=800 export UI_LIBS="wayland-client -lwayland-cursor -lxkbcommon -lffi -ljpeg -lpng -lpixman-1 -lfreetype -lz" export CURL_LIBS="curl -lcrypto -lssl -lidn2 -lunistring" export GLIB_LIBS="glib-2.0 -lgio-2.0 -lgmodule-2.0 -lgobject-2.0 -lpcre -lmount -lblkid" export NM_LIBS="nm -lsmime3 -lnss3 -lnssutil3 -lnspr4 -lplds4 -lplc4 -ludev" export CAIRO_LIBS="pango-1.0 -lpangocairo-1.0 -lharfbuzz -lfribidi -lcairo -lfontconfig -lGLESv2 -lEGL -lexpat -luuid -lGAL -lVSC -lwayland-server -ldrm -lgbm -lgbm_viv" export CAIRO_SIM_LIBS="pango-1.0 -lpangocairo-1.0 -lharfbuzz -lfribidi -lcairo -lfontconfig -lGLESv2 -lEGL -lxcb-shm -lxcb -lxcb-render -lX11 -lXext -lXrender -lXau -lXdmcp -lexpat -luuid -lwayland-server -ldrm -lgbm" export CUPS_LIBS="cups -lavahi-common -lavahi-client -ldbus-1 -lsystemd -lzstd -lcap" export PRT_LIBS="cups -lavahi-common -lavahi-client -ldbus-1 -lsystemd -lzstd -lcap -ljson-c -lesmtp -lssl -lcrypto" export PRT_SIM_LIBS="cups -ljson-c -lesmtp -lssl -lcrypto" # User specific environment and startup programs PATH=$PATH:$HOME/bin:/opt/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/:/opt/freescale/usr/local/gcc-4.4.53-uclibc-0.9.53/m68k-uclinux/bin/
The PRT_LIBS and PRT_SIM_LIBS environment variables are new variables (2025-03-06) that contain the cups, json-c, esmtp, ssl, and crypto to facilitate the new ticket printing features for graphical tickets and emails.
After making changes to this it may be necessary to restart the VM.
Project helper setup_arm64lib
The folders /opt/arm64include and /opt/arm64lib contain symbolic links to various header and library files so that app projects can refer to these folders to reduce the complexity of project properties.
The file /home/user/bin/setup_arm64lib is a script used to update these folders:
#!/bin/sh DEST="/opt/arm64lib" rm -f $DEST/* ln -s $AARCH64/wayland/usr/lib/libwayland* $DEST ln -s $AARCH64/mariadb/usr/lib/libmaria* $DEST ln -s $AARCH64/mariadb/usr/lib/libmysql* $DEST ln -s $AARCH64/libxkbcommon/usr/lib/libxkb* $DEST ln -s $AARCH64/libffi/usr/lib/libffi* $DEST ln -s $AARCH64/libxcb/usr/lib/libxcb* $DEST ln -s $AARCH64/libjpeg-turbo/usr/lib/libjpeg* $DEST #ln -s $AARCH64/libjpeg-turbo/usr/lib/turbojpeg* $DEST ln -s $AARCH64/libpng/usr/lib/libpng* $DEST ln -s $AARCH64/pixman/usr/lib/libpixman* $DEST ln -s $AARCH64/zlib/usr/lib/libz* $DEST ln -s $AARCH64/freetype/usr/lib/libfreetype* $DEST ln -s $AARCH64/openssl/usr/lib/libcrypto* $DEST ln -s $AARCH64/openssl/usr/lib/libssl* $DEST ln -s $AARCH64/curl/usr/lib/libcurl* $DEST ln -s $AARCH64/libidn2/usr/lib/libidn2* $DEST ln -s $AARCH64/libunistring/usr/lib/libunistring* $DEST ln -s $AARCH64/glib-2.0/usr/lib/libglib-2.0* $DEST ln -s $AARCH64/glib-2.0/usr/lib/libgio-2.0* $DEST ln -s $AARCH64/glib-2.0/usr/lib/libgmodule-2.0* $DEST ln -s $AARCH64/glib-2.0/usr/lib/libgobject-2.0* $DEST ln -s $AARCH64/glib-2.0/usr/lib/libgthread-2.0* $DEST ln -s $AARCH64/sqlite3/usr/lib/libsqlite3* $DEST ln -s $AARCH64/libpcre/usr/lib/libpcre* $DEST ln -s $AARCH64/util-linux/usr/lib/libmount* $DEST ln -s $AARCH64/util-linux/usr/lib/libfdisk* $DEST ln -s $AARCH64/util-linux/usr/lib/libblkid* $DEST ln -s $AARCH64/nss/usr/lib/libfreebl* $DEST ln -s $AARCH64/nss/usr/lib/libnss* $DEST ln -s $AARCH64/nss/usr/lib/libsmime* $DEST ln -s $AARCH64/nss/usr/lib/libsoftokn* $DEST ln -s $AARCH64/nss/usr/lib/libssl3* $DEST ln -s $AARCH64/nspr/usr/lib/libnspr* $DEST ln -s $AARCH64/nspr/usr/lib/libplc* $DEST ln -s $AARCH64/nspr/usr/lib/libplds* $DEST ln -s $AARCH64/systemd/lib/libsystemd* $DEST ln -s $AARCH64/systemd/lib/libudev* $DEST ln -s $AARCH64/systemd/lib/libnss* $DEST ln -s $AARCH64/libarchive/usr/lib/libarchive* $DEST ln -s $AARCH64/acl/usr/lib/libacl* $DEST ln -s $AARCH64/lzo/usr/lib/liblzo* $DEST ln -s $AARCH64/xz/usr/lib/liblzma* $DEST ln -s $AARCH64/zstd/usr/lib/libzstd* $DEST ln -s $AARCH64/attr/usr/lib/libattr* $DEST ln -s $AARCH64/bzip2/usr/lib/libbz2* $DEST ln -s $AARCH64/fontconfig/usr/lib/libfontconfig* $DEST ln -s $AARCH64/cups/usr/lib/libcups* $DEST ln -s $AARCH64/libxrender/usr/lib/libXrender* $DEST ln -s $AARCH64/expat/usr/lib/libexpat* $DEST ln -s $AARCH64/libxext/usr/lib/libXext* $DEST ln -s $AARCH64/libx11/usr/lib/libX11* $DEST ln -s $AARCH64/libxau/usr/lib/libXau* $DEST ln -s $AARCH64/libxdmcp/usr/lib/libXdmcp* $DEST ln -s $AARCH64/libcap/lib/libcap* $DEST ln -s $AARCH64/dbus/usr/lib/libdbus* $DEST ln -s $AARCH64/util-linux-libuuid/usr/lib/libuuid* $DEST ln -s $AARCH64/avahi/usr/lib/libavahi* $DEST ln -s $AARCH64/readline/usr/lib/libreadline* $DEST ln -s $AARCH64/ncurses/usr/lib/libtinfo* $DEST ln -s $AARCH64/ncurses/usr/lib/libncurses* $DEST ln -s $AARCH64/ncurses/lib/libncurses* $DEST ln -s $AARCH64/libevent/usr/lib/libevent* $DEST ln -s $AARCH64/fribidi/usr/lib/libfribidi* $DEST ln -s $AARCH64/json-c/usr/lib/libjson-c* $DEST ln -s $AARCH64/libesmtp/usr/lib/libesmtp* $DEST ln -s $AARCH64MX8M/gstreamer1.0/usr/lib/libgst* $DEST ln -s $AARCH64MX8M/cairo/usr/lib/libcairo* $DEST ln -s $AARCH64MX8M/libdrm/usr/lib/libdrm* $DEST ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libEGL* $DEST ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libGLESv2* $DEST ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libGAL* $DEST ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libgbm* $DEST ln -s $AARCH64MX8M/imx-gpu-viv/usr/lib/libVSC* $DEST ln -s $AARCH64MX8M/pango/usr/lib/libpango* $DEST ln -s $AARCH64MX8M/harfbuzz/usr/lib/libharfbuzz* $DEST ln -s /opt/networkmanager/usr/lib/libnm* $DEST DESTINC="/opt/arm64include" rm -f $DESTINC/* ln -s ${AARCH64}/wayland/usr/include/* $DESTINC ln -s ${AARCH64}/mariadb/usr/include/mysql/* $DESTINC ln -s ${AARCH64}/sqlite3/usr/include/* $DESTINC ln -s ${AARCH64}/curl/usr/include/* $DESTINC ln -s ${AARCH64}/glib-2.0/usr/lib/glib-2.0/include/* $DESTINC ln -s ${AARCH64}/util-linux/usr/include/libmount/* $DESTINC ln -s ${AARCH64}/pixman/usr/include/pixman-1/* $DESTINC ln -s ${AARCH64}/glib-2.0/usr/include/glib-2.0/* $DESTINC #"${AARCH64}/glib-2.0/usr/lib/glib-2.0/include/" # TODO Investigate this further - this seems to cause redundancy but is necessary for now ln -s ${AARCH64}/freetype/usr/include/* $DESTINC ln -s ${AARCH64}/freetype/usr/include/freetype2/* $DESTINC ln -s ${AARCH64}/libpng/usr/include/* $DESTINC ln -s ${AARCH64}/libjpeg-turbo/usr/include/* $DESTINC ln -s ${AARCH64}/libxkbcommon/usr/include/* $DESTINC ln -s ${AARCH64}/dbus/usr/include/dbus-1.0/* $DESTINC #ln -s ${AARCH64}/dbus/usr/lib/dbus-1.0/include/dbus/dbus-arch-deps.h $DESTINC/dbus #ln -s ${AARCH64}/dbus/usr/lib/dbus-1.0/* $DESTINC ln -s ${AARCH64}/bluez5/usr/include/* $DESTINC ln -s ${AARCH64}/ell/usr/include/* $DESTINC ln -s ${AARCH64}/readline/usr/include/* $DESTINC ln -s ${AARCH64}/openssl/usr/include/* $DESTINC ln -s ${AARCH64}/cups/usr/include/* $DESTINC ln -s ${AARCH64}/ncurses/usr/include/* $DESTINC ln -s ${AARCH64}/libevent/usr/include/* $DESTINC ln -s ${AARCH64}/fontconfig/usr/include/* $DESTINC ln -s ${AARCH64}/json-c/usr/include/* $DESTINC ln -s ${AARCH64}/libesmtp/usr/include/* $DESTINC ln -s ${AARCH64MX8M}/pango/usr/include/pango-1.0/* $DESTINC ln -s ${AARCH64MX8M}/harfbuzz/usr/include/harfbuzz/* $DESTINC ln -s ${AARCH64MX8M}/imx-gpu-viv/usr/include/* $DESTINC ln -s ${AARCH64MX8M}/gstreamer1.0/usr/include/gstreamer-1.0/* $DESTINC ln -s ${AARCH64MX8M}/cairo/usr/include/cairo/* $DESTINC ln -s ${AARCH64MX8M}/alsa-lib/usr/include/* $DESTINC ln -s /opt/networkmanager/usr/include/libnm/* $DESTINC
The json-c and esmtp lines are recent additions (2025-03-06).
Any time changes are made to this from a terminal type:
setup_arm64lib
This will recreate the symbolic links in /opt/arm64include and /opt/arm64lib