The officially official Devuan Forum!

You are not logged in.

#151 Freedom Hacks » [HowTo] samurai_1.9.0-1_amd64.deb (ninja-compatible) patched with SED » 2025-05-22 07:27:07

igorzwx
Replies: 0

samurai is a ninja-compatible build tool written in C99 with a focus on simplicity, speed, and portability.
_https://github.com/michaelforney/samurai

samurai - Arch Linux
_https://archlinux.org/packages/extra/x86_64/samurai/
_https://gitlab.archlinux.org/archlinux/packaging/packages/samurai
_https://gitlab.archlinux.org/archlinux/packaging/packages/samurai/-/blob/main/PKGBUILD?ref_type=heads

Install build-essential, etc.

sudo apt install build-essential debhelper dh_make fakeroot git sed tree quilt 

Download sourcedir:

mkdir BUILD_SAMU
cd BUILD_SAMU
git clone https://github.com/michaelforney/samurai.git --depth 1 

Install a template:

cd samurai
export DEBFULLNAME="John Frum"
dh_make --createorig -p samurai_1.9.0 -c apache -e my@mail.org -s 
$ dh_auto_build --list | grep Auto-selected
Auto-selected: makefile 

Create debian/samurai.install

echo -e 'LICENSE usr/share/licenses/samurai' >> debian/samurai.install 
$ cat debian/samurai.install
LICENSE usr/share/licenses/samurai 

Append 7 lines to debian/rules with echo command

echo -e "# For HTML docs are missing\nexport DH_ALWAYS_EXCLUDE=doc:doc-base\n# Patching Makefile with sed\noverride_dh_auto_build:\n\tsed -i -e 's/usr\/local/usr/g' Makefile\n\tdh_auto_build --\n" >> debian/rules 
$ cat -A debian/rules |grep Patching -A5 -B2
# For HTML docs are missing$
export DH_ALWAYS_EXCLUDE=doc:doc-base$
# Patching Makefile with sed$
override_dh_auto_build:$
^Ised -i -e 's/usr\/local/usr/g' Makefile$
^Idh_auto_build --$
$ 
$ tail -7 debian/rules
# For HTML docs are missing
export DH_ALWAYS_EXCLUDE=doc:doc-base
# Patching Makefile with sed
override_dh_auto_build:
	sed -i -e 's/usr\/local/usr/g' Makefile
	dh_auto_build --

Edit debian/control

nano debian/control
$ cat debian/control
Source: samurai
Section: devel
Priority: optional
Maintainer: John Frum <my@mail.org>
Rules-Requires-Root: no
Build-Depends:
 debhelper-compat (= 13),
Standards-Version: 4.6.2
Homepage: https://github.com/michaelforney/samurai
#Vcs-Browser: https://salsa.debian.org/debian/samurai
#Vcs-Git: https://salsa.debian.org/debian/samurai.git

Package: samurai
Architecture: amd64
Depends:
 ${shlibs:Depends},
 ${misc:Depends},
Description: samurai is a ninja-compatible build tool written in C99 
 • with a focus on simplicity, speed, and portability.
 • samurai implements the ninja build language through version 1.9.0 except for MSVC dependency handling (deps = msvc).
 • It uses the same format for .ninja_log and .ninja_deps as ninja, currently version 5 and 4 respectively.
 • It is feature-complete and supports most of the same options as ninja. 

Create Debian source package

dpkg-source -b . 

Build Debian binary package (deb)

