Packaging specifications for Gambas development version

REVISION: 2024-05-05

Gambas binary packages must have the following names and contents:

The runtime package

This package includes the Gambas interpreter needed to run Gambas applications, and various components that have no other dependency than the interpreter.

It contains:
  • The interpreter: gbx3.

  • The symbolic link on gbx3: gbr3.

  • The man pages gbx3.1 and gbr3.1.

  • The internal component description: gb.component, gb.info and gb.list.

  • The readme files, TODO files, and so on.

And the following components:
  • The gb.debug component: gb.debug.info, gb.debug.list, gb.debug.component, gb.debug.so.*, gb.debug.la.

  • The gb.eval component: gb.eval.info, gb.eval.list, gb.eval.component, gb.eval.so.*, gb.eval.la.

  • The gb.geom hidden component: gb.geom.info, gb.geom.list, gb.geom.component, gb.geom.so.*, gb.geom.la.

  • The gb.draw hidden component: gb.draw.info, gb.draw.list, gb.draw.so.*, gb.draw.la.

  • The gb.gui component: gb.gui.info, gb.gui.list, gb.gui.component, gb.gui.so.*, gb.gui.la.

  • The gb.gui.base hidden component: gb.gui.base.info, gb.gui.base.list, gb.gui.base.gambas.

  • The gb.gui.opengl component: gb.gui.opengl.info, gb.gui.opengl.list, gb.gui.opengl.component, gb.gui.opengl.so.*, gb.gui.opengl.la.

  • The gb.gui.qt component: gb.gui.qt.info, gb.gui.qt.list, gb.gui.qt.component, gb.gui.qt.so.*, gb.gui.qt.la.

  • The gb.gui.qt.ext component: gb.gui.qt.ext.info, gb.gui.qt.ext.list, gb.gui.qt.ext.component, gb.gui.qt.ext.so.*, gb.gui.qt.ext.la.

  • The gb.gui.qt.opengl component: gb.gui.qt.opengl.info, gb.gui.qt.opengl.list, gb.gui.qt.opengl.component, gb.gui.qt.opengl.so.*, gb.gui.qt.opengl.la.

  • The gb.gui.qt.webkit component: gb.gui.qt.webkit.info, gb.gui.qt.webkit.list, gb.gui.qt.webkit.component, gb.gui.qt.webkit.so.*, gb.gui.qt.webkit.la.

  • The gb.gui.trayicon component: gb.gui.trayicon.info, gb.gui.trayicon.list, gb.gui.trayicon.component, gb.gui.trayicon.so.*, gb.gui.trayicon.la.

  • The gb.gui.webview component: gb.gui.webview.info, gb.gui.webview.list, gb.gui.webview.component, gb.gui.webview.so.*, gb.gui.webview.la.

  • The gb.hash component: gb.hash.info, gb.hash.list, gb.hash.component, gb.hash.so.*, gb.hash.la.

  • The gb.jit component: gb.jit.info, gb.jit.list, gb.jit.component, gb.jit.so.*, gb.jit.la, gb.jit.gambas.

  • The gb.test component: gb.test.info, gb.test.list, gb.test.component, gb.test.gambas.

Its name must be gambas3-runtime.

This package must register the application/x-gambas3 mime type as specified by the application-x-gambas3.xml file and the application-x-gambas3.png icon.

Note that gb.la, gb.so, gb.so.0 and gb.so.0.0.0 do not need to be distributed. They are temporary files used for generating gb.info and gb.list only.

The components included in this package have no dependency on any other components.

The gbr3 symbolic link MUST be in the PATH, otherwise executables will not work.

gb.gui.base is a component written in Gambas that cannot actually be used on its own. It implements many GUI controls for GUI components, and it is explicitly loaded by them (like gb.draw).

The Gambas JIT compiler needs a compiler to work: either gcc or clang, which can become an optional dependency of the package.

The development tools package

This package includes all tools needed to compile Gambas projects without having to install the complete development environment.

It contains:
  • The compiler: gbc3.

  • The archiver: gba3.

  • The informer: gbi3.

  • The help generator: gbh3.

  • The man pages gbc3.1, gba3.1, gbi3.1 and gbr3.1.

