Skip to main content
Topic: need help from a programmer: building VINTAGE Audacity (& related stuff) (Read 592 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

need help from a programmer: building VINTAGE Audacity (& related stuff)

hello EVERYBODY!!!

A. Foreword

i am a musician and i am trying to fork Audacity-2-4-2 for developing a DAW targeting a GUITAR||BASS player specifically! :o
i am shocked that most of modern audio production software [i mean DAWs here] IS NOT INTENDED to be used by a guitar player.
i mean --i open Ardour or Rosegarden [ :-* great apps!!!  :'( ] --and i am getting blown away by the richness of their interface or functionality.
they are made for PRODUCERS || PODCAST-MAKERS || MIXING_ENGINEERS || ARRANGERS ...you cannot sing while scrolling through two or three menu lists
 :) CAN YOU UNDERSTAND ME?
 
i need (THREE_KNOBS || FOUR_KNOBS && A_SWITCH) --i cannot get all through those Workspaces Editors Panels Toolbars every time i need to make some primitive edit/adjustment.

so i have decided to fork Audacity --the best minimalist DAW i did ever see.
BUT modern_Audacity != vintage_Audacity
 --i cannot agree with the Team in their decision of implementing NON-DESTRUCTIVE editing
          [because it breaks minimalist concepts]
 and their aup3 format that is made with SQLite3 [i guess] ...mmm ...you know is very resource-heavy ::)
          [my production machine is not very strong ASUS laptop [Intel Core i5-3337U 2 @1.8-2.7 GHz, Ivy Bridge], but do not even try recommending me to buy a new machine, please]



B. Please Help Me!

i am a programmer but i am not familiar with build systems --i am learning C but i started with a scripting language & an interpreter.
i have decided to build original vintage Audacity before trying to modify its code [i have the sources of both packages in my own GitHub repositories].

i was trying to build wxWidgets 3.1.3 & Audacity 2.4.2 [they are way below packages from Artix repositories];
BUT THEY ARE INTENDED FOR DEBIAN!!!

I HAVE MY SYSTEM[1] UP-TO-DATE WITH ALL NEEDED LIBS INSTALLED :o