dpkg-buildpackage -us -uc -b 
$ ls -1 ../*.deb
../samurai_1.9.0-1_amd64.deb
../samurai-dbgsym_1.9.0-1_amd64.deb 

Install samurai

sudo dpkg -i ../samurai_1.9.0-1_amd64.deb 
$ samu --version
1.9.0
$ man samu 

Build-Depends:

$ objdump -p /usr/bin/samu | grep NEEDED
  NEEDED               libc.so.6

$ apt-file find /usr/lib/x86_64-linux-gnu/libc.so | grep dev
libc6-dev: /usr/lib/x86_64-linux-gnu/libc.so 

Now you can build wxMaxima with the help of samurai.

A static muon is not easy to compile on Devuan, but the newest version of static muon executable with embedded samurai is already available for download.

$ ldd muon-v0.5.0-amd64-linux
	not a dynamic executable

$ file muon-v0.5.0-amd64-linux
muon-v0.5.0-amd64-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=1a2a3022413581300d66c86f02329ed4aa782022, stripped 

#152 Re: Freedom Hacks » How to build a portable wxMaxima-25.04.0 and a Debian package for it. » 2025-05-22 07:21:15

How to build wxMaxima with samu

Enable portable CMake 4.0.2

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

1. Generate the Buildsystem

cmake -S wxmaxima -B build -G Ninja -DCMAKE_BUILD_TYPE="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -DCMAKE_INSTALL_PREFIX='/usr' -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config -DWXM_INTERPROCEDURAL_OPTIMIZATION=ON -Wno-dev 
$ ls -1
build
wxmaxima
$ ls build | grep ninja
build.ninja 

2. Compile wxMaxima with samu

samu -C build

3. Make a Debian package with CPack

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

Install wxMaxima

sudo dpkg -i wxmaxima_25.04.0-1_amd64.deb
$ wxmaxima --version
wxMaxima 25.04.0 (Git version: 6bc13e5)

#153 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-05-20 06:20:30

Khylsdrak wrote:

I want to thank you, the sound is really good, everything works perfectly !

If you enjoy it, you may say thanks to the creator of the magic fftrate codec, Sergei Petrov.
_https://github.com/PetrovSE/fftrate

There is a belief that fftrate may cure deafness. It may not always work. If it does not, the victims of pulseaudio may not have any chance to regain hearing loss. It seems impossible to cure deafness: "there are no known treatments to restore hearing, because auditory hair cells in mammals, unlike those in birds or fish, do not regenerate once lost."
_https://www.hsci.harvard.edu/major-step-toward-treatment-leading-form-hearing-loss

#154 Freedom Hacks » Hacking Build-Depends of Debian source packages » 2025-05-09 11:40:35

igorzwx
Replies: 0

There might be obstacles on the road to freedom. You may get problems like this:

$ dpkg-buildpackage -b
...
fatal error: toml++/toml.hpp: No such file or directory
    2 | #include "toml++/toml.hpp" 

To overcome this obstacle you can simply borrow "toml++/toml.hpp" from Debian testing and compile the package you need on Devuan stable. For some strange reason, this method usually works.

You can find "toml++/toml.hpp" in  a Debian (testing=trixie) package:

Package: libtomlplusplus-dev (3.4.0+ds-0.2 and others)
_https://packages.debian.org/trixie/libtomlplusplus-dev

$ tree -L 4 libtomlplusplus-dev_3.4.0+ds-0.2+b1_amd64
libtomlplusplus-dev_3.4.0+ds-0.2+b1_amd64
├── DEBIAN
│   ├── control
│   └── md5sums
└── usr
    ├── include
    │   └── toml++
    │       ├── impl
    │       ├── toml.h
    │       └── toml.hpp
    ├── lib
    │   └── x86_64-linux-gnu
    │       ├── cmake
    │       ├── libtomlplusplus.so -> libtomlplusplus.so.3
    │       └── pkgconfig
    └── share
        ├── doc
        │   └── libtomlplusplus-dev
        └── doc-base
            └── libtomlplusplus-dev.tomlplusplus 

You can download this package, and extract "usr" to a folder like this:

$HOME/.CTools/LIBS/
$HOME/.CTools/LIBS/usr/include/toml++/toml.hpp 

Then you can add "$HOME/.CTools/LIBS/usr/include" to $CPLUS_INCLUDE_PATH

The secret knowledge is here:
_https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html

It is very simple:

$ echo $CPLUS_INCLUDE_PATH
                           # It is empty

$ export CPLUS_INCLUDE_PATH="$HOME/.CTools/LIBS/usr/include" 

Verify the INCLUDE_PATH for g++ with a secret command:

echo | gcc -Wp,-v -xc++ - -fsyntax-only
$ echo | gcc -Wp,-v -xc++ - -fsyntax-only
ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/12"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:

 /home/<YOUR USER NAME>/.CTools/LIBS/usr/include
 /usr/include/c++/12
 /usr/include/x86_64-linux-gnu/c++/12
 /usr/include/c++/12/backward
 /usr/lib/gcc/x86_64-linux-gnu/12/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list. 

Now everything works. The "fatal error" had gone away.

The question remains: why does this method work. It looks like they do not update software on Debian stable. They have restricted resources, and, of course, they have to fix problems caused by systemd, pipewire and pulseaudio.

#155 Freedom Hacks » The road to freedom » 2025-05-07 01:52:20

igorzwx
Replies: 2

Knowledge and ignorance—
        a man who knows them both together,
    Passes beyond death by ignorance,
        and by knowledge attains immortality.
            Isha Upanishad, Verse 12

The road to freedom is short and straightforward. Read PKGBUILs of AUR packages, and do the same on Devuan.

It doesn't always work. Sometimes it is much better with Debian sources, if you know the secret commands. Debian packaging is a sacred ritual, not a secular one. It requires initiation into secret knowledge. If you are not initiated, you are doomed to dwell in ignorance and doubt. In essence, initiation is a rite of passage marking entrance into a sort of esoteric society. In particular, it signifies a transformation in which the initiate is 'reborn' into a new role.

Step 1: Install a secret package

sudo apt-get install packaging-dev 

Step 2: Download the source you need. For example:

Debian testing (Trixie)
_https://packages.debian.org/source/testing/gnuplot

Source Package: gnuplot (6.0.2+dfsg1-1)

Debian Package Source Repository (Browsable)

https://salsa.debian.org/science-team/gnuplot 
mkdir BUILD_GIT

cd BUILD_GIT

git clone https://salsa.debian.org/science-team/gnuplot.git --depth 1 
$ ls
gnuplot

$ du -sh *
17M	gnuplot

Step 3: Install "Build-Depends"

cd gnuplot

mk-build-deps
$ ls *.deb
gnuplot-build-deps_6.0.2+dfsg1-1_all.deb 

Install gnuplot-build-deps*.deb

sudo dpkg -i gnuplot-build-deps_6.0.2+dfsg1-1_all.deb 

You may notice a problem:

$ sudo dpkg -i gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
...
dpkg: error processing package gnuplot-build-deps (--install):
 dependency problems - leaving unconfigured 

Fix it with a magic command:

sudo apt -f install

It may remove "emacs-gtk" and install "emacs-nox" instead. You can reinstall it later, or remove them both.

Emacs - Installation options on Linux and Lucid Emacs vs. XEmacs
_https://youtu.be/ugFtz7XOOWU?t=25s

$ mv -v gnuplot-build-deps_6.0.2+dfsg1-1_all.deb ../ 

Step 4: Prepare the source

Execute secret commands:

export QUILT_PATCHES=debian/patches

quilt push -a 

The output on terminal should look like this:

$ quilt push -a
Applying patch 04_fix_libexecdir.diff
patching file src/Makefile.am
...
Applying patch 50_no-webp_figures-in-documentation.patch
patching file docs/Makefile.am

Now at patch 50_no-webp_figures-in-documentation.patch 

Step 5: Build GnuPlot

dpkg-buildpackage -b 
$ ls -1 ../*.deb
../gnuplot_6.0.2+dfsg1-1_all.deb
../gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
../gnuplot-data_6.0.2+dfsg1-1_all.deb
../gnuplot-doc_6.0.2+dfsg1-1_all.deb
../gnuplot-nox_6.0.2+dfsg1-1_amd64.deb
../gnuplot-nox-dbgsym_6.0.2+dfsg1-1_amd64.deb
../gnuplot-qt_6.0.2+dfsg1-1_amd64.deb
../gnuplot-qt-dbgsym_6.0.2+dfsg1-1_amd64.deb
../gnuplot-x11_6.0.2+dfsg1-1_amd64.deb
../gnuplot-x11-dbgsym_6.0.2+dfsg1-1_amd64.deb 

Step 6: Install GnuPlot

cd ../
sudo dpkg -i gnuplot_6.0.2+dfsg1-1_all.deb gnuplot-data_6.0.2+dfsg1-1_all.deb gnuplot-qt_6.0.2+dfsg1-1_amd64.deb 

Step 7: Test

You can test GnuPlot with Maxima

$ maxima

(%i1) plot2d([tanh(20*sin(x))], [x,-10*%pi,10*%pi], [y,-1.1,1.1], [plot_format, gnuplot])$

(%i3) quit(); 

You can export plots from GnuPlot window to SVG format. It works with gnuplot-qt
Click on "Export" icon (the top left corner of GnuPlot window), and select "Export to SVG" in drop down menu.

Doing Graphics with Maxima - Maxima Tutorial

http://www.bildungsgueter.de/MaximaEN/Pages/GraphicsSurvey01.htm

#156 Freedom Hacks » How to build a portable wxMaxima-25.04.0 and a Debian package for it. » 2025-05-02 10:48:50

igorzwx
Replies: 2
$ inxi -b | grep Host -A1
  Host: devuan Kernel: 6.1.0-34-amd64 arch: x86_64 bits: 64 Desktop: MATE
    v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
How to build portable standalone wxMaxima-25.04.0 and wxMaxima-25.04.0.deb

NOTE: It is "portable standalone" in the sense that it does not require installation.
Just click on it and use. You can also start it from terminal, or create a deskto launcher wxMaxima.desktop

$ ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)

_https://github.com/wxMaxima-developers/wxmaxima/releases/tag/Version-25.04.0
wxMaxima 25.04.0  Latest
A bugfix release

https://github.com/wxMaxima-developers/wxmaxima.git
Build dependencies

To build wxMaxima-25.04.0.deb, we need CMake 4.0.1
There is a portable standalone version of CMake 4.0.1 in GitHub.
The manual for it is here:

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

You can simply download and unpack it into your home folder, for example:

$ ls -1 $HOME/.CTools/
cmake-4.0.1
meson-1.7.2 

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 

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

Clone the source from git:

mkdir wxmaxima2504_build
cd wxmaxima2504_build

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

Project: wxMaxima-25.04.0 (GitHub)

Create DEB_config.cmake

nano ./wxmaxima/DEB_config.cmake 
$ cat ./wxmaxima/DEB_config.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}")
set(CPACK_DEBIAN_PACKAGE_RELEASE "1")

set(CPACK_DEBIAN_PACKAGE_MAINTAINER Devuan
    CACHE STRING "Package MAINTAINER"
)
# 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)
# set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ")
list(APPEND CPACK_SOURCE_IGNORE_FILES "/\.git*")

include(CPack)

Find the "CMakeLists" of the main project:

$ ls ./wxmaxima | grep CMakeLists
CMakeLists.txt 

To enable the DEB_config.cmake in the main project, append these lines:

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(DEB_config.cmake) 

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(DEB_config)' >> ./wxmaxima/CMakeLists.txt

$ tail -3 ./wxmaxima/CMakeLists.txt

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

Enable portable 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="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -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 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/.../wxmaxima2504_build/wxmaxima_25.04.0-1_amd64.deb generated. 

Generate the source package with CPack

$ cpack -G TGZ -DCPACK_PACKAGING_INSTALL_PREFIX="/" --config build/CPackSourceConfig.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/igor/Desktop/Builds/Builds_wxMaxima/Build_wxmaxima_25.01.0_GIT/wxmaxima2504_build/wxmaxima
CPack: Create package
CPack: - package: /home/.../wxmaxima2504_build/wxMaxima-25.04.0-Source.tar.gz generated.
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Source.tar.gz
$ 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: Daedalus
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.04.0-1
Installed-Size: 15154

Install wxMaxima

sudo dpkg -i wxmaxima_25.04.0-1_amd64.deb 
$ wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
$ apt show wxmaxima
Package: wxmaxima
Version: 25.04.0-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: Daedalus
Installed-Size: 15.5 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.

The project directory wxmaxima2504_build:

$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Source.tar.gz
■  What was built seems to be a sort of portable standalone wxMaxima.
./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima

Just click on it and use.

$ ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)

It should work on any Linux with "NEEDED" shared libraries installed:

$ readelf --dynamic ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima | grep NEEDED
 0x0000000000000001 (NEEDED)             Shared library: [libwx_gtk3u_richtext-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwx_gtk3u_aui-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwx_gtk3u_webview-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwx_baseu_net-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwx_baseu_xml-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwx_gtk3u_core-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libwx_baseu-3.2.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
$ readelf --dynamic ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima | grep NEEDED | sort | uniq -u | sed -e 's/ /\n/g' | sed -n '/\[l/p' | sed -e 's/\]/ /g' | sed -e 's/\[//g' | tee wxMaxima-git_DEPs_libs.txt
libc.so.6 
libgcc_s.so.1 
libm.so.6 
libstdc++.so.6 
libwx_baseu-3.2.so.0 
libwx_baseu_net-3.2.so.0 
libwx_baseu_xml-3.2.so.0 
libwx_gtk3u_aui-3.2.so.0 
libwx_gtk3u_core-3.2.so.0 
libwx_gtk3u_richtext-3.2.so.0 
libwx_gtk3u_webview-3.2.so.0 

You can verify all dependencies, for example:

$ apt-file search libwx_gtk3u_richtext-3.2.so.0
libwxgtk3.2-1: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_richtext-3.2.so.0
libwxgtk3.2-1: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_richtext-3.2.so.0.2.0 
$ apt info wxmaxima | grep Depends
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)

Notice that wxMaxima is a GUI for Maxima. It does depends on Maxima, in this sense.

#157 Re: Off-topic » Lightweight system without (too) bloated software » 2025-04-26 18:08:49

CopyQ: persistent bugs
$ copyq --version
CopyQ Clipboard Manager 10.0.0
Qt: 5.15.8
KNotifications: 5.103.0
Compiler: GCC
Arch: x86_64-little_endian-lp64
OS: Devuan GNU/Linux 5 (daedalus) 
$ copyq
Warning: [default] QtWarning: QSystemTrayIcon::setVisible: No Icon set
^C

$ copyq --start-server 
$ dpkg -L copyq | grep desktop
/usr/share/applications/com.github.hluk.copyq.desktop

$ cat /usr/share/applications/com.github.hluk.copyq.desktop | grep Exec
Exec=copyq --start-server show 
Workaround (start copyq in the tray):
Exec=bash -c 'killall copyq  -wq; copyq --start-server &' 

#158 Re: Off-topic » Lightweight system without (too) bloated software » 2025-04-24 23:40:53

@Khylsdrak

CopyQ might be useful, although its manual (man copyq) seems misleading
_https://github.com/hluk/CopyQ/issues/225#issuecomment-1925401588

$ cat ~/.config/autostart/copyq-autostart.desktop
[Desktop Entry]
Type=Application
Exec=/usr/bin/copyq --start-server
Hidden=false
Name[en_US]=CopyQ autostart
Name=CopyQ
Comment[en_US]=Advanced clipboard manager
Comment=Advanced clipboard manager
# Workaround / fix for issue #1526 that prevents a proper autostart of the tray icon in GNOME
X-MATE-Autostart-Delay=3
cat /usr/share/applications/com.github.hluk.copyq.desktop | grep Desktop -A15

EDIT:

Workaround for MATE Desktop: Start CopyQ in the tray 

Create a new Desktop launcher for CopyQ with a text editor (nano or mousepad):

nano ~/.local/share/applications/copyq.desktop
mousepad ~/.local/share/applications/copyq.desktop
$ cat ~/.local/share/applications/copyq.desktop
[Desktop Entry]
Name=CopyQ
# Start CopyQ in the tray  / Workaround for MATE Desktop
Exec=bash -c 'copyq && copyq exit && copyq --start-server' 2>/dev/null
# Exec=copyq --start-server show
Icon=copyq
GenericName=Clipboard Manager
# Workaround / fix for issue #1526 that prevents a proper autostart of the tray icon in GNOME
X-GNOME-Autostart-Delay=3
# The rest is taken from Klipper application.
Type=Application
Terminal=false
X-KDE-autostart-after=panel
X-KDE-StartupNotify=false
X-KDE-UniqueApplet=true
Categories=Qt;KDE;Utility;
Comment=A cut & paste history utility
Name[en_US]=CopyQ-fixed 

#159 Re: Freedom Hacks » How to build wxMaxima_25.01.0.deb (DevelopmentSnapshot) from git » 2025-04-24 22:36:53

[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_DEBIAN_PACKAGE_MAINTAINER Devuan
    CACHE STRING "Package MAINTAINER"
)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_PACKAGE_VERSION "${WXMAXIMA_VERSION}-Devuan5")
set(CPACK_DEBIAN_PACKAGE_RELEASE "1")
# 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)
# set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ")
set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_IGNORE_FILES
  \\.git/
  build/
  ".*~$"
)
set(CPACK_VERBATIM_VARIABLES YES)
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-Devuan5-1_amd64.deb generated.

Generate the source package of wxMaxima with CPack

$ cpack --config build/CPackSourceConfig.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/.../wxmaxima_build/wxmaxima
CPack: Create package
CPack: - package: /home/.../wxmaxima_build/wxMaxima-25.01.0-DevelopmentSnapshot-Devuan5-Source.tar.gz generated.
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb
wxMaxima-25.01.0-DevelopmentSnapshot-Devuan5-Source.tar.gz
$ 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: Devuan
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-Devuan5-1
Installed-Size: 15532

Install wxMaxima

sudo dpkg -i wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb 
$ apt show wxmaxima
Package: wxmaxima
Version: 25.01.0-DevelopmentSnapshot-Devuan5-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: Devuan
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).

#160 Re: Off-topic » Lightweight system without (too) bloated software » 2025-04-22 15:46:20

Khylsdrak wrote:

Mirage is very light and good

 

$ apt show mirage
Package: mirage
Version: 0.11.1-1+b6

The version number is telling.

$ mirage

(mirage:13910): Gtk-CRITICAL **: 17:26:25.051: gtk_buildable_add_child: assertion 'iface->add_child != NULL' failed

(mirage:13910): Gtk-CRITICAL **: 17:26:25.085: gtk_buildable_add_child: assertion 'iface->add_child != NULL' failed

#161 Freedom Hacks » How to build wxMaxima_25.01.0.deb (DevelopmentSnapshot) from git » 2025-04-22 15:16:51

igorzwx
Replies: 1

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

#162 Freedom Hacks » How to build wxMaxima_24.02.1 from Debian sources » 2025-04-16 20:58:22

igorzwx
Replies: 0

There is a belief that knowledge liberates from ignorance. Perhaps, wxMaxima may help semi-deaf Linux users to understand something about resampling and the Gibbs phenomenon. Although, of course, mathematics might be a problem, because pulseaudio is likely to damage the brain in a severe and irreversible manner. Hearing loss and dementia are doomed to follow.

Hearing Loss and Dementia | The Audiology Center
_https://www.myaudiologycenter.com/untreated-hearing-loss-risks-and-dementia/

_https://en.wikipedia.org/wiki/Maxima_(software)
Maxima is a powerful software package for performing computer algebra calculations in mathematics and the physical sciences.

_https://en.wikipedia.org/wiki/Maxima_(software)#Interfaces
wxMaxima is high-quality graphical front-end using the wxWidgets framework. wxMaxima provides a cell structure similar to the Mathematica notebook.

[Wikibooks] Maxima
_https://en.wikibooks.org/wiki/Maxima

Maxima by Example
_https://home.csulb.edu/~woollett/mbe.html
_https://home.csulb.edu/~woollett/index.html

How to build wxmaxima_24.02.1 on Devuan 5
$ 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) 

Source Package: wxmaxima (24.02.1-1)
_https://packages.debian.org/source/testing/wxmaxima

Download wxMaxima:

wxmaxima_24.02.1-1.dsc 	
wxmaxima_24.02.1.orig.tar.gz 	
wxmaxima_24.02.1.orig.tar.gz.asc 	
wxmaxima_24.02.1-1.debian.tar.xz
Source: wxmaxima
Build-Depends: debhelper-compat (= 13), cmake (>= 3.4) | cmake3, libwxgtk3.2-dev, xvfb, netcat-openbsd, xauth, desktop-file-utils, appstream-util, libwxgtk-webview3.2-dev 

To build wxmaxima (24.02.1-1), we need cmake (>= 3.4).

$ cmake --version
cmake version 3.25.1

CMake v4.0.1

https://github.com/Kitware/CMake/releases/tag/v4.0.1

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
$ ls
cmake-4.0.1-linux-x86_64.tar.gz
mkdir -v $HOME/.CTools

tar -zxvf cmake*.tar.gz -C $HOME/.CTools
$ ls $HOME/.CTools
cmake-4.0.1-linux-x86_64
mv $HOME/.CTools/cmake-4.0.1-linux-x86_64 $HOME/.CTools/cmake-4.0.1
$ ls $HOME/.CTools/
cmake-4.0.1

$ ls -1 $HOME/.CTools/cmake-4.0.1
bin
doc
man
share

You can open a file manager in the cmake folder and investigate the content

caja $HOME/.CTools/cmake-4.0.1 
How to use portable CMake v4.0.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1 

Install compilers, build dependencies, etc.:

sudo apt install build-essential debhelper libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev 

You may want to install devscripts and a sort of AI assistant:

sudo apt install devscripts command-not-found

sudo update-command-not-found

EXAMPLES:

$ mmk-build-deps
Command 'mmk-build-deps' not found, did you mean:
  command 'mk-build-deps' from deb devscripts
Try: sudo apt install <deb name>

$ gbp
Command 'gbp' not found, but can be installed with:
sudo apt install git-buildpackage 

Now we can build wxMaxima.

$ ls -1
wxmaxima_24.02.1-1.debian.tar.xz
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc

Unpack the source:

dpkg-source -x *.dsc
$ ls -1
wxmaxima-24.02.1
wxmaxima_24.02.1-1.debian.tar.xz
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc

Change to the source directory:

cd wxmaxima-24.02.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

We have all the dependencies needed to build wxMaxima.
But, formally, the "Build-Depends" are not satisfied.
Therefore, we have to use -d flag to override the default checking procedure.

Verify whether the terminal prompt is in the source directory:

$ pwd
/home/.../Builds/Build_wxmaxima_24.02.1-1/wxmaxima-24.02.1

Build wxMaxima (use -d flag to override):

$ dpkg-buildpackage -us -uc -b -d
...
dpkg-deb: building package 'wxmaxima-dbgsym' in '../wxmaxima-dbgsym_24.02.1-1_amd64.deb'.
dpkg-deb: building package 'wxmaxima' in '../wxmaxima_24.02.1-1_amd64.deb'.
 dpkg-genbuildinfo --build=binary -O../wxmaxima_24.02.1-1_amd64.buildinfo
 dpkg-genchanges --build=binary -O../wxmaxima_24.02.1-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
 dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included) 
$ cd ../

[$ ls -1 *.deb
wxmaxima_24.02.1-1_amd64.deb
wxmaxima-dbgsym_24.02.1-1_amd64.deb
$ dpkg-deb --info wxmaxima_24.02.1-1_amd64.deb | grep Package: -A11
 Package: wxmaxima
 Version: 24.02.1-1
 Architecture: amd64
 Maintainer: Gunter Königsmann <wxmaxima@physikbuch.de>
 Installed-Size: 14144
 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
 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 

Install wxMaxima

sudo dpkg -i wxmaxima_24.02.1-1_amd64.deb 
$ apt show wxmaxima | grep Package: -A2
Package: wxmaxima
Version: 24.02.1-1
Status: install ok installed

$ whereis wxmaxima
wxmaxima: /usr/bin/wxmaxima /usr/share/man/man1/wxmaxima.1.gz

$ wxmaxima --version
wxMaxima 24.02.1

You may want to install gnuplot

sudo apt install gnuplot

#163 Re: Desktop and Multimedia » openoffice writer and impress constantly crash Xorg » 2025-04-14 20:30:35

[Linux Magazine]

LibreOffice vs OpenOffice

The Clear Choice
By Bruce Byfield

While LibreOffice and OpenOffice have a shared past, LibreOffice outstrips OpenOffice in contributors, code commits, and features.

A search for comparisons of LibreOffice and Apache OpenOffice returns over 8.3 million results. That number comes as no surprise, given that LibreOffice and OpenOffice are the best-known open source office suites and share a common past. However, what is surprising is how shallow many of those comparisons are. Many offer only a superficial glimpse at either office suite from the viewpoint of an unsophisticated and undemanding user. Often, the comparisons are obsolete. Even more importantly, many comparisons strive for a false sense of objectivity by declaring that any differences are minor. However, by every possible standard, LibreOffice outshines OpenOffice and shows OpenOffice to be outdated. To pretend otherwise is a distortion of the truth.
_https://www.linux-magazine.com/Online/Features/LibreOffice-vs-OpenOffice

#164 Freedom Hacks » How to change dependencies of a Debian package » 2025-04-14 00:56:03

igorzwx
Replies: 21

There is a standard method with which to modify Debian packages.
We can use it to remove strange dependencies of strawberry_1.2.9-bookworm_amd64.deb (github)
_https://github.com/strawberrymusicplayer/strawberry/releases/tag/1.2.9

_https://github.com/strawberrymusicplayer/strawberry
Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles.

It is aimed at audiophiles in the sense, perhaps, that it depends on gstreamer1.0-pulseaudio. There is a common belief that Linux users, in general, and Linux audiophiles, in particular, tend to be semi-deaf and semi-blind, and, therefore, they want to use pulseaudio and all sorts of equalizers, amplifiers, and DACs to enhance high frequencies.

Why are high frequency sounds typically the first to go in hearing loss?

https://www.newyorkhearingdoctors.com/why-are-high-frequency-sounds-typically-the-first-to-go-in-hearing-loss/

Download: strawberry_1.2.9-bookworm_amd64.deb (github)

https://github.com/strawberrymusicplayer/strawberry/releases/download/1.2.9/strawberry_1.2.9-bookworm_amd64.deb
$ ls
strawberry_1.2.9-bookworm_amd64.deb
$ dpkg --info *.deb | grep Depends -B5
 Package: strawberry
 Version: 1.2.9-bookworm
 Architecture: amd64
 Maintainer: Jonas Kvinge <jonas@jkvinge.net>
 Installed-Size: 13869
 Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-alsa, gstreamer1.0-pulseaudio 

gstreamer1.0-alsa, gstreamer1.0-pulseaudio are, of course, pseudo-dependencies. They are not real dependencies in the sense that they can be safely removed.

Strawberry player is simply a GUI for GStreamer, and nothing more. Regardless of what you think GStreamer is, it does not depend on its plugins. It should be obvious that GStreamer plugins depend on GStreamer and not other way round.

There is a reason, of course, why the GStreamer package is split into "libgstreamer" and "plugins". If you have not been initiated into the secret knowledge of GStreamer, you may try to read its documentation
_https://gstreamer.freedesktop.org/documentation/installing/on-linux.html

ALSA users may want to install gstreamer1.0-alsa.
OSS4 users may want to remove gstreamer1.0-alsa, in order to use GStreamer based media players (e.g. Totem, Parole, and the like) with OSS4.

NOTE: ALSA users are recommended to install "gstreamer1.0-alsa". Otherwise, GStreamer may use "openalsink" with ALSA.
_https://gstreamer.freedesktop.org/documentation/openal/openalsink.html

It is not difficult to correct dependencies of a Debian package.

Install fakeroot

sudo apt install fakeroot
$ ls
strawberry_1.2.9-bookworm_amd64.deb

Open fakeroot console and execute mkdir debdir:

$ fakeroot
# mkdir debdir

# ls -1
debdir
strawberry_1.2.9-bookworm_amd64.deb

Unpack the deb package to debdir

# dpkg-deb -R *.deb debdir

# ls -1 ./debdir
DEBIAN
usr

# ls -1 ./debdir/DEBIAN
control
md5sums

# file ./debdir/DEBIAN/control
./debdir/DEBIAN/control: ASCII text, with very long lines (784)

Remove unwanted dependencies with a text editor:

# nano ./debdir/DEBIAN/control
Unable to create directory /root/.local/share/nano/: Permission denied
It is required for saving/loading search history or cursor positions. 

You may have noticed that nano is complaining about missing root privileges.
This is because "fakeroot" is not a real "root", as the name suggests.
Such complaints can be safely ignored.

# cat ./debdir/DEBIAN/control | grep Depends -B5 -A1
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
Suggests: gstreamer1.0-alsa, gstreamer1.0-pulseaudio 

Build the package:

# dpkg-deb -b debdir strawberry_1.2.9-devuan_amd64-fixed.deb
dpkg-deb: building package 'strawberry' in 'strawberry_1.2.9-devuan_amd64-fixed.deb'.

# ls -1 *.deb
strawberry_1.2.9-bookworm_amd64.deb
strawberry_1.2.9-devuan_amd64-fixed.deb

Exit fakeroot console

# exit
exit

Check dependencies

$ dpkg --info *fixed.deb | grep Depends -B5 -A1
 Package: strawberry
 Version: 1.2.9-bookworm
 Architecture: amd64
 Maintainer: Jonas Kvinge <jonas@jkvinge.net>
 Installed-Size: 13869
 Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
 Suggests: gstreamer1.0-alsa, gstreamer1.0-pulseaudio

Install Strawberry

sudo dpkg -i strawberry_1.2.9-devuan_amd64-fixed.deb
$ strawberry --version
Strawberry 1.2.9

$ apt info strawberry | grep Package: -A2
Package: strawberry
Version: 1.2.9-bookworm
Status: install ok installed

You can also rename a Debian package, change version, add scripts to debdir/usr/bin, and so on.
Notice that it is immoral (and illegal) to insert malware into Debian packages.

To debug Strawberry, you can simply start it from terminal.

EXAMPLES:

Strawberry is using "openalsink" with ALSA:

$ strawberry 
...
22:24:48.921 DEBUG Player:776                       Playing song "" QUrl("file:///.../audio/audio_test_48kHz_16bit.flac") position 0
22:24:48.921 DEBUG GstEnginePipeline:459            Using "playbin" for pipeline
22:24:48.974 DEBUG GstEnginePipeline:797            Setting buffer duration: 4000000000 low watermark: 0.33 high watermark: 0.99
22:24:48.976 DEBUG GstEnginePipeline:480            "openalsink" does not have volume, using own volume.
...
[fftrate ALSA plugin output]
Input:  44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.

Input:  48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates:  48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.

Strawberry is using "oss4sink" with OSS4:

$ strawberry 
...
22:16:51.126 DEBUG Player:776                       Playing song "" QUrl("file:///.../audio/audio_test_48kHz_16bit.flac") position 0
22:16:51.126 DEBUG GstEnginePipeline:459            Using "playbin" for pipeline
22:16:51.250 DEBUG GstEnginePipeline:626            "oss4sink" has volume, enabling volume synchronization.

#165 Re: Desktop and Multimedia » mupdf annoying warnings » 2025-04-10 19:46:20

[AI-Assisted Answer] This warning indicates that ICC (International Color Consortium) support is disabled, which can lead to incorrect color rendering in applications that rely on color management.

   
The patch does not solve the problem, but it removes warnings:   
0002-Only-warn-once-about-the-missing-ICC-support.patch
_https://sources.debian.org/patches/mupdf/1.25.1%2Bds1-5/0002-Only-warn-once-about-the-missing-ICC-support.patch/

Since pulseaudio users are usually semi-deaf and semi-blind, they may try to ignore such warnings, even though they are "repeated 18 times".

Patching an Existing Debian Package [using quilt]
_https://www.guyrutenberg.com/2017/10/06/patching-an-existing-debian-package/

See also:
How to rebuild audacious-plugins
_https://dev1galaxy.org/viewtopic.php?id=6686

#166 Re: Desktop and Multimedia » mupdf annoying warnings » 2025-04-10 14:09:51

amaro wrote:
warning: ICC support is not available

Why not google it?

https://www.google.com/search?q=warning:+ICC+support+is+not+available

There is a patch (a sort of workaround):

https://sources.debian.org/patches/mupdf/1.25.1%2Bds1-5/0002-Only-warn-once-about-the-missing-ICC-support.patch/
UsingQuilt

_https://wiki.debian.org/UsingQuilt

Using quilt in Debian source packages.

    This page is aimed at people who want to make some changes to a Debian source package which is already using quilt.
    The intention is not to explain quilt, but to offer some Debian specific tips

#167 Freedom Hacks » Patching on the fly with "stream editor" (fftrate ALSA plugin) » 2025-04-03 02:32:05

igorzwx
Replies: 19

What is really cool about Arch Linux packaging is patching on the fly with sed.
_https://en.wikipedia.org/wiki/Sed
Ordinary patching techniques are also used, of course, in Arch PKGBUILDs, but
the advanced users tend to patch sources on the fly with sed (if possible).

[ArchWiki] Creating patches
Note: If you only need to change one or two lines, you might want to use sed instead.
_https://wiki.archlinux.org/title/Patching_packages

NOTE: This patching technique (sed) is also used in Debian packages (but rather seldom).
      Usually, it is done with quilt _https://wiki.debian.org/UsingQuilt

Petrov's fftrate ALSA plugin has already been patched for new GCC versions.

The package is available in Arch Linux AUR repository:

Package Details: libasound2-plugin-fftrate 1.6.3-1
_https://aur.archlinux.org/packages/libasound2-plugin-fftrate

The  PKGBUILD is a masterpiece. The source code is patched on the fly with sed.
What is more, the problem was fixed with a one-line Linux command:

 prepare() {
	cd "$srcdir/$pkgbase-$pkgver"
	find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} +
} 

_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libasound2-plugin-fftrate

NOTE: If you do not understand the magic command, try to ask explainshell.com:

_https://explainshell.com/explain?cmd=find+.+-type+f+%5C%28+-name+%22*.cpp%22+-o+-name+%22*.c%22+-o+-name+%22*.h%22+%5C%29+-exec+sed+-i+-e+%27s%2Fmin%28%2FMIN%28%2Fg%27+-e+%27s%2Fmax%28%2FMAX%28%2Fg%27+%7B%7D+%2B+

...

-exec command {} +
       This variant of the -exec action runs the specified command on the selected files, but the command
       line is built by appending each selected file name at the end; the total number of invocations  of
       the command will be much less than the number of matched files.  The command line is built in much
       the same way that xargs builds its command lines.  Only one instance of `{}' is allowed within the
       command.  The command is executed in the starting directory.

It is simply replacing min( with MIN( and max( with MAX( in "*.cpp", "*.c", and "*.h" files.

TEST
mkdir petrov-fftrate
cd petrov-fftrate
git clone https://github.com/PetrovSE/fftrate.git
cd fftrate
$ grep -Ri "Max(" . | grep ".cpp"
./src/apps/pcm_info/Main.cpp:			nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_info/Main.cpp:				nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_info/Main.cpp:				nHelpLayer = max( nHelpLayer, 3 );
./src/apps/pcm_stretch/Main.cpp:			nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_stretch/Main.cpp:				nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_stretch/Main.cpp:				nHelpLayer = max( nHelpLayer, 3 );
./src/apps/pcm_mse/Main.cpp:			nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_mse/Main.cpp:				nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_mse/Main.cpp:				nHelpLayer = max( nHelpLayer, 3 );
./src/apps/pcm_mse/Main.cpp:			nBits = max( nBits, (WORD)mmsys_format_info( pFile->pFormat, 'b' ) );
./src/apps/pcm_conv/Main.cpp:			nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_conv/Main.cpp:				nHelpLayer = max( nHelpLayer, 2 );
./src/apps/pcm_conv/Main.cpp:				nHelpLayer = max( nHelpLayer, 3 ); 
$ find . -type f \( -name "*.cpp" \) -exec sed -e 's/max(/MAX(/g' {} + | grep "MAX("
			nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 3 );
			nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 3 );
			nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 3 );
			nBits = MAX( nBits, (WORD)mmsys_format_info( pFile->pFormat, 'b' ) );
			nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 2 );
				nHelpLayer = MAX( nHelpLayer, 3 ); 

To apply the magic patch on Devuan, you have to download the source code from git,
then open terminal in the source directory and execute the magic command:

$ cd fftrate

$ find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} + 

Then you can compile the fftrate plugin with gcc-12 (and, perhaps, newer versions of GCC).

It works without problems.

$ gcc --version
gcc (Debian 12.2.0-14) 12.2.0

$ uname -a
Linux devuan 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Devuan
Description:	Devuan GNU/Linux 5 (daedalus)
Release:	5
Codename:	daedalus 
sudo apt install inxi
man inxi
$ inxi -b | grep Host -A1
  Host: devuan Kernel: 6.1.0-32-amd64 arch: x86_64 bits: 64 Desktop: MATE
    v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)

$ inxi -A
Audio:
  Device-1: Intel 7 Series/C216 Family High Definition Audio
    driver: oss_hdaudio
  Device-2: Griffin iMic type: USB driver: snd-usb-audio
  API: ALSA v: k6.1.0-32-amd64 status: kernel-api
  API: OSS v: N/A status: active
How to compile Petrov's fftrate ALSA plugin on Devuan 5 Daedalus

Install "build-essential", etc.

sudo apt update
sudo apt-get install build-essential git debhelper
sudo apt install libasound2-dev libasound2-plugins swh-plugins

Download the source code:

mkdir petrov-fftrate
cd petrov-fftrate
git clone https://github.com/PetrovSE/fftrate.git

Check the current "recommended compat" for debhelper:

$ man debhelper-compat-upgrade-checklist | grep "recommended mode"
       v13 This is the recommended mode of operation.

       
Change compat to "13":

$ nano ./fftrate/packets/debian/compat

$ cat ./fftrate/packets/debian/compat
13 

Open terminal in the source directory:

$ ls
fftrate

$ cd fftrate 

Apply the magic patch:

find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} + 

Now you can compile the fftrate plugin with gcc-12 (and, perhaps, newer versions of GCC).

$ cd  packets

$ ls -1
debian
etc
Makefile
mk_dpkg 

Build executables:

make -j1 

Make Debian packages:

./mk_dpkg 
$ cd ../

$ ls | grep .deb
alsa-config-utils_1.6.3_amd64.deb
libasound2-plugin-fftrate_1.6.3_amd64.deb
pcm-utils_1.6.3_amd64.deb 

Install the packages:

sudo dpkg -i alsa-config-utils_1.6.3_amd64.deb libasound2-plugin-fftrate_1.6.3_amd64.deb pcm-utils_1.6.3_amd64.deb

Dependencies:

libasound2 
libasound2-plugins 
swh-plugins

Notice that the Arch package depends on fftw library (make)
_https://aur.archlinux.org/packages/libasound2-plugin-fftrate

It should already be installed (automatic, as a dependency):

$ apt search libfftw3-dev
Sorting... Done
Full Text Search... Done
libfftw3-dev/stable,now 3.3.10-1 amd64 [installed,automatic]
  Library for computing Fast Fourier Transforms - development

libfftw3-double3/stable,now 3.3.10-1 amd64 [installed,automatic]
  Library for computing Fast Fourier Transforms - Double precision

libfftw3-long3/stable,now 3.3.10-1 amd64 [installed,automatic]
  Library for computing Fast Fourier Transforms - Long precision

libfftw3-quad3/stable,now 3.3.10-1 amd64 [installed,automatic]
  Library for computing Fast Fourier Transforms - Quad precision

libfftw3-single3/stable,now 3.3.10-1 amd64 [installed,automatic]
  Library for computing Fast Fourier Transforms - Single precision 

The user manual is here:
ALSA without PulseAudio and PipeWire
_https://dev1galaxy.org/viewtopic.php?id=6644

#168 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-03-03 21:52:11

@hacksenwerk

Some years ago, when ALSA backend was removed from Firefox, you had to
1. compile apulse,
2. configure ALSA mixer (with arateconf),
3. allow ALSA sound device in Firefox's sandbox config.

Today it is more simple. You have to
1. install apulse from Devuan repo,
2. configure ALSA mixer (with arateconf).
! You do not need to configure sandbox for apulse.

HYPOTHESIS: Perhaps, it might be possible to use microphone with Firefox's ALSA backend without apulse.
What might be needed is to set

security.sandbox.content.read_path_whitelist                /dev/snd/
security.sandbox.content.write_path_whitelist               /dev/snd/

in about:config

See, for example:
How to run FIREFOX without pulseaudio, by using "apulse" (Nov 22, 2017)
_https://forums.linuxmint.com/viewtopic.php?t=257818

#169 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-03-01 01:46:58

unixuser wrote:

You won't have sounds on firefox, do you ?

Playback in Firefox works without problems with ALSA (without pulseaudio and pipewire).
Sound quality is good, because fftrate ALSA plugin is installed and enabled (with ALSA config).

NOTE: If you want to use Firefox for video conferences, you have to run it with apulse:

$ apulse firefox

It works without problems, if ALSA software mixer is configured with arateconf.
If you are an ALSA expert, you may try to create ALSA config without the help of arateconf.

#170 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-02-15 22:57:34

EDITED

BEFORE running "arateconf", you should close all audio applications.
The "TEST" function of "arateconf" will fail, if your "audio device" is already in use.
When pulseaudio and pipewire are removed, you can easily free your "audio devices" with "fuser".
For example:

$ fuser -av $(find /dev/snd -type c 2>/dev/null)
                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  igor       2261 F.... mate-settings-d
                     igor       2310 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p:   igor       8248 F...m firefox-esr
/dev/snd/seq:
/dev/snd/timer:      igor       8248 f.... firefox-esr 

"mate-settings-daemon" and "mate-volume-control-status-icon" need not to be killed.
But "firefox-esr" should be killed to free the "audio device":

$ fuser -ikv $(find /dev/snd -type c 2>/dev/null)
                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  igor       2261 F.... mate-settings-d
                     igor       2310 F.... mate-volume-con
Kill process 2261 ? (y/N) n
Kill process 2310 ? (y/N) n
/dev/snd/pcmC0D0p:   igor       8248 F...m firefox-esr
Kill process 8248 ? (y/N) y
/dev/snd/timer:      igor       8248 f.... firefox-esr
Kill process 8248 ? (y/N) y
Could not kill process 8248: No such process

$ fuser -av $(find /dev/snd -type c 2>/dev/null)
                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  igor       2261 F.... mate-settings-d
                     igor       2310 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p:
/dev/snd/seq:
/dev/snd/timer: 

Now, when audio devices are free, you can run "arateconf".

kapqa wrote:

if i press "T", there is "failed".

Input:
 Open device "hw:C1,0" ... Failed!

It failed to open "Input", because you configured your "Cambridge USB DAC" for recording.
"DAC" means "digital-to-analog converter",
see _https://en.wikipedia.org/wiki/Digital-to-analog_converter.
As the name suggests, it is not supposed to be used to record "analog sound".

For "Output", you also got an error message:

Set format 'S32_LE' ... Unsupported!

It means that your Cambridge DAC does not support 'S32_LE' (it is now default for playback),
or ALSA driver (snd_usb_audio) for your USB DAC does not support 32bit.
Try 'S16_LE', or else.
Read the manual again and change 'S32_LE' to 'S16_LE'.
Press "F" to change "format".

======================
|  Sound parameters  |
----------------------
S - Sample rate = 48000 Hz
C - Channels    = 2
F - Format: 'S32_LE'

A - Alignment buffer and period [X]
B - Set buffer multiplier = 1
M - Set period multiplier = 1

P - Play ampl. = 0 dB
R - Rec. ampl. = 0 dB

ESC - Return to main menu
> f

==============================
|  Available sample formats  |
------------------------------
0 - U8
1 - S16_LE
2 - S24_3LE
3 - S24_LE
4 - S32_LE
5 - FLOAT_LE
6 - FLOAT64_LE

ESC - Return to main menu
> 

Your Intel HDA codec (Generic_1) does support 48kHz 32bit.
It should also support 192kHz 32bit.
This may provide much better sound quality than your "Cambridge DAC" (it is likely to be 48kHz 16bit and nothing more with ALSA).
You can test different "sample rates" and "formats" with "arateconf".

You can also check your "proc" (cards, hw_params), for example:

$ cat /proc/asound/cards
 0 [system         ]: USB-Audio - iMic USB audio system
                      Griffin Technology, Inc iMic USB audio system at usb-0000:00:1a.0-1.3.4, full s
$ cat /proc/asound/card*/pcm*p/sub*/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1920
buffer_size: 7680

