The officially official Devuan Forum!

You are not logged in.

#1 2025-04-22 15:16:51

igorzwx
Member
Registered: 2024-05-06
Posts: 126  

How to build wxMaxima_25.01.0.deb (DevelopmentSnapshot) from git

One may want to install the "DevelopmentSnapshot" of wxMaxima, because the "stable versions" of wxMaxima (available in Devuan/Debian repositories) are so buggy that they are impossible to use.

The "DevelopmentSnapshot" of wxMaxima seems to work on Devuan 5 Daedalus. It looks usable, although, of course, there still a lot of bugs.

The package of wxMaxima (DevelopmentSnapshot) is available in Arch Linux AUR repository:
_https://aur.archlinux.org/packages/wxmaxima
_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxmaxima

Therefore, it is not difficult to build a Debian package of the "DevelopmentSnapshot".

$ inxi -b | grep Host -A1
  Host: devuan Kernel: 6.1.0-33-amd64 arch: x86_64 bits: 64 Desktop: MATE
    v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus) 

Install "build-essential", build dependencies, etc.:

sudo apt install build-essential debhelper
sudo apt install libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev libwebkit2gtk-4.0-dev 
sudo apt install fakeroot dpkg-repack git sed tree maxima appstream pandoc po4a imagemagick doxygen texlive-xetex

man CMake
_https://cmake.org/cmake/help/latest/manual/cmake.1.html
Creating debian packages — CMake
_https://karthikkalyanaraman.medium.com/creating-debian-packages-cmake-e519a0186e87

Download portable CMake v4.0.1:

https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz

The manual for portable CMake is here:

https://dev1galaxy.org/viewtopic.php?id=7161

Clone the source from git:

mkdir Build_wxmaxima_25.01.0_GIT

cd Build_wxmaxima_25.01.0_GIT

git clone https://github.com/wxmaxima-developers/wxmaxima.git 
$ ls
wxmaxima

$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
Project: wxMaxima 25.01.0 (git)

1. Generate the Project Buildsystem

cmake \
    -S wxmaxima \
    -B build \
    -DCMAKE_BUILD_TYPE=None \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_CXX_STANDARD=14 \
    -DCMAKE_CXX_COMPILER=g++ \
    -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
    -Wno-dev 
$ ls -1
build
wxmaxima

2. Build the Project   

cmake --build build  

   
3. Install wxMaxima to a sub-folder "WXMDIR"
 

DESTDIR="WXMDIR" cmake --install build  

 

$ ls -1
build
wxmaxima
WXMDIR

$ du -sh WXMDIR
16M	WXMDIR

$ du -s WXMDIR
15752	WXMDIR

$ tree -a -L 3 WXMDIR
WXMDIR
└── usr
    ├── bin
    │   └── wxmaxima
    └── share
        ├── applications
        ├── bash-completion
        ├── doc
        ├── icons
        ├── locale
        ├── man
        ├── metainfo
        ├── mime
        ├── pixmaps
        └── wxMaxima 

Open fakeroot console:

$ fakeroot

# mkdir -pv ./WXMDIR/DEBIAN 
mkdir: created directory './WXMDIR/DEBIAN'

Create "DEBIAN/control":

# nano ./WXMDIR/DEBIAN/control

# cat ./WXMDIR/DEBIAN/control
Package: wxmaxima
Version: 25.01.0-1
Architecture: amd64
Maintainer: $USER
Installed-Size: 16M (≈15752)
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2), maxima
Recommends: maxima-doc, fonts-inter, fonts-inter-variable
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Section: math
Priority: optional
Homepage: http://wxmaxima-developers.github.io/wxmaxima/
Description: GUI for the computer algebra system Maxima
 wxMaxima is a graphical user interface for the computer algebra system
 Maxima. It eases the use of Maxima by making most of its commands available
 through a menu system and by providing input dialogs for commands that
 require more than one argument. It also implements its own display engine
 that outputs mathematical symbols directly instead of depicting them with
 ASCII characters.
 .
 wxMaxima also features 2D and 3D inline plots, simple animations, mixing of
 text and mathematical calculations to create documents, exporting of input
 and output to TeX, and a browser for Maxima's manual including command index
 and full text searching.
 Source: https://github.com/wxMaxima-developers/wxmaxima 

Generate DEBIAN/md5sums

# cd WXMDIR

# find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums

# ls -1  DEBIAN
control
md5sums

# cd ../ 

Build the Debian package:

