3
27
Fork
You've already forked tinmop
4

(asdf:load-system :tinmop) does not succeed #25

Closed
opened 2025年01月18日 23:17:00 +01:00 by fosskers · 20 comments

Hi there, in a naive attempt to use load-system, I'm told:

debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread
#<THREAD tid=991207 "main thread" RUNNING {100DB58093}>:
 Failed to find the TRUENAME of /home/colin/code/common-lisp/tinmop/src/config.lisp:
 No such file or directory

And indeed there is no such file, although there is a config.lisp.in.in. Is the tinmop system not intended to be loaded as-is?

Hi there, in a naive attempt to use `load-system`, I'm told: ``` debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread #<THREAD tid=991207 "main thread" RUNNING {100DB58093}>: Failed to find the TRUENAME of /home/colin/code/common-lisp/tinmop/src/config.lisp: No such file or directory ``` And indeed there is no such file, although there is a `config.lisp.in.in`. Is the `tinmop` system not intended to be loaded as-is?

This seems to be happening in rib as well.

This seems to be happening in `rib` as well.
Owner
Copy link

Hi @fosskers !

Thanks for you interest in this software (and in rib too! 😄).

config.lisp is filled with information that are tied to the operating system where the package is built such, for example: the directory where the system wide configuration file are placed, the path of the openssl executable and many others. Because of this characteristics, that file does not exists in the distributed package (it is near impossible to write one that fits all the possible GNU/Linux distribution, for example) and is, instead, generated at configure and build time: so to get config.lisp you need to run the usual:

./configure && make

Then you will be able to load the system (also you will get the tinmop executable too 😄).

Please pay attention to the fact that the configured system has been prepared for checking its configuration files in system location like /usr/local/etc/tinmop/ or /usr/local/share/tinmop but if you did not run make install those directories does not exists and you will get en error if you try to run tinmop; if you want to run the software in your home directory you need also to edit the constants placed on top of the generated config.lisp, for example:

(alexandria:define-constant +sys-data-dir+
"/home/user/lisp/tinmop" :test #'string=)
(alexandria:define-constant +sys-conf-dir+
"/home/user/lisp/tinmop/etc/" :test #'string=)
(alexandria:define-constant +catalog-dir+
"/home/user/lisp/tinmop/po" :test #'string=)
;; the rest of config.lisp below

The same apply to rib too!

If you plan to explore this package I suggest to track the development branch as contains many improvements and bug fix! I hope to make a new release soon. 😅

Bye!
C.

Hi @fosskers ! Thanks for you interest in this software (and in rib too! 😄). `config.lisp` is filled with information that are tied to the operating system where the package is built such, for example: the directory where the system wide configuration file are placed, the path of the `openssl` executable and many others. Because of this characteristics, that file does not exists in the distributed package (it is near impossible to write one that fits all the possible GNU/Linux distribution, for example) and is, instead, generated at configure and build time: so to get `config.lisp` you need to run the usual: ``` sh ./configure && make ``` Then you will be able to load the system (also you will get the tinmop executable too 😄). Please pay attention to the fact that the configured system has been prepared for checking its configuration files in system location like `/usr/local/etc/tinmop/` or `/usr/local/share/tinmop` but if you did not run `make install` those directories does not exists and you will get en error if you try to run tinmop; if you want to run the software in your home directory you need also to edit the constants placed on top of the generated `config.lisp`, for example: ``` lisp (alexandria:define-constant +sys-data-dir+ "/home/user/lisp/tinmop" :test #'string=) (alexandria:define-constant +sys-conf-dir+ "/home/user/lisp/tinmop/etc/" :test #'string=) (alexandria:define-constant +catalog-dir+ "/home/user/lisp/tinmop/po" :test #'string=) ;; the rest of config.lisp below ``` The same apply to `rib` too! If you plan to explore this package I suggest to track the `development` branch as contains many improvements and bug fix! I hope to make a new release soon. 😅 Bye! C.

Thanks for your detailed response! My interest comes from having swept over most of the CL ecosystem while implementing https://github.com/fosskers/vend . In trying to provision/build tinmop with it, I ran into the issue posted above.

By the way, I also noticed that in a number of your projects, lines like:

 :in-order-to ((test-op (test-op :foo/tests))))

tend to be missing from defsystem declarations, meaning that it's not possible to simply do (asdf:test-system :foo). Is this something you'd be willing to accept PRs for?

Thanks for your detailed response! My interest comes from having swept over most of the CL ecosystem while implementing https://github.com/fosskers/vend . In trying to provision/build `tinmop` with it, I ran into the issue posted above. By the way, I also noticed that in a number of your projects, lines like: ```lisp :in-order-to ((test-op (test-op :foo/tests)))) ``` tend to be missing from `defsystem` declarations, meaning that it's not possible to simply do `(asdf:test-system :foo)`. Is this something you'd be willing to accept PRs for?
Owner
Copy link

Hi @fosskers !

Thanks for your detailed response!

You're welcome!

My interest comes from having swept over most of the CL ecosystem while implementing https://github.com/fosskers/vend .

Very interesting project! I am a bit tired and i think I missed some bits reading the README but i want to follow the development for sure.

In trying to provision/build tinmop with it, I ran into the issue posted above.

Let me know if I can help, someway, to solve this issue.

By the way, I also noticed that in a number of your projects, lines like:

 :in-order-to ((test-op (test-op :foo/tests))))

tend to be missing from defsystem declarations, meaning that it's not possible to simply do (asdf:test-system :foo). Is this something you'd be willing to accept PRs for?

Yes i will! Thanks in advance! After quite a number of years I am still confused about how to use ASDF correctly! 😄
C.

Hi @fosskers ! > Thanks for your detailed response! You're welcome! > > My interest comes from having swept over most of the CL ecosystem while implementing https://github.com/fosskers/vend . Very interesting project! I am a bit tired and i think I missed some bits reading the README but i want to follow the development for sure. > > In trying to provision/build `tinmop` with it, I ran into the issue posted above. Let me know if I can help, someway, to solve this issue. > By the way, I also noticed that in a number of your projects, lines like: > ```lisp > :in-order-to ((test-op (test-op :foo/tests)))) > ``` > tend to be missing from `defsystem` declarations, meaning that it's not possible to simply do `(asdf:test-system :foo)`. Is this something you'd be willing to accept PRs for? Yes i will! Thanks in advance! After quite a number of years I am still confused about how to use ASDF correctly! 😄 C.

Let me know if I can help, someway, to solve this issue.

I see from the Makefile that it calls the quick_quicklisp.sh script, installing QL if it's missing. Since vend assumes that QL doesn't exist (and doesn't interact with it in anyway), I imagine it's possible to construe an alternate compilation scheme that avoids it but still produces the config.lisp file, enabling tinmop to be loaded as a system. Doing so is entirely up to you, though.

Yes i will! Thanks in advance!

Great, then I'll go find some of the ones I was looking at.

> Let me know if I can help, someway, to solve this issue. I see from the Makefile that it calls the `quick_quicklisp.sh` script, installing QL if it's missing. Since `vend` assumes that QL doesn't exist (and doesn't interact with it in anyway), I imagine it's possible to construe an alternate compilation scheme that avoids it but still produces the `config.lisp` file, enabling `tinmop` to be loaded as a system. Doing so is entirely up to you, though. > Yes i will! Thanks in advance! Great, then I'll go find some of the ones I was looking at.

I just put up 3 PRs. You should now be able to: (asdf:test-system :nodgui) etc.

I just put up 3 PRs. You should now be able to: `(asdf:test-system :nodgui)` etc.
Owner
Copy link

Hi @fosskers !

First let me thank you for your patches, i appreciated the time you spent to improve these projects! 🙏

Let me know if I can help, someway, to solve this issue.

I see from the Makefile that it calls the quick_quicklisp.sh script, installing QL if it's missing. Since vend assumes that QL doesn't exist (and doesn't interact with it in anyway), I imagine it's possible to construe an alternate compilation scheme that avoids it but still produces the config.lisp file, enabling tinmop to be loaded as a system. Doing so is entirely up to you, though.

Fortunately, the Makefile does not interact with the script quick_quicklisp.sh, the latter is generated by filling the template quick_quicklisp.sh.in when configure is run. Then is up to the user to run quick_quicklisp.sh too, or not (in a different scenario the user could be already have installed quicklisp for other software or their other projects).

I do not know if filling the template could harm the building of tinmop with vend; if yes, would be simple (even if we are talking about autotools here, so "simple" assumes a different meaning! 😃) to add a switch to configure to disable the generation of quick_quicklisp.sh; let me know if this change could be useful to you (and my proposed solution is OK) and i will add it to the configure.ac file.

Bye!
C.

Hi @fosskers ! First let me thank you for your patches, i appreciated the time you spent to improve these projects! 🙏 > > Let me know if I can help, someway, to solve this issue. > > I see from the Makefile that it calls the `quick_quicklisp.sh` script, installing QL if it's missing. Since `vend` assumes that QL doesn't exist (and doesn't interact with it in anyway), I imagine it's possible to construe an alternate compilation scheme that avoids it but still produces the `config.lisp` file, enabling `tinmop` to be loaded as a system. Doing so is entirely up to you, though. Fortunately, the Makefile does not interact with the script `quick_quicklisp.sh`, the latter is generated by filling the template `quick_quicklisp.sh.in` when `configure` is run. Then is up to the user to run `quick_quicklisp.sh` too, or not (in a different scenario the user could be already have installed quicklisp for other software or their other projects). I do not know if filling the template could harm the building of tinmop with `vend`; if yes, would be simple (even if we are talking about autotools here, so "simple" assumes a different meaning! 😃) to add a switch to `configure` to disable the generation of `quick_quicklisp.sh`; let me know if this change could be useful to you (and my proposed solution is OK) and i will add it to the `configure.ac` file. Bye! C.

I think either way I'd have to run ./configure && make before vend repl anyway, so as long as no part of that implicitly called Quicklisp, I think it would be okay.

I think either way I'd have to run `./configure && make` before `vend repl` anyway, so as long as no part of that implicitly called Quicklisp, I think it would be okay.
Owner
Copy link

Hi @fosskers !

so as long as no part of that implicitly called Quicklisp, I think it would be okay.

I am reasonably sure that Quicklisp is never called by both configure and make, the only place where this happens is in the Debian package building scripts. So I think you can confidently assume quicklisp is not going to get in your way. 😄

Bye!
C.

Hi @fosskers ! > so as long as no part of that implicitly called Quicklisp, I think it would be okay. I am reasonably sure that Quicklisp is never called by both `configure` and `make`, the only place where this happens is in the Debian package building scripts. So I think you can confidently assume quicklisp is not going to get in your way. 😄 Bye! C.

After ./configure I run make but am being told:

> make
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/home/colin/code/common-lisp/tinmop/missing' aclocal-1.16 -I m4
/home/colin/code/common-lisp/tinmop/missing: line 81: aclocal-1.16: command not found
WARNING: 'aclocal-1.16' is missing on your system.

Note that I have an aclocal installed, but it's 1.17.

After `./configure` I run `make` but am being told: ``` > make CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh '/home/colin/code/common-lisp/tinmop/missing' aclocal-1.16 -I m4 /home/colin/code/common-lisp/tinmop/missing: line 81: aclocal-1.16: command not found WARNING: 'aclocal-1.16' is missing on your system. ``` Note that I have an `aclocal` installed, but it's `1.17`.
Owner
Copy link

Hi @fosskers !

i believe i missed some files from the package distribution, sorry. 😓

Likely you can remove the error running:

automake --add-missing --copy --force-missing

or even:

autoreconf -fiv

before configure

I need to fix this issue in the next release. 😓

Bye!
C.

Hi @fosskers ! i believe i missed some files from the package distribution, sorry. 😓 Likely you can remove the error running: ``` sh automake --add-missing --copy --force-missing ``` or even: ``` sh autoreconf -fiv ``` before `configure` I need to fix this issue in the next release. 😓 Bye! C.

Current attempt:

  • autoreconf -fiv
  • ./configure
  • vend get
  • vend repl
  • > (asdf:load-system :tinmop)
#<THREAD tid=1208208 "main thread" RUNNING {1000C10093}>:
 Lock on package SXQL violated when defining CREATE-VIEW as a function while
 in package DB.

make didn't succeed as it is also running a specific asdf command related to the registry, and that doesn't seem to detect the dependencies fetched into vendored/ by vend.

Current attempt: - `autoreconf -fiv` - `./configure` - `vend get` - `vend repl` - `> (asdf:load-system :tinmop)` ``` #<THREAD tid=1208208 "main thread" RUNNING {1000C10093}>: Lock on package SXQL violated when defining CREATE-VIEW as a function while in package DB. ``` `make` didn't succeed as it is also running a specific `asdf` command related to the registry, and that doesn't seem to detect the dependencies fetched into `vendored/` by `vend`.
Owner
Copy link

Hi @fosskers !

Lock on package SXQL violated when defining CREATE-VIEW as a function while

This happens likely because i defined a function create-view that has the same name of a macro from sxql. 😓

make didn't succeed as it is also running a specific asdf command related to the registry, and that doesn't seem to detect the dependencies fetched into vendored/ by vend

This problem means that it is time to install vend! 😄

I'll try to reproduce the error and, more important, to fix it and - if i succeed - i am going to report the results.

Bye!
C.

Hi @fosskers ! > Lock on package SXQL violated when defining CREATE-VIEW as a function while This happens likely because i defined a function `create-view` that has the same name of a macro from sxql. 😓 > make didn't succeed as it is also running a specific asdf command related to the registry, and that doesn't seem to detect the dependencies fetched into vendored/ by vend This problem means that it is time to install vend! 😄 I'll try to reproduce the error and, more important, to fix it and - if i succeed - i am going to report the results. Bye! C.

Thank you!

Thank you!
Owner
Copy link

My pleasure @fosskers !
C.

My pleasure @fosskers ! C.
Owner
Copy link

Hi @fosskers !

I patched the tinmop code , changing name from create-view to create-a-view (my best guess is that newer version of sxql added a macro called create-view and that the reason for the error to be signaled).

Anyway, after changing function's name, i was able to build tinmop using vend but, unfortunately, i was only able to build the software using make, not from the REPL.

My steps was:

  1. build and install vend as explained in the project's readme;
  2. cd tinmop && ./configure
  3. vend get
  4. make
  5. ./tinmop 😄

My configuration is: Debian GNU/Linux stable with sbcl 2.2.9.debian

I am gong to patch the development branch of tinmop and pushing to this repository in the next hours.

Vend is truly a remarkable project, congratulation!
C.

Hi @fosskers ! I patched the tinmop code , changing name from `create-view` to `create-a-view` (my best guess is that newer version of `sxql` added a macro called `create-view` and that the reason for the error to be signaled). Anyway, after changing function's name, i was able to build tinmop using vend but, unfortunately, i was only able to build the software using `make`, not from the REPL. My steps was: 1. build and install vend as explained in the project's readme; 2. cd tinmop && ./configure 3. vend get 4. make 5. ./tinmop 😄 My configuration is: Debian GNU/Linux stable with sbcl 2.2.9.debian I am gong to patch the development branch of tinmop and pushing to this repository in the next hours. Vend is truly a remarkable project, congratulation! C.
Owner
Copy link

Hi @fosskers !

Turned out that changing the function name was not enough, also there was some work to do with the ASDF's source registry. Someway i think i was able to fix both; so the steps to build tinmop with vendored dependencies using vend are:

  1. build and install vend as explained in the project's readme;
  2. cd tinmop && ./configure
  3. vend get
  4. make tinmop-vendored

Note the target for make in step 4, i am using a custom target because using vendored dependencies is discouraged on some distribution, for example guix, so i need to maintain a makefile compatible with this systems.

I hope this fixes are OK for you!

Bye!
C.

Hi @fosskers ! Turned out that changing the function name was not enough, also there was some work to do with the ASDF's source registry. Someway i think i was able to fix both; so the steps to build tinmop with vendored dependencies using `vend` are: 1. build and install vend as explained in the project's readme; 2. cd tinmop && ./configure 3. vend get 4. make tinmop-vendored Note the target for make in step 4, i am using a custom target because using vendored dependencies is discouraged on some distribution, for example guix, so i need to maintain a makefile compatible with this systems. I hope this fixes are OK for you! Bye! C.
Owner
Copy link

Hi @fosskers !

I just checked and, after you build this package using make tinmop-vendored, (asdf:load-system :tinmop), works too!

Bye!
C.

Hi @fosskers ! I just checked and, after you build this package using `make tinmop-vendored`, `(asdf:load-system :tinmop)`, works too! Bye! C.

It builds, thank you for the adaptation!

It builds, thank you for the adaptation!
Owner
Copy link

Thanks to you @fosskers !

I think vend is going to help a lot people to build package of tinmop for their favorite distro!

Bye!
C.

Thanks to you @fosskers ! I think vend is going to help a lot people to build package of tinmop for their favorite distro! Bye! C.
Sign in to join this conversation.
No Branch/Tag specified
master
development
v0.9.9.141421356237309504
v0.9.9.14142135623730951
v0.9.9.1414213562373095
v0.9.9.141421356237309
v0.9.9.14142135623730
v0.9.9.1414213562373
v0.9.9.141421356237
v0.9.9.14142135623
v0.9.9.1414213562
v0.9.9.141421356
v0.9.9.14142135
v0.9.9.1414213
v0.9.9.141421
v0.9.9.14142
v0.9.9.1414
v0.9.9.141
v0.9.9.14
v0.9.9.1
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cage/tinmop#25
Reference in a new issue
cage/tinmop
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?