$ cat /proc/asound/card0/pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1920
buffer_size: 7680

NOTE: "arateconf" is simply a tool to configure ALSA,
that is, a tool to generate an ALSA config file "~/.asoundrc".
It takes data from ALSA and from Linux (proc, etc.).

Notable Realtek products include ... audio codecs (AC'97 and Intel HD Audio ).
_https://en.wikipedia.org/wiki/Realtek#Notable_products

ALSA detected an Intel HDA codec on your motherboard. It has a "generic driver" for it.
It should work without problems.
You may select Intel HDA codec as default for recording.
If you connect new USB audio devices, you have to create a new ALSA config with "arateconf".

#171 Re: Off-topic » Thoughts on Pipewire » 2025-01-29 15:30:33

kapqa wrote:

since started on linux journey, found it very strange to say the least , that when wanting to @uninstall say a driver like pulseaudio, this couldwould render the laptop completely broke, like uninstalling the whole desktop

xfce4 and mate-desktop-environment are meta-packages, they can be safely removed.
See: _https://wiki.debian.org/metapackage
Meta-packages are not completely empty, they have inside  a list of dependencies.

On the other hand, to fix problems with desktop, you may reinstall your Linux Desktop Environment.
That is, you can simply reinstall a meta-package. For example:

 sudo apt-get --reinstall install mate-desktop-environment

See also: _https://www.cyberciti.biz/faq/debian-ubuntu-linux-reinstall-a-package-using-apt-get-command/

Desktop environment - ArchWiki
_https://wiki.archlinux.org/title/Desktop_environment

If you want to learn something about Linux Desktop environments, you may try to install MATE:

How to Install MATE Desktop and remove XFCE

1. Installing MATE

sudo apt update 
sudo apt install mate-desktop-environment 
sudo apt install mate-desktop-environment-extras

This may re-install pulseaudio, but it is easy to remove.
You may also need to unhold pulseaudio crap.

$ apt-mark showhold
pavucontrol
pipewire
pipewire-alsa
pipewire-audio
pipewire-audio-client-libraries
pipewire-bin
pipewire-doc
pipewire-jack
pipewire-libcamera
pipewire-media-session
pipewire-media-session-alsa
pipewire-media-session-jack
pipewire-media-session-pulseaudio
pipewire-pulse
pipewire-tests
pipewire-v4l2
pulseaudio
pulseaudio-equalizer
pulseaudio-module-bluetooth
pulseaudio-module-gsettings
pulseaudio-module-jack
pulseaudio-module-lirc
pulseaudio-module-raop
pulseaudio-module-zeroconf
pulseaudio-utils
$ apt-mark
apt 2.6.1devuan1 (amd64)
Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]