JUST LOOK AT THAT:
Code: [Select]
amelanchier:[irulan-corrino]:~$ sudo su
[sudo] password for irulan-corrino:
amelanchier:[root]:/home/irulan-corrino# pacman -Syu --needed libgtk-3-dev libgtk2.0-dev libasound2-dev python3-minimal libavformat-dev libjack-jackd2-dev
:: Synchronizing package databases...
 system is up to date
 world is up to date
 galaxy is up to date
 lib32 is up to date
 universe is up to date
 extra is up to date
 community                                      7.3 MiB  2.49 MiB/s 00:03 [#########################################] 100%
 multilib is up to date
error: target not found: libgtk-3-dev
error: target not found: libgtk2.0-dev
error: target not found: libasound2-dev
error: target not found: python3-minimal
error: target not found: libavformat-dev
error: target not found: libjack-jackd2-dev
amelanchier:[root]:/home/irulan-corrino#

AND CONFER THIS:
Code: [Select]
amelanchier:[root]:/home/irulan-corrino# pacman -Syu --needed gtk3 jack2 ffmpeg python alsa-lib gtk2
:: Synchronizing package databases...
 system is up to date
 world is up to date
 galaxy is up to date
 lib32 is up to date
 universe is up to date
 extra is up to date
 community is up to date
 multilib is up to date
warning: gtk3-1:3.24.36-1 is up to date -- skipping
warning: jack2-1.9.22-1 is up to date -- skipping
warning: ffmpeg-2:5.1.2-2.1 is up to date -- skipping
warning: python-3.10.9-1 is up to date -- skipping
warning: alsa-lib-1.2.8-1 is up to date -- skipping
warning: gtk2-2.24.33-2 is up to date -- skipping
:: Starting full system upgrade...
 there is nothing to do
amelanchier:[root]:/home/irulan-corrino#



C. DISCUSSION

here is what i have gotten trying to build wxWidgets in up-to-date Artix system:
Code: [Select]
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity$ mkdir buildgtk
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity$ cd buildgtk
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity/buildgtk$ ../configure --with-gtk
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for toolkit... gtk
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
[...]
checking if expat.h is valid C++ header... yes
checking for XML_ParserCreate in -lexpat... yes
checking for GTK+ version...
checking for pkg-config... no
checking for GTK+ - version >= 2.6.0... ../configure: line 22648: --uninstalled: command not found
../configure: line 22653: --atleast-version: command not found
no
*** Could not run GTK+ test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GTK+ is incorrectly installed.
checking for pkg-config... no
checking for GTK+ - version >= 3.0.0... no
*** A new enough version of pkg-config was not found.
*** See http://pkgconfig.sourceforge.net
checking for gtk-config... no
checking for GTK - version >= 1.2.7... no
*** The gtk-config script installed by GTK could not be found
*** If GTK was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GTK_CONFIG environment variable to the
*** full path to gtk-config.
checking for gtk-config... (cached) no
checking for GTK - version >= 1.2.3... no
*** The gtk-config script installed by GTK could not be found
*** If GTK was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GTK_CONFIG environment variable to the
*** full path to gtk-config.
configure: error:
The development files for GTK+ were not found. For GTK+ 2, please
ensure that pkg-config is in the path and that gtk+-2.0.pc is
installed. For GTK+ 1.2 please check that gtk-config is in the path,
and that the version is 1.2.3 or above. Also check that the
libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
--libs' are in the LD_LIBRARY_PATH or equivalent.

AND IF I TRY to build Audacity with system`s wxWidgets in my production system [that has Audacity-2 with all the shared stuff, naturally] i have such error message:
Found Object X is declared "Private" BUT IT MUST BE "Public"!!! [or vice versa]

i INDEED understand its meaning and that is it

now i have found following snippet in configure script of widgets:
Code: [Select]
  if test x$PKG_CONFIG != xno ; then
    ## don't try to run the test against uninstalled libtool libs
    if $PKG_CONFIG --uninstalled $pkg_config_args; then
  echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
  enable_gtktest=no
    fi

    if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
  :
    else
  no_gtk=yes
    fi
  fi
may i try bypassing this checks? i know it would not alleviate the problem but these checks produce annoying warnings...

SO ...can anyone instruct me how to alter the code pointing wxWidgets & Audacity to look for OUR [Artix] RECENT shared libraries?[2]


P.S.: Trying To Fix It Myself

from install.md:
Quote
The simplest errors.
For any configure errors: please look at config.log file which was generated during configure run, it usually contains some useful information.

a. configure reports, that you don't have GTK+ 1.2/2.0/3.0 installed although you are very sure you have. Well, you have installed it, but you also have another version of the GTK+ installed, which you may need to remove including other versions of glib (and its headers). Or maybe you installed it in a non-default location and configure can't find it there, so please check that your PATH variable includes the path to the correct gtk-config/pkg-config. Also check that your LD_LIBRARY_PATH or equivalent variable contains the path to GTK+ libraries if they were installed in a non-default location.

from gtk3 package contents:
Code: [Select]
usr/lib/pkgconfig/
usr/lib/pkgconfig/gail.pc
usr/lib/pkgconfig/gdk-2.0.pc
usr/lib/pkgconfig/gdk-x11-2.0.pc
usr/lib/pkgconfig/gtk+-2.0.pc
usr/lib/pkgconfig/gtk+-unix-print-2.0.pc
usr/lib/pkgconfig/gtk+-x11-2.0.pc

asking my system:
Code: [Select]
amelanchier:[irulan-corrino]:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
amelanchier:[irulan-corrino]:~$ echo $LD_LIBRARY_PATH

amelanchier:[irulan-corrino]:~$ echo $GTK_CONFIG

amelanchier:[irulan-corrino]:~$ export LD_LIBRARY_PATH="/usr/lib"
amelanchier:[irulan-corrino]:~$ echo $LD_LIBRARY_PATH
/usr/lib
amelanchier:[irulan-corrino]:~$

after exporting it via .bashrc [no change if you are too impatient to read that]:
Code: [Select]
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity/buildgtk$ echo $LD_LIBRARY_PATH
/usr/lib
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity/buildgtk$ ../configure --with-gtk
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for toolkit... gtk
checking for gcc... gcc
checking whether the C compiler works... yes
[...]
checking for GTK+ version...
checking for pkg-config... no
checking for GTK+ - version >= 2.6.0... ../configure: line 22648: --uninstalled: command not found
../configure: line 22653: --atleast-version: command not found
no
*** Could not run GTK+ test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GTK+ is incorrectly installed.
checking for pkg-config... no
checking for GTK+ - version >= 3.0.0... no
*** A new enough version of pkg-config was not found.
*** See http://pkgconfig.sourceforge.net
checking for gtk-config... no
checking for GTK - version >= 1.2.7... no
*** The gtk-config script installed by GTK could not be found
*** If GTK was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GTK_CONFIG environment variable to the
*** full path to gtk-config.
checking for gtk-config... (cached) no
checking for GTK - version >= 1.2.3... no
*** The gtk-config script installed by GTK could not be found
*** If GTK was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GTK_CONFIG environment variable to the
*** full path to gtk-config.
configure: error:
The development files for GTK+ were not found. For GTK+ 2, please
ensure that pkg-config is in the path and that gtk+-2.0.pc is
installed. For GTK+ 1.2 please check that gtk-config is in the path,
and that the version is 1.2.3 or above. Also check that the
libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
--libs' are in the LD_LIBRARY_PATH or equivalent.
                           
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity/buildgtk$

meld --"files are identical"
i see there is a hyphen in a package name wxWidgets are looking for [pkg-config vs pkgconfig in my system] but WHAT IS THE HELL gtk-config?
is that some long deprecated piece? or is it Debian-specific script?

P.P.S.: i even have done this
Code: [Select]
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity/buildgtk$ echo $LD_LIBRARY_PATH
:/usr/lib
amelanchier:[irulan-corrino]:~/.builds/wxWidgets-Audacity/buildgtk$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib


these listings are from another my machine, an older laptop [Pentium Dual-Core CPU, T4300 @2.10GHz], i have Audacity from Arch Archive in my production system; and i have long list of ignored packages in pacman.conf
i am aware of possibility to plug Debian stuff into Arch||Artix using kinda deb2arch ...but i am sure it would be A TOTAL DISASTER with shared libraries
shean shi eth Ynnwn. Aisha

Re: need help from a programmer: building VINTAGE Audacity (& related stuff)

Reply #1
Unfortunately many of the dependencies as you discovered got deprecated: wxwidgets got repackaged and it's still broken in many places, gtk2 is on it's way out, ffmpeg new version also broken older compilation dependencies.

Best way to get ancient linux programs (that are neither static binaries nor support library paths) working is in some sort of a container, unfortunately old Audacity doesn't have appimage/flatpak so next best thing will be to chroot in some old debian/ubuntu version (or just boot it when you work) and get the old .deb releases of audacity from ubuntu archive.

Or of course even easier you can run the windows version in Wine.

Re: need help from a programmer: building VINTAGE Audacity (& related stuff)

Reply #2
You can go back in the relevant PKGBUILD git history for packages to find out how they were originally built in Arch Linux, Artix history might not go far back enough for you here. The same is true for AUR packages so you can look at the -git versions too.

https://github.com/archlinux/svntogit-community/commits/master/audacity/repos/community-x86_64

You can also look at Debian package archives and their history if you wanted to know more about those.

"Answered" need help from a programmer: build VINTAGE Audacity (& related stuff)

Reply #3
thank you for the replies dear folks, i was aware of or have found those ways just a moment ago.
i have realized i have the Perfect Solution to the issue [but wait a minute i shall write that after replying to your posts].

A. a reply to Hitman

Unfortunately many of the dependencies as you discovered got deprecated:
 wxwidgets got repackaged and it's still broken in many places,
 gtk2 is on it's way out [...]
1. wxWidgets issue. i have to correct you (you are not wrong, just unaware of the whole picture]:
   yes this ver.3.1.3 is totally deprecated by upstream BUT Audacity is build with ITS CUSTOMIZED VER.3.1.3 for ages!
   they [Audacity team] just do not want to change anything keeping it in their own repository on their GitHub account. it was not updated FOR AGES :-X
2. GTK2 issue. this is really true point made by you ...BUT Audacity team has made this point too [their builds are made against GTK3 even though the instructions in their OWN Audacity/blah-2-4-2-blob/linux/build.txt discourage such practice ...mmm ::) since LONG AGO]
Best way to get ancient linux programs (that are neither static binaries nor support library paths) working is in some sort of a container, unfortunately old Audacity doesn't have appimage/flatpak so next best thing will be to chroot in some old debian/ubuntu version (or just boot it when you work) and get the old .deb releases of audacity from ubuntu archive.

Or of course even easier you can run the windows version in Wine.
0. a tiny remark: "Best way to get ancient linux programs [...] working [is] appimage/flatpak..." --oh. that`s just what i mean
 ...Oh My God!!!  :o tried on middle-aged Musescore AppImage [produced by the same Muse Group as Audacity team belongs to]
 --it fails to start.
 TRAGICALLY. kinda SEGFAULT or i don`t know even what.
1. ideology issue. "to chroot in some old debian/ubuntu version (or just boot it when you work)"
 NO WAY!
 i was really sick of Ubuntu when i had gotten out to Arch in June 2022 [and then i made my way into Artix in August i guess].
 i used Ubuntu [first Bodhi, then ubuntustudio] since 2013 i guess --i had SUCH A LITTLE progress learning linux and was SO FRUSTRATED
 ...i understand --not every one can do programmers work --but the Design of Ubuntu is BAD.
2. "run the windows version in Wine." it would not be good eXperience either --i tried other stuff in Wine --many things
 --only a librarian [X-Edit] for my guitar processor can get to USB without the headache of having WindowsOS drivers [it SIMPLY uses MIDI]


B. a reply to #######

You can go back in the relevant PKGBUILD git history for packages to find out how they were originally built in Arch Linux, Artix history might not go far back enough for you here. The same is true for AUR packages so you can look at the -git versions too.

https://github.com/archlinux/svntogit-community/commits/master/audacity/repos/community-x86_64

You can also look at Debian package archives and their history if you wanted to know more about those.
oh yes!!! thank you for the great answer! "You can go back in the relevant PKGBUILD git history for packages"
 [independently] last night i have found the same solution at Arch Wiki and i was already using ALA and downgrade and it is an AMAZING feature
 --i have used it this morning[1] (last night i was making a transition from KDE Plasma[2] back to XFCE that i used for many years and really do like)
 after fresh installation i have had libtiff[3] ignored in pacman.conf during the first update [4] and gdk-pixbuf2 with librsvg were not working until i have downgraded them[5]
i have used the very same link that you have provided when i was checking for those packages` relevance one to another.

and even though i was CONSIDERING THE SAME lookup at Arch Archives || GitHub || AUR until last night (when i was scanning through all the dependencies && opt-depenencies of stuff i like to have installed)
everything has changed THIS MORNING when i have found the Perfect Solution i promised you to tell.


C. My Very Own Perfect Solution

to import such abandoned vintage versions of projects into an IDE

i use two IDEs: Code::Blocks && Gnome-Builder [6]

and even more --my task in forking Audacity DOES INCLUDE porting it from wxWidgets to GTK4 && a translation of C++ code to C
an IDE can easily show me anything i want to know about the source code, including all the dependencies and objects` relevance one to another!!!

certainly it has some  :-X "Ouch!" ??? to such "code lifting" but that is a part of programmer`s work.


Lamp Lady selling tangerines and
With the loving eyes of God
Drift back to the Sun

Lamp Lady selling tangerines and
With the loving eyes of God
Drift back to the Sun

love is her destiny
all she had to confess
is it the road of choice
is it the hand of chance
are we not meant to see
what is our cruelty
who decides what we are
when all we have is ourselves


Lamp Lady selling tangerines and
With the loving eyes of God
Drift back to the Sun

Lamp Lady selling tangerines and
With the loving eyes of God
Drift back to the Sun

love is her destiny
all she had to confess
is it the road of choice
is it the hand of chance
are we not meant to see
what is our cruelty
who decides what we are
when all we have is ourselves

Lamp Lady selling tangerines and
With the loving eyes of God
Drift back to the Sun

Lamp Lady selling tangerines and
With the loving eyes of God
Drift back to the Sun

Sevda Alizadeh


and this story turn takes us closer to my promised solution
artix-community-qt.iso
wxWidgets do silently depend on all this stuff
from July 2022 iso image
all scalable icons were missing from my DE`s outfit
and i use Glade too
shean shi eth Ynnwn. Aisha

Re: need help from a programmer: building VINTAGE Audacity (& related stuff)

Reply #4
An alternative approach would be forking the latest version of these programs - and then modding their user interface for your needs. This way you will avoid the dependencies problems. Also, maybe it's even possible to make some plugin for these apps, so that the forking won't be necessary... P.S. Keep going, in any case you'll learn a lot in the process ;-)

Re: need help from a programmer: building VINTAGE Audacity (& related stuff)

Reply #5
Ardour or Rosegarden
An alternative approach would be forking the latest version of these programs - and then modding their user interface for your needs. This way you will avoid the dependencies problems. Also, maybe it's even possible to make some plugin for these apps, so that the forking won't be necessary... P.S. Keep going, in any case you'll learn a lot in the process ;-)

 :P Or are you proposing to port them to Rust? :-\
Quote
("C++" == End-Of-Life)
:o
[just kidding --i am not a Rust programmer, i am learning C --C++ is not my language, so i have taken Audacity particularly for having the lest amount of C++ code]


shean shi eth Ynnwn. Aisha

["MAKESHIFT SOLUTION"] need help from a programmer: building VINTAGE Audacity

Reply #6
hello everyone!
in original post i asked for help in building an ancient version of Audacity because i wanna try this before forking the app into my own DAW designed for a guitar player [or any other musician that is primarily a performer].
i told i`m unsatisfied with the design of available DAWs because they hide functionality or make a workflow too complicated.

but until i would have forked Audacity i am using a version from it`s "Golden Era" --that is v.2.1.9[1]

so ...if anyone is willing to follow me in my aesthetic reasons for using "a minimalist design" DAW i am posting the exact steps i have undertaken to install an ancient version of Audacity from Arch Linux Archive[2]

A. first you would need downgrade
        do this as regular use; i am assuming you use your home directory
Code: [Select]
mkdir .builds
cd .builds
git clone https://aur.archlinux.org/downgrade.git
cd downgrade
makepkg -sic

B. now you would may proceed to installing/downgrading the target packages
        do it as root user; here are the targets` versions:
  • audacity 1:2.4.1-9
  • flac 1.3.4-3
  • libopenmpt 0.6.4-1
  • libsndfile 1.1.0-2
and when prompted by pacman like this
add <package> to IgnorePkg? [y/N]
answer "yes"

Code: [Select]
downgrade --ala-only audacity flac libsndfile libopenmpt
pacman -Syu ffmpeg4.4 ladspa


wish you having a lot of fun with VINTAGE-STYLE Destructive Editing
i have a repository containing v.2.4.2, but as i already told i cannot build it because it has debian-rooted dependencies; i have a hint on pkgconfig workaround however [thanks to libmypaint maintainers on GitHub]
oh by the way i have messed up in my post from 5th of March with providing exact dependencies --wxgtk3 was a dependency of Audacity v2.1.7 that i used in my [broken by experiments] KDE Plasma install of Artix (i mean i had had injured DE not Artix system itself), so gdk-pixbuf2 with libtiff and librsvg are not to be downgraded for installing Audacity v.2.1.9 which depends on recent version of wxWidgets
shean shi eth Ynnwn. Aisha

 

Re: need help from a programmer: building VINTAGE Audacity (& related stuff)

Reply #7
I'm glad you got this working and detailed how you did it.

My concern would be that downgrading libraries is very likely to cause problems with other packages at some point.
Just taking libsndfile as an example:
Quote
Required By     : aubio  dwarffortress-phoebus  easyeffects  fluidsynth  gst-plugins-bad  lib32-libsndfile
                  libbs2b  libinstpatch  libopenmpt  libpulse  lsp-plugins-clap  lsp-plugins-ladspa
                  lsp-plugins-lv2  lsp-plugins-standalone  lsp-plugins-vst  pipewire-audio  qtractor
                  rubberband  sfml  sneedacity  twolame
As @Hitman already stated a safer way to do it would be be a chroot with just a base Artix install plus the old Audacity plus its older required libraries.
Not space efficient but the way to go if you have plenty of storage imho.