# dpkg-deb -b WXMDIR wxmaxima_25.01.0-1-devuan5_amd64-git.deb
dpkg-deb: building package 'wxmaxima' in 'wxmaxima_25.01.0-1-devuan5_amd64-git.deb'.

# ls *.deb
wxmaxima_25.01.0-1-devuan5_amd64-git.deb 

Exit fakeroot console

# exit
exit

Check the "info":

$ dpkg --info *git.deb
 new Debian package, version 2.0.
 size 4236464 bytes: control archive=928 bytes.
    1249 bytes,    24 lines      control              
 Package: wxmaxima
 Version: 25.01.0-1
 Architecture: amd64
... 
Install wxMaxima
sudo dpkg -i wxmaxima_25.01.0-1-devuan5_amd64-git.deb
$ wxmaxima --version
wxMaxima 25.01.0-DevelopmentSnapshot (Git version: 8de10d448)

$ apt info wxmaxima
Package: wxmaxima
Version: 25.01.0-1
Status: install ok installed
... 
dpkg-repack
DESCRIPTION
       dpkg-repack creates a .deb file out of a Debian package that has already been installed on your system.

       If any changes have been made to the package while it was unpacked (e.g.  conffiles files in /etc modified),
       the new package will inherit the changes.  (There are exceptions to this, including changes to configuration
       files that are not conffiles, including those managed by ucf(1).)

       This utility can make it easy to copy packages from one computer to another, or to recreate packages that are
       installed on your system, but no longer available elsewhere.

       Note: dpkg-repack will place the created package in the current directory. 

It can create a Debian package from the installed one (e.g. wxMaxima)

$ dpkg -l | grep wxmaxima
ii  wxmaxima      25.01.0-1     amd64     GUI for the computer algebra system Maxima

$ fakeroot -u dpkg-repack wxmaxima
dpkg-deb: building package 'wxmaxima' in './wxmaxima_25.01.0-1_amd64.deb'.

$ ls
wxmaxima_25.01.0-1_amd64.deb

Extract "control-information" from the package:

$ dpkg-deb -e wxmaxima_25.01.0-1_amd64.deb

$ ls -1
DEBIAN
wxmaxima_25.01.0-1_amd64.deb

$ tree -a DEBIAN
DEBIAN
├── control
└── md5sums

See also:
Recreate Debian Binary Packages That Are Already Installed On A System
_https://ostechnix.com/recreate-debian-binary-packages-that-are-already-installed-on-a-system/
Creating debian packages — CMake
_https://karthikkalyanaraman.medium.com/creating-debian-packages-cmake-e519a0186e87

Last edited by igorzwx (2025-04-22 15:22:19)

Offline

#2 2025-04-24 22:36:53

igorzwx
Member
Registered: 2024-05-06
Posts: 126  

Re: How to build wxMaxima_25.01.0.deb (DevelopmentSnapshot) from git

[CMake 4.0.1] Creating a Debian package for wxMaxima with CPack DEB Generator
mkdir wxmaxima_build
cd wxmaxima_build

git clone https://github.com/wxmaxima-developers/wxmaxima.git 
$ ls
wxmaxima

Project: wxMaxima 25.01.0-DevelopmentSnapshot (git)

Create a sort of config for "CPack DEB Generator" with a text editor you like

nano ./wxmaxima/Packing.cmake 
$ cat ./wxmaxima/Packing.cmake
# these are cache variables, so they could be overwritten with -D,
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}
    CACHE STRING "The resulting package name"
)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION}
    CACHE STRING "Package description for the package metadata"
)
set(CPACK_VERBATIM_VARIABLES TRUE)

set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")

set(CPACK_PACKAGE_VERSION "${WXMAXIMA_VERSION}-1")

set(CPACK_DEBIAN_PACKAGE_MAINTAINER $USER)

# AUTO-Deps: autogenerate dependency information
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)

list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS maxima)
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "fonts-jsmath, texlive-latex-extra, ibus-gtk3")
set(CPACK_DEBIAN_PACKAGE_SECTION math)

set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)

include(CPack)

Find the config of the main project:

$ find . -maxdepth 2 -name 'CMakeLists*'
./wxmaxima/CMakeLists.txt

$ ls ./wxmaxima | grep CMakeLists
CMakeLists.txt 

To enable the GPac config (Packing.cmake) in the config of the main project, append a "magic code"

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Packing) 

to the end of the file ./wxmaxima/CMakeLists.txt. This can be done with a text editor, or echo  command:

$ echo -e '\n\nset(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})\ninclude(Packing)' >> ./wxmaxima/CMakeLists.txt