Most used commands:
  auto - Mark the given packages as automatically installed
  manual - Mark the given packages as manually installed
  minimize-manual - Mark all dependencies of meta packages as automatically installed.
  hold - Mark a package as held back
  unhold - Unset a package set as held back
  showauto - Print the list of automatically installed packages
  showmanual - Print the list of manually installed packages
  showhold - Print the list of packages on hold

To select MATE Desktop as default, run

$ sudo update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).

  Selection    Path                    Priority   Status
------------------------------------------------------------
* 0            /usr/bin/startxfce4      50        auto mode
  1            /usr/bin/mate-session    50        manual mode
  2            /usr/bin/startxfce4      50        manual mode
  3            /usr/bin/xfce4-session   40        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1 

It should be like this:

$ sudo update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).

  Selection    Path                    Priority   Status
------------------------------------------------------------
  0            /usr/bin/mate-session    50        auto mode
* 1            /usr/bin/mate-session    50        manual mode
  2            /usr/bin/startxfce4      50        manual mode
  3            /usr/bin/xfce4-session   40        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

SLIM - ArchWiki
_https://wiki.archlinux.org/title/SLiM

2. Removing XFCE (optional)

$ sudo dpkg -l | grep .xfce

$ sudo apt purge xfce*

$ sudo apt autoremove 