Its name must be gambas3-dev-tools.

This package was previously named gambas3-dev or gambas3-devel.

This was a mistake, as these names are used in various distributions for packages that allows to develop Gambas, not to develop with Gambas.

The scripter package

This package includes the scripter program that allows to write script files in Gambas and to serve Gambas webpages when run with another name.

It contains:
  • The scripter: gbs3.gambas.

  • The symbolic link on it: gbs3.

  • Another symbolic link on it with a specific name: gbw3.

  • The man pages gbs3.1 and gbw3.1.

Its name must be gambas3-scripter.

It depends on the following Gambas packages:
  • gambas3-runtime.

  • gambas3-dev-tools.

  • gambas3-gb-pcre.

This package must register the application/x-gambasscript mime type as specified by the application-x-gambasscript.xml file and the application-x-gambasscript.png icon.

The gbs3 symbolic link MUST be in the PATH, otherwise scripts will not work.

The GUI package

This package is a virtual package that must depends on either:
  • gambas3-gb-qt4.

  • gambas3-gb-qt5.

  • gambas3-gb-qt6.

  • gambas3-gb-gtk.

  • gambas3-gb-gtk3.

It is used as a dependency for packages that requires any GUI package (like gambas3-gb-form).

Its name must be gambas3-gui.

The component packages

Each gambas component must have its own package.

The package of a component contains:

  • The shared library files: gb.XXX.la, gb.XXX.so, gb.XXX.so.0, gb.XXX.so.0.0.0.

  • The component file: gb.XXX.component.

  • The information file: gb.XXX.info and gb.XXX.list.

  • Sometimes a part written in Gambas: gb.XXX.gambas.

...where gb.XXX is the name of the component

Then name of a component package MUST BE gambas3-gb-XXX where gb-XXX is the name of the component, the point being replaced by a minus sign.

For example, the gb.qt4 component package name is gambas3-gb-qt4. It must include:
  • gb.qt4.la

  • gb.qt4.so

  • gb.qt4.so.0

  • gb.qt4.so.0.0.0

  • gb.qt4.component

  • gb.qt4.gambas

  • gb.qt4.info

  • gb.qt4.list

Some component are entirely written in Gambas, i.e. they have only a Gambas part. These components are located in the comp directory of the source archive.

You must follow the previous rules for these components, except that there is no shared library files inside.

If a component is written in Gambas, or has a Gambas part, then it must depend on gambas3-runtime.

Note that gb.debug, gb.eval, gb.draw, gb.geom, gb.gui, gb.gui.qt, gb.gui.qt.webkit, gb.gui.base and gb.gui.opengl do not have their own package, as they are distributed with the gambas3-runtime package.

The development environment package

This package includes the complete Gambas Development Environment.

It contains:
  • The development environment: gambas3.gambas.

  • The symbolic link on it: gambas3.

  • The project templates needed to create new projects. They are all gambas projects located in /app/template in the source directory, and installed in /usr/share/gambas3/template.

  • The man page gambas3.1.

It depends on the following Gambas packages:
  • gambas3-runtime.

  • gambas3-dev-tools.

  • The packages of the components needed by the IDE:
    • gb.clipper

    • gb.db

    • gb.db.form

    • gb.debug

    • gb.desktop

    • gb.desktop.x11

    • gb.eval

    • gb.highlight

    • gb.form

    • gb.form.dialog

    • gb.form.editor

    • gb.form.mdi

    • gb.form.print

    • gb.form.stock

    • gb.form.terminal

    • gb.image

    • gb.markdown

    • gb.net

    • gb.net.curl

    • gb.settings

    • gb.signal

    • gb.term

    • gb.util

Moreover you must add dependencies on either:
  • gambas3-gb-qt4-webview.

  • gambas3-gb-qt5-webview.

  • gambas3-gb-qt6-webview.

  • or gambas3-gb-gtk3-webview.

You MAY make this package depend on all Gambas components, so that they are all installed, but this is not recommended.

Its name must be gambas3-ide.

The IDE relies on the following external tools:
  • The GNU translation tools for translating a project.

  • The rpm tools for creating RPM packages.

  • The deb tools for creating DEB packages.

  • The ARCH tool for creating ARCH packages.

  • The tar & gzip tools for creating *.tar.gz archives.

  • The wget utility for downloading offline help from the wiki.

