wiki:Docs/825gen2/Dev/DevVMTechnical

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 nameNotes
gdk-pixbuf2-modules-extraWithout this Eclipse splash screen may not appear correctly
pcre-toolsPerl-compatible regular expressions
expat-devel
libuuid-devel
libXdmcp-devel
libdrm-devel
libgbm-devel
pcre-develPerl-compatible regular expressions development
libcurl-develcURL network data transfer development
gstreamer1-develPipeline-based multimedia framework development
mariadb-develMariaDB (MySQL compatible) database development
cmake
wxGTK3GIMP ToolKit for GUIs
wxGTK-develGIMP ToolKit development
sqlite-develSQLite database development
cups-develCUPS (Common Unix Printing System) development
libarchive-develRead/Write compressed archive development
libattr-devel
libunistring-devel
libacl-develLibrary for access control lists development
lzo-develData compression development
NetworkManager-libnm-develLibrary for networking configuration development
libudev-develDevice manager development
subversionSVN source control
ffmpeg
json-c-develJSON manipulation development
libesmtp-develSMTP email client development

Utilities and taskbar links should already be configured in the VM. For reference these are the packages:

package nameNotes
sqlitebrowserDB Browser for SQLite databases
meldDifference tool
puttyTerminal utility
chromiumWeb browser
flatpakAlternative package manager
snapdAlternative 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

Last modified 2 days ago Last modified on 04/01/25 08:08:01
Note: See TracWiki for help on using the wiki.