See also:
_https://tecadmin.net/how-to-install-mate-desktop-on-debian-11/

#172 Re: Off-topic » Thoughts on Pipewire » 2025-01-29 14:09:27

@kapqa

Pulseaudio is not a driver. It is, rather, a sort of malware.

XFCE is buggy and crappy, and it does not support "alsa-only".

The best solution might be Devuan MATE Desktop (without pulseaudio and pipewire).
It works without problems even on very old computers (such as those of 2001).
Although, of course, web browsers are rather slow on very old computers.

To summarize:
The manual is here:
_https://dev1galaxy.org/viewtopic.php?pid=53969#p53969
See also:
_https://dev1galaxy.org/viewtopic.php?pid=54059#p54059

#173 Re: Off-topic » Thoughts on Pipewire » 2025-01-28 20:19:27

kapqa wrote:

no , dont know about that

Perhaps, you do not want to know.
It is a very old problem.

fftrate ALSA plugin was created in 2009.

The story of "system wide equalizer" also began in 2009.
For example:
HOWTO systemwide eq with alsaequal
_https://forums.debian.net/viewtopic.php?t=47899

Today "alsaequal" is easy to install:

_https://askubuntu.com/a/951207

Installation

sudo apt install libasound2-plugin-equal 

Start

alsamixer -D equal
amixer -D equal