And optionally on these tools:
  • pngquant for PNG compression optimizations.

  • translate-shell for automatic translation.

  • git for project version control.

  • subversion for project version control.

So you must add the dependencies on the packages that provide these tools. The name of these packages depends on the distribution.

Package list

Here is the list of all packages that must be made:

Package Depends on these packages
gambas3-dev-tools
gambas3-runtime
gambas3-ide gambas3-runtime
gambas3-dev-tools
gambas3-gb-clipper
gambas3-gb-db2
gambas3-gb-db2-form
gambas3-gb-desktop
gambas3-gb-form
gambas3-gb-form-dialog
gambas3-gb-form-editor
gambas3-gb-form-htmlview
gambas3-gb-form-mdi
gambas3-gb-form-print
gambas3-gb-form-stock
gambas3-gb-form-terminal
gambas3-gb-highlight
gambas3-gb-image
gambas3-gb-markdown
gambas3-gb-net
gambas3-gb-net-curl
gambas3-gb-pcre
gambas3-gb-settings
gambas3-gb-signal
gambas3-gb-term
gambas3-gb-util
gambas3-gb-util-web
gambas3-scripter gambas3-runtime
gambas3-dev-tools
gambas3-gb-pcre
gambas3-gb
gambas3-gb-args
gambas3-gb-cairo gambas3-gb-image
gambas3-gb-chart gambas3-gb-form
gambas3-gb-clipper
gambas3-gb-complex
gambas3-gb-compress
gambas3-gb-compress-bzlib2 gambas3-gb-compress
gambas3-gb-compress-zlib gambas3-gb-compress
gambas3-gb-compress-zstd gambas3-gb-compress
gambas3-gb-crypt
gambas3-gb-data
gambas3-gb-db
gambas3-gb-db-form gambas3-gb-db
gambas3-gb-form
gambas3-gb-db-mysql gambas3-gb-db
gambas3-gb-db-odbc gambas3-gb-db
gambas3-gb-db-postgresql gambas3-gb-db
gambas3-gb-db-sqlite2 gambas3-gb-db
gambas3-gb-db-sqlite3 gambas3-gb-db
gambas3-gb-db2
gambas3-gb-db2-form gambas3-gb-form
gambas3-gb-db2
gambas3-gb-db2-mysql gambas3-gb-db2
gambas3-gb-db2-odbc gambas3-gb-db2
gambas3-gb-db2-postgresql gambas3-gb-db2
gambas3-gb-db2-sqlite3 gambas3-gb-db2
gambas3-gb-dbus
gambas3-gb-dbus-trayicon gambas3-gb-dbus
gambas3-gb-image
gambas3-gb-desktop gambas3-gb-image
gambas3-gb-desktop-gnome-keyring gambas3-gb-desktop
gambas3-gb-desktop-x11 gambas3-gb-image
gambas3-gb-desktop
gambas3-gb-eval-highlight
gambas3-gb-form
gambas3-gb-form-dialog gambas3-gb-form
gambas3-gb-form-editor gambas3-gb-util
gambas3-gb-form
gambas3-gb-highlight
gambas3-gb-form-htmlview
gambas3-gb-form-mdi gambas3-gb-form
gambas3-gb-settings
gambas3-gb-form-print gambas3-gb-form
gambas3-gb-form-stock
gambas3-gb-form-terminal gambas3-gb-term
gambas3-gb-gmp
gambas3-gb-gsl
gambas3-gb-gtk gambas3-gb-image
gambas3-gb-gtk-opengl gambas3-gb-gtk
gambas3-gb-opengl
gambas3-gb-gtk3 gambas3-gb-image
gambas3-gb-gtk3-opengl gambas3-gb-gtk3
gambas3-gb-opengl
gambas3-gb-gtk3-wayland gambas3-gb-qt5
gambas3-gb-gtk3-webview gambas3-gb-gtk3
gambas3-gb-gtk3-x11 gambas3-gb-qt5
gambas3-gb-hash
gambas3-gb-highlight gambas3-gb-image
gambas3-gb-pcre
gambas3-gb-httpd
gambas3-gb-image
gambas3-gb-image-effect gambas3-gb-image
gambas3-gb-image-imlib gambas3-gb-image
gambas3-gb-image-io gambas3-gb-image
gambas3-gb-inotify
gambas3-gb-jit
gambas3-gb-libxml
gambas3-gb-logging
gambas3-gb-map gambas3-gb-net-curl
gambas3-gb-net
gambas3-gb-markdown
gambas3-gb-media gambas3-gb-image
gambas3-gb-media-form gambas3-gb-media
gambas3-gb-memcached gambas3-gb-net
gambas3-gb-mime
gambas3-gb-mongodb
gambas3-gb-mysql gambas3-gb-db
gambas3-gb-db-mysql
gambas3-gb-ncurses
gambas3-gb-net
gambas3-gb-net-curl gambas3-gb-net
gambas3-gb-net-pop3 gambas3-gb-net
gambas3-gb-mime
gambas3-gb-net-smtp gambas3-gb-net
gambas3-gb-openal
gambas3-gb-opengl gambas3-gb-image
gambas3-gb-opengl-glsl gambas3-gb-opengl
gambas3-gb-opengl-glu gambas3-gb-opengl
gambas3-gb-opengl-sge gambas3-gb-opengl
gambas3-gb-openssl
gambas3-gb-option
gambas3-gb-pcre
gambas3-gb-pdf gambas3-gb-image
gambas3-gb-poppler gambas3-gb-image
gambas3-gb-qt4 gambas3-gb-image
gambas3-gb-qt4-ext gambas3-gb-qt4
gambas3-gb-qt4-opengl gambas3-gb-qt4
gambas3-gb-opengl
gambas3-gb-qt4-webkit gambas3-gb-qt4
gambas3-gb-qt4-webview gambas3-gb-qt4
gambas3-gb-qt5 gambas3-gb-image
gambas3-gb-qt5-ext gambas3-gb-qt5
gambas3-gb-qt5-opengl gambas3-gb-qt5
gambas3-gb-opengl
gambas3-gb-qt5-wayland gambas3-gb-qt5
gambas3-gb-qt5-webkit gambas3-gb-qt5
gambas3-gb-qt5-webview gambas3-gb-qt5
gambas3-gb-qt5-x11 gambas3-gb-qt5
gambas3-gb-qt6 gambas3-gb-image
gambas3-gb-qt6-ext gambas3-gb-qt6
gambas3-gb-qt6-opengl gambas3-gb-qt6
gambas3-gb-opengl
gambas3-gb-qt6-wayland gambas3-gb-qt6
gambas3-gb-qt6-webview gambas3-gb-qt6
gambas3-gb-qt6-x11 gambas3-gb-qt6
gambas3-gb-report gambas3-gb-form
gambas3-gb-report2 gambas3-gb-form
gambas3-gb-scanner
gambas3-gb-sdl gambas3-gb-image
gambas3-gb-image-io
gambas3-gb-sdl-sound
gambas3-gb-sdl2 gambas3-gb-image
gambas3-gb-sdl2-audio
gambas3-gb-settings
gambas3-gb-signal
gambas3-gb-term
gambas3-gb-term-form gambas3-gb-term
gambas3-gb-test
gambas3-gb-util
gambas3-gb-util-web
gambas3-gb-v4l gambas3-gb-image
gambas3-gb-vb
gambas3-gb-web gambas3-gb-util-web
gambas3-gb-web-feed gambas3-gb-xml
gambas3-gb-util
gambas3-gb-web-form gambas3-gb-web
gambas3-gb-util-web
gambas3-gb-util
gambas3-gb-web-gui gambas3-gb-util
gambas3-gb-web
gambas3-gb-util-web
gambas3-gb-signal
gambas3-gb-xml
gambas3-gb-xml-html gambas3-gb-xml
gambas3-gb-xml-rpc
gambas3-gb-xml-xslt gambas3-gb-xml

Additional dependencies

The following packages must depends on gambas3-gui too:
  • gambas3-gb-form.

  • gambas3-gb-media-form.

  • gambas3-gb-form-terminal.

You may have a gambas3-debug package to store the debugging information of all previous packages.