Are there instructions for how to build from source when a package is not in the repository?

Are there instructions for how to install items not in the Official or AUR respositories? I don’t know the proper terms for it.

I’d like to install Critcl, Tcllib 2.0, and Tcl 9.0; none of which appear to be in a repository. I found some instructions from these sources but am not sure how to start. Some build commands are given but I’m not sure in what folder to place the sources. (This link recommends usr/local/src because it won’t get over-written by the package manager.)

I’m pretty sure that:

  1. Critcl has to be installed first before Tcllib 2.0 because it requires it for tcllibc.
  2. Tcl 9.0 has to be installed before Tcllib 2.0 because it must be compiled for either Tcl 8 or 9.

I have Tcl 8.6 and Tcllib 1.21. What should happen to them if I get these installed? Should they be gone or should they still be usable versions?

I’d also like to learn how to compile a version of SQLite from its Fossil branch (with the desired flags) and test my applications using it while they’re still testing that version before releasing it. That is, without losing the current installed release.

Could you please point me to where I can learn that Manjaro part of this? Thank you.

critcl-git is available in the AUR. I just successfully installed it on my mini-PC:

[2025-03-09T11:04:22+1100] [ALPM] transaction started
[2025-03-09T11:04:22+1100] [ALPM] installed tcllib (2.0-1)
[2025-03-09T11:04:22+1100] [ALPM] transaction completed
[2025-03-09T11:04:22+1100] [ALPM] running '30-systemd-update.hook'...
[2025-03-09T11:04:32+1100] [ALPM] transaction started
[2025-03-09T11:04:32+1100] [ALPM] installed critcl-git (3.3.r5.254bdff-1)
[2025-03-09T11:04:32+1100] [ALPM] transaction completed
[2025-03-09T11:04:32+1100] [ALPM] running '30-systemd-update.hook'...

All you need to do is run the following command, which will also build the tcllib dependency:

pamac build critcl-git
1 Like

Thank you. I found the instructions for critcl from Andreas Kupries site (I think he made critcl) and appear to have it installed.

But I have not been able to get Tcl 9.0 installed; and I think I messed up because Tcl 9.0 must be installed first. I didn’t think it mattered for critcl but it appears critcl installs tcllib 2.0.1 which is to be ocmplied after Tcl 9.0. So, I need to uninstall it and get Tcl 9.0 installed first.

The configure step for Tcl 9.0 appears to work but the make step does not.

Makefile:2193: warning: overriding recipe for target '/home/gary/Tcl'
Makefile:2188: warning: ignoring old recipe for target '/home/gary/Tcl'
Makefile:2198: warning: overriding recipe for target '/home/gary/Tcl'
Makefile:2193: warning: ignoring old recipe for target '/home/gary/Tcl'
Makefile:2307: warning: overriding recipe for target '/home/gary/Tcl'
Makefile:2198: warning: ignoring old recipe for target '/home/gary/Tcl'
Makefile:2309: warning: overriding recipe for target '/home/gary/Tcl'
Makefile:2307: warning: ignoring old recipe for target '/home/gary/Tcl'
Makefile:2311: warning: overriding recipe for target '/home/gary/Tcl'
Makefile:2309: warning: ignoring old recipe for target '/home/gary/Tcl'
Makefile:2319: warning: overriding recipe for target '/home/gary/Tcl'
Makefile:2311: warning: ignoring old recipe for target '/home/gary/Tcl'
make: Circular /home/gary/Tcl <- /home/gary/Tcl dependency dropped.
make: Circular 9.0/macosx/configure <- /home/gary/Tcl dependency dropped.
make: *** No rule to make target '9.0/macosx/configure.ac', needed by '9.0/macosx/configure'.  Stop.

Right now, I am stumped on this.

Why do you need tcl 9.0? critcl_howto_install - C Runtime In Tcl (CriTcl) recommends tcl 8.6, which is in Manjaro’s repos:

While CriTcl currently supports running on Tcl 8.4 and higher, and the creation of packages for the same, the last release for this version was in 2013 (9 years ago at the time of writing). Similarly, the last release for Tcl 8.5 was in 2016 (6 years ago). Both are official end of life.

Given this I recommend to install and use Tcl 8.6.

mbn info tcl -q | grep -Ev 'Name|Repository|Packager'
Branch         : archlinux
Version        : 8.6.16-1
Build Date     : Wed 25 Dec 2024 21:17:11 
Branch         : unstable
Version        : 8.6.16-1
Build Date     : Wed 25 Dec 2024 21:17:11 
Branch         : testing
Version        : 8.6.16-1
Build Date     : Wed 25 Dec 2024 21:17:11 
Branch         : stable
Version        : 8.6.16-1
Build Date     : Wed 25 Dec 2024 21:17:11 

mbn can be found in the manjaro-check-repos package

If you are going to try to compile critcl & associated apps manually, as you seem to be doing, then I won’t be able to provide any further help (I don’t think I’ve compiled any software in at least 5 years). Please be aware that manually compiling packages that are in the repos may break your system, as installation may overwrite important libraries installed by repo packages and cause issues with mismatching versions.

Why not just run the pamac build critcl-git command, let it draw in the required dependencies and install them automatically, and then see if it works as it should? After all, there are no issues reported in the comments section of the AUR (en) - critcl-git page.

Thanks. I think SQLite moved to using Tcl 9.0 (but I do not think it is an issue) and I use the SQLite Tcl API quite a bit and would like to stay current with them.

The main reason is that I though that bullet 3, here at tcllib was stating that the c accelerator required Tcl 9.0 but , in looking for the link and reading again, it appears that it will still work with 8.6 as the minimum.

I’d still would like to learn it becasue when SQLite states the new features are on trunk, so download, install, and test it; I can do so rather than having to wait until it is available in the repository to test my application.

1 Like

If you really, really need tcl 9.0, then you might look at installing one of the binaries recommended on the Tcl/Tk Software page.

For example, the Thomas Perschak / tcltk · GitLab page has a list of available binaries at Package Registry · Thomas Perschak / tcltk · GitLab. Maybe you could download the ubuntu.jammy version-9.0.2.0 · Generic .deb file & try using debtap to install it:

Otherwise, it might just be easier to wait until tcl 9 makes it into Arch, and then flows into Manjaro’s repos. Of course, if you switch to Unstable branch, you will have access to it a lot sooner than if you remain on Stable branch.

This link was helpful but still left with a mess that’s not connected.

First, had a few stupid errors

  1. Stupidly named the folder where extracted the source Tcl 9.0. Had to make it tcl9. Tcl then passed the make test and installed.
  2. However Tk failed for a couple reasons.
    A. There is no minizip in the Tk source as in the Tcl source, so had to install zip. See narkive post.
    B. There was a draw error that was corrected by this post https://stackoverflow.com/a/63207529/9852762 which was to export QT_X11_NO_MITSHM=1.
    C. There were other errors in the make test that had to do with stacking and focus but when it completed, it showed 574 passed / 17 skipped / and 0 failed. So, that is confusing.

Then installed critcl following https://andreas-kupries.github.io/critcl/doc/files/critcl_howto_install.html#section2.

I tried it not in root and could not get critcl to use the Tcl 9.0, which was the main goal. So, I tried to install it in root; that is, Tcl 9.0 and then critcl and it keeps using Tcl 8.6. If try to uninstall Tcl 8.6, then it states SQLite analyzer will break.

Also, when I run Tcl 9.0 (whether installed in root or under home/usr) and package require sqlite3 it uses version 3.47.1 and Tcl 8.6 use version 3.49.

I don’t see how to get all these pieces connects; that is, critcl using the new version of Tcl, Tcl using the new version of SQLite, and SQLite analyzer using the new version of Tcl.

I think I might give up at this point, and just install critcl at root with no Tcl 9.0. The tcllib 2.0.1 is installed with critcl; and, apparently, the c accelerator “stuff” works okay in Tcl 8.6.

Just do not know enough about it.

1 Like