To change to the equalizer in the running program, press F6, choose enter device name... and enter “equal”.

Semi-deaf Linux users do need a sort of "equalizer" to "enhance sound", especially high frequencies.

$ apt info libasound2-plugin-equal 
Package: libasound2-plugin-equal
Version: 0.6-8
Priority: optional
Section: libs
Source: alsaequal
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Installed-Size: 72.7 kB
Depends: caps (>= 0.9.11), libasound2 (>= 1.0.16), libc6 (>= 2.14)
Homepage: http://www.thedigitalmachine.net/alsaequal.html
Tag: role::shared-lib
Download-Size: 14.9 kB
APT-Sources: http://deb.devuan.org/merged daedalus/main amd64 Packages
Description: equalizer plugin for ALSA
 Alsaequal is a real-time adjustable equalizer plugin for ALSA. It can
 be adjusted using an ALSA compatible mixer, like alsamixergui or
 alsamixer.
 .
 Alsaequal uses the Eq CAPS LADSPA Plugin for audio processing, actually
 alsaequal is a generic LADSPA plugin interface with real-time access to
 the LADSPA controls (the LADSPA plugin included with alsa doesn't allow
 for real-time controls) but it was developed for and only tested with
 Eq CAPS LADSPA plugin.
kapqa wrote:

getting error but now alsa is back with "proper""volume"

Shutting down ALSA...done.
Setting up ALSA...warning: 'alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore' failed with error message 'alsa-lib main.c:1554:(snd_use_case_mgr_open) error: failed to import hw:29 use case configuration -2'...done.

You may try a workaround from stackoverflow
ALSA: failed to import hw:0 use case configuration -2
_https://stackoverflow.com/questions/76333959/alsa-failed-to-import-hw0-use-case-configuration-2

$ man alsactl | grep ucm
       -D, --ucm-defaults
       -U, --no-ucm 
$ whereis alsactl
alsactl: /usr/sbin/alsactl /usr/share/man/man1/alsactl.1.gz

$ /usr/sbin/alsactl -h

$ sudo /usr/sbin/alsactl -d restore
/usr/sbin/alsactl: init_ucm:48: ucm open '-hw:0': -6
...

See also:
Alsa UCM
_https://wiki.postmarketos.org/wiki/Alsa_UCM

Do you have the ucm.conf file?
It should be here:

/usr/share/alsa/ucm2/ucm.conf

EDIT:

_https://wiki.postmarketos.org/wiki/Alsa_UCM
If an UCM configuration is present for a card then pulseaudio will ignore the built-in profiles and generate a profile based on the UCM files.