$ tail -3 ./wxmaxima/CMakeLists.txt

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Packing) 

Enable CMake 4.0.1

$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1

1. Generate the Project Buildsystem

cmake \
    -S wxmaxima \
    -B build \
    -DCMAKE_BUILD_TYPE=None \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_CXX_STANDARD=14 \
    -DCMAKE_CXX_COMPILER=g++ \
    -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
    -Wno-dev 
$ ls -1
build
wxmaxima

2. Build the Project

cmake --build build  

3. Make the Debian package of wxMaxima with CPack

$ ls ./build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake 
$ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Run preinstall target for: wxMaxima
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima_build/wxmaxima_25.01.0-DevelopmentSnapshot-1_amd64.deb generated. 

CPack can also generate source packages:

cpack --config build/CPackSourceConfig.cmake
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.01.0-DevelopmentSnapshot-1_amd64.deb
wxMaxima-25.01.0-DevelopmentSnapshot-1-Source.tar.bz2
wxMaxima-25.01.0-DevelopmentSnapshot-1-Source.tar.gz
wxMaxima-25.01.0-DevelopmentSnapshot-1-Source.tar.xz
wxMaxima-25.01.0-DevelopmentSnapshot-1-Source.tar.Z

See also: _https://cmake.org/cmake/help/book/mastering-cmake/chapter/Packaging%20With%20CPack.html#simple-example

$ dpkg-deb -f *.deb
Architecture: amd64
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Maintainer: $USER
Package: wxmaxima
Priority: optional
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Section: math
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Version: 25.01.0-DevelopmentSnapshot-1
Installed-Size: 15544 

Install wxMaxima

sudo dpkg -i wxmaxima_25.01.0-DevelopmentSnapshot-1_amd64.deb 
$ apt show wxmaxima
Package: wxmaxima
Version: 25.01.0-DevelopmentSnapshot-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: $USER
Installed-Size: 15.9 MB
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: wxMaxima is a document based interface for the computer algebra system Maxima.

N: There is 1 additional record. Please use the '-a' switch to see it 

Some bugs become visible, if you try a dark theme for wxMaxima worksheets.
A workaround is to disable "Intelligently hide cell brackets"

wxMaxima → Edit → Configure → Worksheet: 
Disable (uncheck) "Intelligently hide cell brackets" 

You may also try:

wxMaxima → View → "Invert worksheet brightness" 

wxMaxima is a GUI for maxima. If maxima fails to work (as it usually happens on Fedora), wxMaxima does not react on maxima commands (e.g., 1 + 1). The Fedora users, of course, cannot understand what is going on. This is, largely because, perhaps, there are pipewire/pulseaudio users.

You may want to test maxima before testing wxMaxima. To open Maxima Shell, type the command maxima  in the command-line terminal.

$ maxima
Maxima 5.46.0 https://maxima.sourceforge.io
using Lisp GNU Common Lisp (GCL) GCL 2.6.14 git tag Version_2_6_15pre3
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.

(%i1) A: (x-2)*(x-3);
(%o1)                           (x - 3) (x - 2)
(%i2) B: expand(A);
                                  2
(%o2)                            x  - 5 x + 6
(%i3) solve(B,x);
(%o3)                           [x = 3, x = 2]
(%i4) factor(B);
(%o4)                           (x - 3) (x - 2)
(%i5) subst(x=3,B);
(%o5)                                  0
(%i6) subst(x=2,B);
(%o6)                                  0
(%i7) quit(); 

Perhaps, mathematical knowledge may help to understand the problems of digital sound processing (e.g., resampling), but it may not liberate from ignorance. The cult of pulseaudio is a sort of Cargo cult, and therefore, it is doomed to persist despite any failures to materialize utopian dreams. If the particular "advanced projects" failed, the ends are still valid, and the dream as a vehicle of truth stays unimpaired. The "myth-dream" of the cult is, in essence, a self-generating "objective truth". The "myth-dream" of "advanced Linux sound system" will inevitably produce new sorts of pulseaudio/pipewire and other "advanced crap". The problem is that such myths generate the true knowledge which emerges as an imperative to action. The Cargo cult persists because it fails to fulfill its ends. The cult of systemd is the same thing.

In the context of Cargo the myth-dream is truth, and, moreover, the several truths contained in the myth-dream emerge as imperatives. Ideally, the task of the charismatic figure can be seen as an attempt to realize these imperatives in action. (Kenelm Burridge, Mambu (1960). pp. 249-250).

Last edited by igorzwx (Yesterday 00:00:10)

Offline

Board footer