...
1. Disable PulseAudio or PipeWire so ALSA UCM is not active at all.

This may mean, perhaps, that you do not need ALSA UCM, if you are not using PulseAudio and PipeWire.

Therefore, the workaround from stackoverflow may fix the problem.

sudo /usr/sbin/alsactl --debug restore

sudo /usr/sbin/alsactl --debug --no-ucm restore 

Or you can simply ignore the "error" message, which is, in fact, just "warning", not "error".

EDIT:

If I understood you correctly, your ALSA was almost silent.
The "force-reload" of ALSA seemed to fix the problem.

Since ALSA UCM is not needed, you may simply ignore the "warning" message, and see how it works.

NOTE: OSS4 is much more louder than ALSA with the same sound card.
The fftrate ALSA plugin makes ALSA louder, but not as loud as OSS4.
Most important, the fftrate improves the sound quality of ALSA, although, of course, I like more the sound of OSS4.
If you are content with the sound quality of ALSA, you may use it as is.
But if you need to configure a software mixer for ALSA (e.g., for video conferencing), it might be a difficult task (without the fftrate plugin).
See, for example:
[Arch Linux forum]: [SOLVED] ALSA and dmix (software mixing)
_https://bbs.archlinux.org/viewtopic.php?id=275656

#174 Re: Off-topic » Thoughts on Pipewire » 2025-01-28 02:34:50

kapqa wrote:

isuee is that sound is very low, even with vlc 200% it is probably 1/4 of original strength, and all relevant faderin amixer is set 100%.

It is not an issue, it is a feature of ALSA.
With normal loudness, you may hear noise produced by the ALSA resampler.
If you do not like this feature, you may compile and install fftrate ALSA plugin (and configure it).

kapqa wrote:

since i removed only "pulseaudio", there is another libpulse0?
is this also needed for removal?
thanks.

Have you read my manual?
It was posted above.
See: _https://dev1galaxy.org/viewtopic.php?pid=53969#p53969

#175 Re: Off-topic » Thoughts on Pipewire » 2025-01-12 21:32:48

@kapqa

"alsa-only" means that you may need some Linux commands.

To reload ALSA on Devuan, you can use alsa-utils.

The Devuan default is "SysV init"

$ /sbin/init --version
SysV init version: 3.06 

If you are using "SysV init", you can reload ALSA with this command:

$ sudo /etc/init.d/alsa-utils force-reload
Shutting down ALSA...done.
Setting up ALSA...done. 

"soft restart":

$ sudo /etc/init.d/alsa-utils restart
Shutting down ALSA...done.
Setting up ALSA...done.

$ sudo /etc/init.d/alsa-utils stop
Shutting down ALSA...done.

$ sudo /etc/init.d/alsa-utils start
Setting up ALSA...done. 

Another useful command is fuser

$ fuser -av $(find /dev/snd -type c 2>/dev/null)
                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  igor       2328 F.... mate-settings-d
                     igor       2382 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p:   igor       2843 F...m firefox-esr
/dev/snd/seq:
/dev/snd/timer:      igor       2843 f.... firefox-esr 
PID 2328 /usr/bin/mate-settings-daemon
PID 2382 mate-volume-control-status-icon
PID 2843 /usr/lib/firefox-esr/firefox-esr 

"mate-volume-control-status-icon" is MATE volume control applet.
It works with ALSA in "alsa-only" mode (as well as "mate-settings-daemon").
However, after removal of pulseaudio, you have to reload ALSA, or reboot the system.

Board footer

Forum Software