|
From: Pietro C. <ga...@ga...> - 2025-08-11 11:09:55
|
Hi, I main a number of Tcl/Tk ports on FreeBSD, under the umbrella of the tcltk@ team: https://portscout.freebsd.org/tc...@fr.... I would like to express my pain points and concerns when it comes to maintain Tcl/Tk as a downstream packager, particularly in light of the upcoming 9.1 release. I think I have expressed some (most?) of these concerns in the past, in a way or another, either on this ML and/or on IRC. What I say below is only partially specific to how the FreeBSD ports work. I expect different downstreams to have intersecting but not identical sets of concerns. 1. versioning Problem: We used to maintain flavours of Tcl/Tk for 8.4, 8.5, 8.6, 8.7, and 9.0. Right now we only have 8.6 and 9.0 in the tree. I'd like to keep it that way, i.e., one port per major version. We need to figure out sooner than later whether it's going to be a pain to upgrade from 9.0 to 9.1. Better yet: we need to make sure that it's *not* going to be a pain. Ideally, I'd like to have one port for tcl8 and one for tcl9. Ideally, I wouldn't have to care about minor versions. Proposal: I propose that we TIP specifics about our versioning schema, and we abide to the post-conditions we set forward. TIP 439 (Semantic Versioning) is marked as obsoleted. We should resurrect it. I think we should state that any 9.x is going to be source/binary compatible with 9.0. Only backwards compatibile enhancements should be included. 2. file provenance Problem: One of the problems that package managers solve for users is to answer the question: which package installs /usr/local/foo/bar? Each file must come from a unique 3rd party package. When two different packages install the same file, they are marked as conflicting, and the user cannot have them both installed at the same time. Tcl 8.x doesn't have disjoint sets of installation files for different values of x. The only versioned things are the shared library and tclsh. This is true also for 8.x and 9.x. We go through a lot of gymnics in FreeBSD to make sure people can install 8.6 and 9.0 together, e.g., by suffixing man pages with .tcl86 and .tcl90, and by installing header files to ${prefix}/include/tcl${ver}. Proposal: This is linked to the previous item: if we can't seamlessy upgrade from one version to another, we need to make sure people can keep both at the same time. If we want that to be a painless process, we need to make sure the packages don't install overlapping files. I propose that we adopt a solution similar to what it's done on FreeBSD, where every files is installed under a path that contains the version in a way or another. Here's how we do it on FreeBSD, where %%TCL_VER%% is expanded to e.g., 8.6 and %%SHORT_TCL_VERSION%% to e.g., 86: https://cgit.freebsd.org/ports/tree/lang/tcl86/pkg-plist 3. source-level compatibility between Tcl8 and Tcl9, Thread Problem: The Thread package now comes in two branches, 2.x for Tcl8 and 3.x for Tcl9. This was a major pain point and required me to split the previous tclthread port into two separate ports, tcl8-thread and tcl9-thread. I hope this won't be the case for many extensions. To me, not providing a Thread extension that's buildable with both Tcl8 and Tcl9 is a very bad message to give to downstream and extension implementors. TIP 486 suggested it, but it was never discussed / voted. Proposal: I fear the ship has sailed on this one, but it would be great if the 3.x branch could be made buildable with both Tcl8 and Tcl9. 4. tcltls Problem: We now have 9.0 out of the door and work is already underways for 9.1. However, it's 2025 and we don't have a way to talk https, as the currently released tcltls extension doesn't build with Tcl9. I know there's a tcltls 1.8 tagged, but not released; I am testing it right now and it seems to work fine for my use caess. I also see that work is being done (is it?) for 2.0. But no matter what happens in the future, they're missing *now*, as 9.x is supposed to be adopted by users. Solution: Some packages are A-class citizens and get distributed together with Tcl: https://sourceforge.net/projects/tcl/files/Tcl/9.0.2/. I suggest that tcltls be upgraded to A-class. Conclusion I have the feeling that the people doing the work (and thanks for that!) are sometimes disconnected from the people who are supposed to integrate and use the result of the work. For example, to reiterate, I don't see how 9.1 can be a priority when 9.0 can't talk on the web because of a missing TLS solution. I understand that this is opensource and people get to work on whatever pleases them. But I also think that if we don't want to become irrelevant on the landscape of programming languages, we should offer more of an integrated solution and less of individual pieces. For a parallel, in OCaml land, there's this concept of an OCaml platform from some years now: https://ocaml.org/platform. I think we could draw some inspriration. I ask the people putting in the hours and the efforts to try to connect with the users base and the downstream pacakgers to offer a viable, usable, and maintainable Tcl solution. I ask that big changes, especially those affecting users, be TIP'd and not just implemented, merged, and forgotten. I am willing to put hours in, if people agree on the general direction. I am happy to start multiple threads on the different subjects, too. Thanks, Pietro -- Pietro Cerutti I have pledged to give 10% of income to effective charities and invite you to join me - https://givingwhatwecan.org |
|
From: Harald O. <har...@el...> - 2025-08-11 11:25:06
Attachments:
OpenPGP_signature.asc
|
Hi Pietro, thanks for the great post. Would you be available for the telco today 12:00 UTC (in 26 minuites) ? Thanks for all, Harald Am 11.08.2025 um 13:09 schrieb Pietro Cerutti via Tcl-Core: > Hi, > > I main a number of Tcl/Tk ports on FreeBSD, under the umbrella of the > tcltk@ team: https://portscout.freebsd.org/tc...@fr.... > > I would like to express my pain points and concerns when it comes to > maintain Tcl/Tk as a downstream packager, particularly in light of the > upcoming 9.1 release. I think I have expressed some (most?) of these > concerns in the past, in a way or another, either on this ML and/or on IRC. > > What I say below is only partially specific to how the FreeBSD ports > work. I expect different downstreams to have intersecting but not > identical sets of concerns. > > 1. versioning > > Problem: > We used to maintain flavours of Tcl/Tk for 8.4, 8.5, 8.6, 8.7, and 9.0. > Right now we only have 8.6 and 9.0 in the tree. I'd like to keep it that > way, i.e., one port per major version. We need to figure out sooner than > later whether it's going to be a pain to upgrade from 9.0 to 9.1. Better > yet: we need to make sure that it's *not* going to be a pain. > Ideally, I'd like to have one port for tcl8 and one for tcl9. Ideally, I > wouldn't have to care about minor versions. > > Proposal: > I propose that we TIP specifics about our versioning schema, and we > abide to the post-conditions we set forward. TIP 439 (Semantic > Versioning) is marked as obsoleted. We should resurrect it. I think we > should state that any 9.x is going to be source/binary compatible with > 9.0. Only backwards compatibile enhancements should be included. > > 2. file provenance > > Problem: > One of the problems that package managers solve for users is to answer > the question: which package installs /usr/local/foo/bar? Each file must > come from a unique 3rd party package. When two different packages > install the same file, they are marked as conflicting, and the user > cannot have them both installed at the same time. > Tcl 8.x doesn't have disjoint sets of installation files for different > values of x. The only versioned things are the shared library and tclsh. > This is true also for 8.x and 9.x. > We go through a lot of gymnics in FreeBSD to make sure people can > install 8.6 and 9.0 together, e.g., by suffixing man pages with .tcl86 > and .tcl90, and by installing header files to ${prefix}/include/tcl${ver}. > > Proposal: > This is linked to the previous item: if we can't seamlessy upgrade from > one version to another, we need to make sure people can keep both at the > same time. If we want that to be a painless process, we need to make > sure the packages don't install overlapping files. > I propose that we adopt a solution similar to what it's done on FreeBSD, > where every files is installed under a path that contains the version in > a way or another. Here's how we do it on FreeBSD, where %%TCL_VER%% is > expanded to e.g., 8.6 and %%SHORT_TCL_VERSION%% to e.g., 86: > https://cgit.freebsd.org/ports/tree/lang/tcl86/pkg-plist > > 3. source-level compatibility between Tcl8 and Tcl9, Thread > > Problem: > The Thread package now comes in two branches, 2.x for Tcl8 and 3.x for > Tcl9. This was a major pain point and required me to split the previous > tclthread port into two separate ports, tcl8-thread and tcl9-thread. > I hope this won't be the case for many extensions. > To me, not providing a Thread extension that's buildable with both Tcl8 > and Tcl9 is a very bad message to give to downstream and extension > implementors. TIP 486 suggested it, but it was never discussed / voted. > > Proposal: > I fear the ship has sailed on this one, but it would be great if the 3.x > branch could be made buildable with both Tcl8 and Tcl9. > > 4. tcltls > > Problem: > We now have 9.0 out of the door and work is already underways for 9.1. > However, it's 2025 and we don't have a way to talk https, as the > currently released tcltls extension doesn't build with Tcl9. I know > there's a tcltls 1.8 tagged, but not released; I am testing it right now > and it seems to work fine for my use caess. I also see that work is > being done (is it?) for 2.0. But no matter what happens in the future, > they're missing *now*, as 9.x is supposed to be adopted by users. > > Solution: > Some packages are A-class citizens and get distributed together with > Tcl: https://sourceforge.net/projects/tcl/files/Tcl/9.0.2/. > I suggest that tcltls be upgraded to A-class. > > Conclusion > > I have the feeling that the people doing the work (and thanks for that!) > are sometimes disconnected from the people who are supposed to integrate > and use the result of the work. > > For example, to reiterate, I don't see how 9.1 can be a priority when > 9.0 can't talk on the web because of a missing TLS solution. > > I understand that this is opensource and people get to work on whatever > pleases them. But I also think that if we don't want to become > irrelevant on the landscape of programming languages, we should offer > more of an integrated solution and less of individual pieces. For a > parallel, in OCaml land, there's this concept of an OCaml platform from > some years now: https://ocaml.org/platform. I think we could draw some > inspriration. > > I ask the people putting in the hours and the efforts to try to connect > with the users base and the downstream pacakgers to offer a viable, > usable, and maintainable Tcl solution. > > I ask that big changes, especially those affecting users, be TIP'd and > not just implemented, merged, and forgotten. > > I am willing to put hours in, if people agree on the general direction. > > I am happy to start multiple threads on the different subjects, too. > > Thanks, > > Pietro > -- ELMICRON Dr. Harald Oehlmann GmbH Koesener Str. 85 06618 NAUMBURG - Germany Phone: +49 3445 781120 Direct: +49 3445 781127 www.Elmicron.de German legal references: Geschaeftsfuehrer: Dr. Harald Oehlmann UST Nr. / VAT ID No.: DE206105272 HRB 212803 Stendal |
|
From: Pietro C. <ga...@ga...> - 2025-08-11 11:35:05
|
On Aug 11 2025, 11:24 +0000, Harald Oehlmann <har...@el...> wrote: >Hi Pietro, >thanks for the great post. >Would you be available for the telco today 12:00 UTC (in 26 minuites) ? Unfortunately not, sorry. I can try to be available for the next one, though! Thanks! -- Pietro Cerutti I have pledged to give 10% of income to effective charities and invite you to join me - https://givingwhatwecan.org |
|
From: Harald O. <har...@el...> - 2025-08-11 11:46:22
Attachments:
OpenPGP_signature.asc
|
Hi Peitro, yes, communication and clear words are the main points. I always try to keep Reinhard Max in the loop, the SuSE maintainer, who also has issues, but different ones. On the practical side, I only see a need for a branch for tcl8 and tcl9. tcl9.1 is backward compatible to 9.0, but not the other way round. TCLTLS is a long story. I am very happy, that Brian o'Hagan has made technical improvements and taken the maintainership. I already asked him for a release and he said: end of the month (of July). Brian, a release would be great! Even, if it is not perfect and not all issues are solved. There are so many improvements, that it is better than anything else. Even for 8.6, the new version is a big step. About the Thread package: maintainer pending, sorry. The long time goal is to include parts of it into the core. Thanks for all, Harald |
|
From: Brian O’H. <bri...@co...> - 2025-08-11 12:15:14
|
I’ve been busy at work, so I’m a little behind schedule. I should have an updated TkTable in a few weeks, then I’ll finish up TclTLS 2.0 after that. > On Aug 11, 2025, at 6:47 AM, Harald Oehlmann <har...@el...> wrote: > > Hi Peitro, > yes, communication and clear words are the main points. > I always try to keep Reinhard Max in the loop, the SuSE maintainer, who also has issues, but different ones. > > On the practical side, I only see a need for a branch for tcl8 and tcl9. > tcl9.1 is backward compatible to 9.0, but not the other way round. > > TCLTLS is a long story. I am very happy, that Brian o'Hagan has made technical improvements and taken the maintainership. > I already asked him for a release and he said: end of the month (of July). Brian, a release would be great! Even, if it is not perfect and not all issues are solved. There are so many improvements, that it is better than anything else. Even for 8.6, the new version is a big step. > > About the Thread package: maintainer pending, sorry. The long time goal is to include parts of it into the core. > > Thanks for all, > Harald > _______________________________________________ > Tcl-Core mailing list > Tcl...@li... > https://lists.sourceforge.net/lists/listinfo/tcl-core > <OpenPGP_signature.asc> |
|
From: <apn...@ya...> - 2025-08-12 17:01:18
|
Pietro, Thanks for the detailed write-up. My thoughts below. 1. versioning I think a lot of people would be happy (starting with me) if Tcl supported exactly two versions at any one time, though I'm not sure if that would mean the latest minor versions of two major versions, or the last two minor versions period (i.e. 8.6.17 + 9.1, say, or 9.0 + 9.1). However, despite the best of intensions, there is always potential for inadvertent, or unavoidable, differences between minor revs, say 9.1 -> 9.2. At least this has been historically true. For example, despite 8.5->8.6 being very highly compatible, if you were shipping a commercial application, you still had to make changes to Tk because names of colors changed, docs or code because text widget key bindings changed, any code involving safe interps because changing the [file] implementation to an ensemble broke exposing the command in safe interps and so on. So I fear it might be a pipe dream to only have one 9.x version on the system unless we can guarantee absolutely no incompatibilities, which is very difficult to do. 2. file provisioning. I learnt something today. Does this apply even if the files installed by each package to the same location are in fact identical (the Windows installer for example maintains a reference count). But in any case, doesn't the use of --prefix, --with-tcl, and friends, already allow you build and install Tcl as well as extensions into different paths? What other changes would you require here? 3. single-source extensions. Most extensions I know are already single source, thread and Tk being the exceptions. I think Tk is too closely coupled with Tcl and can stay as an exception. As for thread, I committed a branch thread9-for-tcl8 in the thread repository that builds (and passes the test suite for whatever that's worth) with both Tcl 8 and Tcl 9. I am not entirely sure why that was not done to begin with but I believe based on the discussion at the last meet, the issue was not so much with 8.6 compatibility but with earlier versions. If there are no objections from anyone, it can be merged into the main branch of thread. I'm not sure if that is too late to help you but in any case, I don't think you need to worry about needing a separate 8/9 ports for every extension. They may of course have to be installed in separate directories as most pkgIndex files are not written to choose the appropriate shared library to load. 4. tcltls - true. Unfortunately, the reality is pay work and real life take priority. Hopefully this should be resolved soon. With regards to the points you make in your Conclusion, I think everyone is painfully aware of the need for an updated site, a better distribution mechanism for extensions etc. and there are folks working on those aspects. But again, it will take some time. The other point about more interaction / feedback from users, I have a somewhat contrary view. It seems to me no one (may be some exaggeration there) tests or tries out the alpha or even beta releases to provide feed back before the release and it's kind of too late afterwards. Even presence at the bi-weekly or monthly meetups would be very helpful in determining the issues being faced and the priorities for future work. /Ashok -----Original Message----- From: Pietro Cerutti via Tcl-Core <tcl...@li...> Sent: Monday, August 11, 2025 4:40 PM To: tcl...@li... Subject: [TCLCORE] Pain points as a distro maintainer Hi, I main a number of Tcl/Tk ports on FreeBSD, under the umbrella of the tcltk@ team: https://portscout.freebsd.org/tc...@fr.... I would like to express my pain points and concerns when it comes to maintain Tcl/Tk as a downstream packager, particularly in light of the upcoming 9.1 release. I think I have expressed some (most?) of these concerns in the past, in a way or another, either on this ML and/or on IRC. What I say below is only partially specific to how the FreeBSD ports work. I expect different downstreams to have intersecting but not identical sets of concerns. 1. versioning Problem: We used to maintain flavours of Tcl/Tk for 8.4, 8.5, 8.6, 8.7, and 9.0. Right now we only have 8.6 and 9.0 in the tree. I'd like to keep it that way, i.e., one port per major version. We need to figure out sooner than later whether it's going to be a pain to upgrade from 9.0 to 9.1. Better yet: we need to make sure that it's *not* going to be a pain. Ideally, I'd like to have one port for tcl8 and one for tcl9. Ideally, I wouldn't have to care about minor versions. Proposal: I propose that we TIP specifics about our versioning schema, and we abide to the post-conditions we set forward. TIP 439 (Semantic Versioning) is marked as obsoleted. We should resurrect it. I think we should state that any 9.x is going to be source/binary compatible with 9.0. Only backwards compatibile enhancements should be included. 2. file provenance Problem: One of the problems that package managers solve for users is to answer the question: which package installs /usr/local/foo/bar? Each file must come from a unique 3rd party package. When two different packages install the same file, they are marked as conflicting, and the user cannot have them both installed at the same time. Tcl 8.x doesn't have disjoint sets of installation files for different values of x. The only versioned things are the shared library and tclsh. This is true also for 8.x and 9.x. We go through a lot of gymnics in FreeBSD to make sure people can install 8.6 and 9.0 together, e.g., by suffixing man pages with .tcl86 and .tcl90, and by installing header files to ${prefix}/include/tcl${ver}. Proposal: This is linked to the previous item: if we can't seamlessy upgrade from one version to another, we need to make sure people can keep both at the same time. If we want that to be a painless process, we need to make sure the packages don't install overlapping files. I propose that we adopt a solution similar to what it's done on FreeBSD, where every files is installed under a path that contains the version in a way or another. Here's how we do it on FreeBSD, where %%TCL_VER%% is expanded to e.g., 8.6 and %%SHORT_TCL_VERSION%% to e.g., 86: https://cgit.freebsd.org/ports/tree/lang/tcl86/pkg-plist 3. source-level compatibility between Tcl8 and Tcl9, Thread Problem: The Thread package now comes in two branches, 2.x for Tcl8 and 3.x for Tcl9. This was a major pain point and required me to split the previous tclthread port into two separate ports, tcl8-thread and tcl9-thread. I hope this won't be the case for many extensions. To me, not providing a Thread extension that's buildable with both Tcl8 and Tcl9 is a very bad message to give to downstream and extension implementors. TIP 486 suggested it, but it was never discussed / voted. Proposal: I fear the ship has sailed on this one, but it would be great if the 3.x branch could be made buildable with both Tcl8 and Tcl9. 4. tcltls Problem: We now have 9.0 out of the door and work is already underways for 9.1. However, it's 2025 and we don't have a way to talk https, as the currently released tcltls extension doesn't build with Tcl9. I know there's a tcltls 1.8 tagged, but not released; I am testing it right now and it seems to work fine for my use caess. I also see that work is being done (is it?) for 2.0. But no matter what happens in the future, they're missing *now*, as 9.x is supposed to be adopted by users. Solution: Some packages are A-class citizens and get distributed together with Tcl: https://sourceforge.net/projects/tcl/files/Tcl/9.0.2/. I suggest that tcltls be upgraded to A-class. Conclusion I have the feeling that the people doing the work (and thanks for that!) are sometimes disconnected from the people who are supposed to integrate and use the result of the work. For example, to reiterate, I don't see how 9.1 can be a priority when 9.0 can't talk on the web because of a missing TLS solution. I understand that this is opensource and people get to work on whatever pleases them. But I also think that if we don't want to become irrelevant on the landscape of programming languages, we should offer more of an integrated solution and less of individual pieces. For a parallel, in OCaml land, there's this concept of an OCaml platform from some years now: https://ocaml.org/platform. I think we could draw some inspriration. I ask the people putting in the hours and the efforts to try to connect with the users base and the downstream pacakgers to offer a viable, usable, and maintainable Tcl solution. I ask that big changes, especially those affecting users, be TIP'd and not just implemented, merged, and forgotten. I am willing to put hours in, if people agree on the general direction. I am happy to start multiple threads on the different subjects, too. Thanks, Pietro -- Pietro Cerutti I have pledged to give 10% of income to effective charities and invite you to join me - https://givingwhatwecan.org _______________________________________________ Tcl-Core mailing list Tcl...@li... https://lists.sourceforge.net/lists/listinfo/tcl-core |
|
From: Pietro C. <ga...@ga...> - 2025-08-12 20:05:06
|
On Aug 12 2025, 17:01 +0000, apn...@ya... wrote:
>Pietro,
>
>Thanks for the detailed write-up. My thoughts below.
>
>1. versioning
>
>I think a lot of people would be happy (starting with me) if Tcl supported
>exactly two versions at any one time, though I'm not sure if that would mean
>the latest minor versions of two major versions, or the last two minor
>versions period (i.e. 8.6.17 + 9.1, say, or 9.0 + 9.1).
I think before asking that question, we should ask ourselves what
meaning we impute to our major and minor versions. If it's similarly
hard to migrate from 8.6 to 9.0 and from 9.0 to 9.1, then I don't see
why we don't skip 9.1 and do 10.0 instead.
Put another way, can we *commit* to do breaking changes on major
versions, and maintain two major versions where the previous-to-last
only gets bug fixes?
>2. file provisioning. I learnt something today. Does this apply even if
>the >files installed by each package to the same location are in fact
>identical (the Windows installer for example maintains a reference
>count).
Interesting, first time I hear about that. We don't have that on
FreeBSD.
>But in any case, doesn't the use of --prefix, --with-tcl, and friends,
>already allow you build and install Tcl as well as extensions into
>different paths? What other changes would you require here?
All ports install under the same prefix. I could install Tcl8 under
/usr/local/tcl8/{lib,include,man,...}, but that goes against the best
practives. It would still require at least different pkg-config files
for tcl8 and tcl9, and tweaks to the loader to find shlibs in
non-standard places.
I would like to know how other people deal with having many versions
installed at the same time. For example, includes and manual pages are
different between 8.6 and 9.0. Do people install whole trees under
different prefixes?
>3. single-source extensions. Most extensions I know are already single
>source, thread and Tk being the exceptions. I think Tk is too closely
>coupled with Tcl and can stay as an exception. As for thread, I committed a
>branch thread9-for-tcl8 in the thread repository that builds (and passes the
>test suite for whatever that's worth) with both Tcl 8 and Tcl 9.
That's wonderful, thanks! I gave it a quick go and it behaves nicely.
>I'm not sure if that is too late to help you but in any case, I don't
>think you need to worry about needing a separate 8/9 ports for every
>extension. They may of course have to be installed in separate
>directories as most pkgIndex files
>are not written to choose the appropriate shared library to load.
We have a way to build the same port with different options, we call
that concept "flavors". That would allow to build the same extension
against Tcl8 and Tcl9 and install them both together. They would still
require different set of installed files, though.
That was my plan for thread too, but it turns out that having different
sources for different flavors goes against the grain a bit. I might be
able to get back to that now :)
>4. tcltls - true. Unfortunately, the reality is pay work and real life
>take priority. Hopefully this should be resolved soon.
Yep!
>
>With regards to the points you make in your Conclusion, I think everyone is
>painfully aware of the need for an updated site, a better distribution
>mechanism for extensions etc. and there are folks working on those aspects.
>But again, it will take some time.
I think we need direction and a common view of what we want to offer our
users, more than we need time.
I argue that working on 9.1 when 9.0 is just released and the ecosystem
hasn't caught up, is probably not the best way to spend the time.
And if it is, I fear I don't understand the reasons.
>The other point about more interaction /
>feedback from users, I have a somewhat contrary view. It seems to me no one
>(may be some exaggeration there) tests or tries out the alpha or even beta
>releases to provide feed back before the release and it's kind of too late
>afterwards.
I'm not on the core team so I don't know what happens there. But I read
the mailing lists, most of the TIPs that are drafted (I admit I don't
follow Tk that much), and I occasionally take a look at what's up on the
fossil repos. My feeling is that I don't know what's going on. Sometimes
dgp sends an email with a release schedule. I don't know where it comes
from. I don't know why we're doing 9.1 now. I'm sure there is rationale,
but it doesn't come across.
>Even presence at the bi-weekly or monthly meetups would be very
>helpful in determining the issues being faced and the priorities for future
>work.
Yes, being able to attend would be good. I'll see if I can make it some
time.
Thanks for the time you took and for the writeup!
>
>/Ashok
>
>-----Original Message-----
>From: Pietro Cerutti via Tcl-Core <tcl...@li...>
>Sent: Monday, August 11, 2025 4:40 PM
>To: tcl...@li...
>Subject: [TCLCORE] Pain points as a distro maintainer
>
>Hi,
>
>I main a number of Tcl/Tk ports on FreeBSD, under the umbrella of the
>tcltk@ team: https://portscout.freebsd.org/tc...@fr....
>
>I would like to express my pain points and concerns when it comes to
>maintain Tcl/Tk as a downstream packager, particularly in light of the
>upcoming 9.1 release. I think I have expressed some (most?) of these
>concerns in the past, in a way or another, either on this ML and/or on
>IRC.
>
>What I say below is only partially specific to how the FreeBSD ports
>work. I expect different downstreams to have intersecting but not
>identical sets of concerns.
>
>1. versioning
>
>Problem:
>We used to maintain flavours of Tcl/Tk for 8.4, 8.5, 8.6, 8.7, and 9.0.
>Right now we only have 8.6 and 9.0 in the tree. I'd like to keep it that
>way, i.e., one port per major version. We need to figure out sooner than
>later whether it's going to be a pain to upgrade from 9.0 to 9.1. Better
>yet: we need to make sure that it's *not* going to be a pain.
>Ideally, I'd like to have one port for tcl8 and one for tcl9. Ideally, I
>wouldn't have to care about minor versions.
>
>Proposal:
>I propose that we TIP specifics about our versioning schema, and we
>abide to the post-conditions we set forward. TIP 439 (Semantic
>Versioning) is marked as obsoleted. We should resurrect it. I think we
>should state that any 9.x is going to be source/binary compatible with
>9.0. Only backwards compatibile enhancements should be included.
>
>2. file provenance
>
>Problem:
>One of the problems that package managers solve for users is to answer
>the question: which package installs /usr/local/foo/bar? Each file must
>come from a unique 3rd party package. When two different packages
>install the same file, they are marked as conflicting, and the user
>cannot have them both installed at the same time.
>Tcl 8.x doesn't have disjoint sets of installation files for different
>values of x. The only versioned things are the shared library and tclsh.
>This is true also for 8.x and 9.x.
>We go through a lot of gymnics in FreeBSD to make sure people can
>install 8.6 and 9.0 together, e.g., by suffixing man pages with .tcl86
>and .tcl90, and by installing header files to ${prefix}/include/tcl${ver}.
>
>Proposal:
>This is linked to the previous item: if we can't seamlessy upgrade from
>one version to another, we need to make sure people can keep both at the
>same time. If we want that to be a painless process, we need to make
>sure the packages don't install overlapping files.
>I propose that we adopt a solution similar to what it's done on FreeBSD,
>where every files is installed under a path that contains the version in
>a way or another. Here's how we do it on FreeBSD, where %%TCL_VER%% is
>expanded to e.g., 8.6 and %%SHORT_TCL_VERSION%% to e.g., 86:
>https://cgit.freebsd.org/ports/tree/lang/tcl86/pkg-plist
>
>3. source-level compatibility between Tcl8 and Tcl9, Thread
>
>Problem:
>The Thread package now comes in two branches, 2.x for Tcl8 and 3.x for
>Tcl9. This was a major pain point and required me to split the previous
>tclthread port into two separate ports, tcl8-thread and tcl9-thread.
>I hope this won't be the case for many extensions.
>To me, not providing a Thread extension that's buildable with both Tcl8
>and Tcl9 is a very bad message to give to downstream and extension
>implementors. TIP 486 suggested it, but it was never discussed / voted.
>
>Proposal:
>I fear the ship has sailed on this one, but it would be great if the 3.x
>branch could be made buildable with both Tcl8 and Tcl9.
>
>4. tcltls
>
>Problem:
>We now have 9.0 out of the door and work is already underways for 9.1.
>However, it's 2025 and we don't have a way to talk https, as the
>currently released tcltls extension doesn't build with Tcl9. I know
>there's a tcltls 1.8 tagged, but not released; I am testing it right now
>and it seems to work fine for my use caess. I also see that work is
>being done (is it?) for 2.0. But no matter what happens in the future,
>they're missing *now*, as 9.x is supposed to be adopted by users.
>
>Solution:
>Some packages are A-class citizens and get distributed together with
>Tcl: https://sourceforge.net/projects/tcl/files/Tcl/9.0.2/.
>I suggest that tcltls be upgraded to A-class.
>
>Conclusion
>
>I have the feeling that the people doing the work (and thanks for that!)
>are sometimes disconnected from the people who are supposed to integrate
>and use the result of the work.
>
>For example, to reiterate, I don't see how 9.1 can be a priority when
>9.0 can't talk on the web because of a missing TLS solution.
>
>I understand that this is opensource and people get to work on whatever
>pleases them. But I also think that if we don't want to become
>irrelevant on the landscape of programming languages, we should offer
>more of an integrated solution and less of individual pieces. For a
>parallel, in OCaml land, there's this concept of an OCaml platform from
>some years now: https://ocaml.org/platform. I think we could draw some
>inspriration.
>
>I ask the people putting in the hours and the efforts to try to connect
>with the users base and the downstream pacakgers to offer a viable,
>usable, and maintainable Tcl solution.
>
>I ask that big changes, especially those affecting users, be TIP'd and
>not just implemented, merged, and forgotten.
>
>I am willing to put hours in, if people agree on the general direction.
>
>I am happy to start multiple threads on the different subjects, too.
>
>Thanks,
>
>Pietro
>
>--
>Pietro Cerutti
>I have pledged to give 10% of income to effective charities
>and invite you to join me - https://givingwhatwecan.org
>
>
>_______________________________________________
>Tcl-Core mailing list
>Tcl...@li...
>https://lists.sourceforge.net/lists/listinfo/tcl-core
>
--
Pietro Cerutti
I have pledged to give 10% of income to effective charities
and invite you to join me - https://givingwhatwecan.org
|
|
From: Jan N. <jan...@gm...> - 2025-08-13 12:24:36
|
Op di 12 aug 2025 om 22:05 schreef Pietro Cerutti:
> I think before asking that question, we should ask ourselves what
> meaning we impute to our major and minor versions. If it's similarly
> hard to migrate from 8.6 to 9.0 and from 9.0 to 9.1, then I don't see
> why we don't skip 9.1 and do 10.0 instead.
>
> Put another way, can we *commit* to do breaking changes on major
> versions, and maintain two major versions where the previous-to-last
> only gets bug fixes?
My guess is that it will be trivial to upgrade from 9.0 to 9.1, since
9.1 should be 100% upwards compatible with 9.0, both source
and binary compatibility. Therefore, I don't see a reason for
continuing to support Tcl 9.0 when 9.1 is out. However it is
always possible that unintentional minor incompatibilities
slip in. We only know that when 9.1 is completed.
Hope this helps,
Jan Nijmans
|
|
From: Jan N. <jan...@gm...> - 2025-08-13 12:17:56
|
Op di 12 aug 2025 om 19:01 schreef Ashok:
> As for thread, I committed a
> branch thread9-for-tcl8 in the thread repository that builds (and passes the
> test suite for whatever that's worth) with both Tcl 8 and Tcl 9. I am not
> entirely sure why that was not done to begin with but I believe based on the
> discussion at the last meet, the issue was not so much with 8.6
> compatibility but with earlier versions. If there are no objections from
> anyone, it can be merged into the main branch of thread. I'm not sure if
> that is too late to help you but in any case, I don't think you need to
> worry about needing a separate 8/9 ports for every extension. They may of
> course have to be installed in separate directories as most pkgIndex files
> are not written to choose the appropriate shared library to load.
Indeed, that was the work still missing. Completed now:
<https://core.tcl-lang.org/thread/info/c339140d1c367beb>
With this, "make dist", and unpacking the archive in a 8.6,
9.0 or 9.1 environment all work ;-)
Limiting thread 3 to Tcl 9.x made some code cleanups
possible that wouldn't be possible otherwise. You simply
put back the compatibility stuff for Tcl 8.6, which is fine.
Since the work is done, we might as well provide it
to people who want it. Why not?
Hope it helps,
Jan Nijtmans
|
|
From: Donald P. <d.g...@co...> - 2025-08-13 12:27:02
|
> On Aug 13, 2025, at 8:17 AM, Jan Nijtmans <jan...@gm...> wrote: > > Op di 12 aug 2025 om 19:01 schreef Ashok: >> As for thread, I committed a >> branch thread9-for-tcl8 in the thread repository that builds (and passes the >> test suite for whatever that's worth) with both Tcl 8 and Tcl 9. I am not >> entirely sure why that was not done to begin with but I believe based on the >> discussion at the last meet, the issue was not so much with 8.6 >> compatibility but with earlier versions. If there are no objections from >> anyone, it can be merged into the main branch of thread. I'm not sure if >> that is too late to help you but in any case, I don't think you need to >> worry about needing a separate 8/9 ports for every extension. They may of >> course have to be installed in separate directories as most pkgIndex files >> are not written to choose the appropriate shared library to load. > Indeed, that was the work still missing. Completed now: > <https://core.tcl-lang.org/thread/info/c339140d1c367beb> > With this, "make dist", and unpacking the archive in a 8.6, > 9.0 or 9.1 environment all work ;-) > > Limiting thread 3 to Tcl 9.x made some code cleanups > possible that wouldn't be possible otherwise. You simply > put back the compatibility stuff for Tcl 8.6, which is fine. > > Since the work is done, we might as well provide it > to people who want it. Why not? Do you wish to merge this to trunk so that Thread 3.0.4 (or 3.1 ?) supports Tcl 8.6 ? After that I could revise the Tcl 8.6.17 release to bundle both Thread 2,8,12 and Thread 3.0.4 DGP |
|
From: Jan N. <jan...@gm...> - 2025-08-13 12:36:42
|
Op wo 13 aug 2025 om 14:26 schreef Donald Porter:
> Do you wish to merge this to trunk so that Thread 3.0.4 (or 3.1 ?) supports Tcl 8.6 ?
>
> After that I could revise the Tcl 8.6.17 release to bundle both Thread 2,8,12 and Thread 3.0.4
I would prefer to wait. It's so fresh, better let more people test it before
rushing it in. We can release Thread 3.0.4 with this change later, and
people who want to use it with Tcl 8.6 can just drop it in there.
I see no reason to delay Tcl 8.6.17 for this.
Regards,
Jan Nijtmans
|
|
From: <apn...@ya...> - 2025-08-13 13:27:01
|
I agree with Jan. Presumably, it does not impede Pietro as he can always pull from that branch (or main branch once its merged.)
-----Original Message-----
From: Jan Nijtmans <jan...@gm...>
Sent: Wednesday, August 13, 2025 6:06 PM
To: Donald Porter <d.g...@co...>
Cc: apn...@ya...; tcl...@li...
Subject: Re: [TCLCORE] Pain points as a distro maintainer
Op wo 13 aug 2025 om 14:26 schreef Donald Porter:
> Do you wish to merge this to trunk so that Thread 3.0.4 (or 3.1 ?) supports Tcl 8.6 ?
>
> After that I could revise the Tcl 8.6.17 release to bundle both Thread 2,8,12 and Thread 3.0.4
I would prefer to wait. It's so fresh, better let more people test it before
rushing it in. We can release Thread 3.0.4 with this change later, and
people who want to use it with Tcl 8.6 can just drop it in there.
I see no reason to delay Tcl 8.6.17 for this.
Regards,
Jan Nijtmans
|
|
From: Pietro C. <ga...@ga...> - 2025-08-13 19:03:49
|
It's fine either way, I can pull Thread 3.0.4 from anywhere, once it's released. Thanks all for this! On Aug 13 2025, 13:26 +0000, apnmbx-public--- via Tcl-Core <tcl...@li...> wrote: >I agree with Jan. Presumably, it does not impede Pietro as he can always pull from that branch (or main branch once its merged.) > >-----Original Message----- >From: Jan Nijtmans <jan...@gm...> >Sent: Wednesday, August 13, 2025 6:06 PM >To: Donald Porter <d.g...@co...> >Cc: apn...@ya...; tcl...@li... >Subject: Re: [TCLCORE] Pain points as a distro maintainer > >Op wo 13 aug 2025 om 14:26 schreef Donald Porter: >> Do you wish to merge this to trunk so that Thread 3.0.4 (or 3.1 ?) supports Tcl 8.6 ? >> >> After that I could revise the Tcl 8.6.17 release to bundle both Thread 2,8,12 and Thread 3.0.4 > >I would prefer to wait. It's so fresh, better let more people test it before >rushing it in. We can release Thread 3.0.4 with this change later, and >people who want to use it with Tcl 8.6 can just drop it in there. > >I see no reason to delay Tcl 8.6.17 for this. > >Regards, > Jan Nijtmans > > > >_______________________________________________ >Tcl-Core mailing list >Tcl...@li... >https://lists.sourceforge.net/lists/listinfo/tcl-core -- Pietro Cerutti I have pledged to give 10% of income to effective charities and invite you to join me - https://givingwhatwecan.org |
|
From: Stuart C. <exo...@ya...> - 2025-08-18 19:05:23
|
Hi, On OpenBSD: My only real concern would be the Thread extension, which, if not made to work in 8 and 9, would have to be separate extension: tclthread and tcl9thread. Not great, not terrible. Right now, everything 8/9 is as integrated as possible but separated where necessary. Tcl/Tk 8.5 and 8.6 are installed under dir names "8.5" and "8.6". Tcl/Tk 9 will simply be "9". When 9.1 is released, it will replace 9.0. The paths and dirs for 9 will be similar, but I'll be keeping the older naming convention for libs and maybe other things, ie: libtk90.so instead of libtcl9tk90.so. These are the default auto_path and tm paths: $ tclsh8.6 % set auto_path /usr/local/lib/tcl/tcl8.6 /usr/local/lib/tcl % tcl::tm::path list /usr/local/lib/tcl/modules/85 /usr/local/lib/tcl/modules/86 /usr/local/lib/tcl/tcl8.6/modules Here's the packing list for 8.6: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/PLIST?rev=1.17&content-type=text/plain Here's a snip of the most important bits of the package readme: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/README?rev=1.8&content-type=text/plain Tclsh and Wish -------------- normally /usr/local/lib/tclsh, /usr/local/lib/wish now /usr/local/bin/tclsh8.6, /usr/local/bin/wish8.6 Library files ------------- scripts, encoding files, etc. normally in /usr/local/lib/tcl8.6, /usr/local/lib/tk8.6 now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Configuration Files ------------------- tclConfig.sh, tkConfig.sh normally in /usr/local/lib now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Header Files ------------ *.h normally in /usr/local/include now in /usr/local/include/tcl8.6, /usr/local/include/tk8.6 Manual Pages ------------ *.1, *.3, *.n normally in /usr/local/man now in /usr/local/lib/tcl/tcl8.6/man, /usr/local/lib/tcl/tk8.6/man Demos ----- *.tcl, * normally in /usr/local/lib/tk8.6/demos now in /usr/local/share/examples/tk8.6 Bundled Tcl Modules ------------------- *.tm normally in /usr/local/lib/tcl8/... now in /usr/local/lib/tcl/tcl8.6/modules Tcl Module Paths ---------------- normally /usr/local/lib/tcl8/... now /usr/local/lib/tcl/modules/{85,86} Manual Page Configuration ========================= Adding the following lines to /etc/man.conf wil enable man(1) and related commands can find the Tcl and Tk manual pages. manpath /usr/local/lib/tcl/tcl8.6/man manpath /usr/local/lib/tcl/tk8.6/man Stu |
|
From: Pietro C. <ga...@ga...> - 2025-08-19 19:55:31
|
On Aug 11 2025, 11:09 +0000, Pietro Cerutti via Tcl-Core <tcl...@li...> wrote: >Hi, > >I have the feeling that the people doing the work (and thanks for >that!) are sometimes disconnected from the people who are supposed to >integrate and use the result of the work. Here's a data point: https://core.tcl-lang.org/tclconfig/info/381985d331b96ba9 There's no TIP, no rationale, no ticket being referenced, nothing whatsoever. Just a breaking change. Now even extensions that are perfectly source-compatible with both 8 and 9 will need to be special-cased and produce a slightly different packaging list. Practical case: TDBC. TIP595 is just as bad: shared libraries built for 9 now have a tcl9 prefix. The rationale provided was that this would allow Tk 8.7 to be built against both 8.7 and 9.0, and installed alongside. But downstreams providing this option (I don't know any), will have to install those two builds in different directories already, becase of *all other files* clashing... as a malus, *all* extensions now have their .so files called libtcl9foo.so when built against 9 and libfoo.so when built against 8. For TIP595, I am guilty as charged of not having reacted when it was the time. -- Pietro Cerutti I have pledged to give 10% of income to effective charities and invite you to join me - https://givingwhatwecan.org |
|
From: Jan N. <jan...@gm...> - 2025-08-19 21:02:45
|
Op di 19 aug 2025, 21:55 schreef Pietro Cerutti via Tcl-Core <
tcl...@li...>:
> On Aug 11 2025, 11:09 +0000, Pietro Cerutti via Tcl-Core <
> tcl...@li...> wrote:
> >I have the feeling that the people doing the work (and thanks for
> >that!) are sometimes disconnected from the people who are supposed to
> >integrate and use the result of the work.
>
....
> Now even extensions that are
> perfectly source-compatible with both 8 and 9 will need to be
> special-cased and produce a slightly different packaging list.
>
I'm sorry you feel that way. But - indeed - every change however
well-intended means extra work for package integrators.
Regards,
Jan Nijtmans
>
|
|
From: <apn...@ya...> - 2025-08-21 06:09:07
|
Stu, That was very helpful for me to wrap my head around Unix installs. One item that was left out (question for both Stu and Pietro) was where do third party packages like tcllib, critcl etc. get installed? Note these packages may have Tcl script libraries, shared libraries as well as "applications" like critcl. Do they go into a common system directory or a Tcl version-specific location? /Ashok -----Original Message----- From: Stuart Cassoff via Tcl-Core <tcl...@li...> Sent: Tuesday, August 19, 2025 12:14 AM To: tcl...@li...; Pietro Cerutti <ga...@ga...> Subject: Re: [TCLCORE] Pain points as a distro maintainer Hi, On OpenBSD: My only real concern would be the Thread extension, which, if not made to work in 8 and 9, would have to be separate extension: tclthread and tcl9thread. Not great, not terrible. Right now, everything 8/9 is as integrated as possible but separated where necessary. Tcl/Tk 8.5 and 8.6 are installed under dir names "8.5" and "8.6". Tcl/Tk 9 will simply be "9". When 9.1 is released, it will replace 9.0. The paths and dirs for 9 will be similar, but I'll be keeping the older naming convention for libs and maybe other things, ie: libtk90.so instead of libtcl9tk90.so. These are the default auto_path and tm paths: $ tclsh8.6 % set auto_path /usr/local/lib/tcl/tcl8.6 /usr/local/lib/tcl % tcl::tm::path list /usr/local/lib/tcl/modules/85 /usr/local/lib/tcl/modules/86 /usr/local/lib/tcl/tcl8.6/modules Here's the packing list for 8.6: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/ PLIST?rev=1.17&content-type=text/plain Here's a snip of the most important bits of the package readme: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/ README?rev=1.8&content-type=text/plain Tclsh and Wish -------------- normally /usr/local/lib/tclsh, /usr/local/lib/wish now /usr/local/bin/tclsh8.6, /usr/local/bin/wish8.6 Library files ------------- scripts, encoding files, etc. normally in /usr/local/lib/tcl8.6, /usr/local/lib/tk8.6 now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Configuration Files ------------------- tclConfig.sh, tkConfig.sh normally in /usr/local/lib now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Header Files ------------ *.h normally in /usr/local/include now in /usr/local/include/tcl8.6, /usr/local/include/tk8.6 Manual Pages ------------ *.1, *.3, *.n normally in /usr/local/man now in /usr/local/lib/tcl/tcl8.6/man, /usr/local/lib/tcl/tk8.6/man Demos ----- *.tcl, * normally in /usr/local/lib/tk8.6/demos now in /usr/local/share/examples/tk8.6 Bundled Tcl Modules ------------------- *.tm normally in /usr/local/lib/tcl8/... now in /usr/local/lib/tcl/tcl8.6/modules Tcl Module Paths ---------------- normally /usr/local/lib/tcl8/... now /usr/local/lib/tcl/modules/{85,86} Manual Page Configuration ========================= Adding the following lines to /etc/man.conf wil enable man(1) and related commands can find the Tcl and Tk manual pages. manpath /usr/local/lib/tcl/tcl8.6/man manpath /usr/local/lib/tcl/tk8.6/man Stu _______________________________________________ Tcl-Core mailing list Tcl...@li... https://lists.sourceforge.net/lists/listinfo/tcl-core |
|
From: Stuart C. <exo...@ya...> - 2025-09-27 09:11:36
|
Extension home is /usr/local/lib/tcl. A Tcl-only extension "foo" will be installed in /usr/local/lib/tcl/foo. Preferentially, install Tcl-only extensions as Tcl Modules, if possible. A binary loadable-only extension "foo" (ex. dbus) will be installed in /usr/local/lib/tcl/foo. For a binary linkable-and-loadable extension "foo" (ex. tdbc), the pkgIndex.tcl will be installed in /usr/local/lib/tcl/foo, the .so in /usr/local/lib, and any .h files in /usr/local/include. Executables are installed in /usr/local/bin. Stu On Thursday, August 21, 2025 at 02:09:00 a.m. EDT, <apn...@ya...> wrote: Stu, That was very helpful for me to wrap my head around Unix installs. One item that was left out (question for both Stu and Pietro) was where do third party packages like tcllib, critcl etc. get installed? Note these packages may have Tcl script libraries, shared libraries as well as "applications" like critcl. Do they go into a common system directory or a Tcl version-specific location? /Ashok -----Original Message----- From: Stuart Cassoff via Tcl-Core <tcl...@li...> Sent: Tuesday, August 19, 2025 12:14 AM To: tcl...@li...; Pietro Cerutti <ga...@ga...> Subject: Re: [TCLCORE] Pain points as a distro maintainer Hi, On OpenBSD: My only real concern would be the Thread extension, which, if not made to work in 8 and 9, would have to be separate extension: tclthread and tcl9thread. Not great, not terrible. Right now, everything 8/9 is as integrated as possible but separated where necessary. Tcl/Tk 8.5 and 8.6 are installed under dir names "8.5" and "8.6". Tcl/Tk 9 will simply be "9". When 9.1 is released, it will replace 9.0. The paths and dirs for 9 will be similar, but I'll be keeping the older naming convention for libs and maybe other things, ie: libtk90.so instead of libtcl9tk90.so. These are the default auto_path and tm paths: $ tclsh8.6 % set auto_path /usr/local/lib/tcl/tcl8.6 /usr/local/lib/tcl % tcl::tm::path list /usr/local/lib/tcl/modules/85 /usr/local/lib/tcl/modules/86 /usr/local/lib/tcl/tcl8.6/modules Here's the packing list for 8.6: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/ PLIST?rev=1.17&content-type=text/plain Here's a snip of the most important bits of the package readme: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/ README?rev=1.8&content-type=text/plain Tclsh and Wish -------------- normally /usr/local/lib/tclsh, /usr/local/lib/wish now /usr/local/bin/tclsh8.6, /usr/local/bin/wish8.6 Library files ------------- scripts, encoding files, etc. normally in /usr/local/lib/tcl8.6, /usr/local/lib/tk8.6 now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Configuration Files ------------------- tclConfig.sh, tkConfig.sh normally in /usr/local/lib now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Header Files ------------ *.h normally in /usr/local/include now in /usr/local/include/tcl8.6, /usr/local/include/tk8.6 Manual Pages ------------ *.1, *.3, *.n normally in /usr/local/man now in /usr/local/lib/tcl/tcl8.6/man, /usr/local/lib/tcl/tk8.6/man Demos ----- *.tcl, * normally in /usr/local/lib/tk8.6/demos now in /usr/local/share/examples/tk8.6 Bundled Tcl Modules ------------------- *.tm normally in /usr/local/lib/tcl8/... now in /usr/local/lib/tcl/tcl8.6/modules Tcl Module Paths ---------------- normally /usr/local/lib/tcl8/... now /usr/local/lib/tcl/modules/{85,86} Manual Page Configuration ========================= Adding the following lines to /etc/man.conf wil enable man(1) and related commands can find the Tcl and Tk manual pages. manpath /usr/local/lib/tcl/tcl8.6/man manpath /usr/local/lib/tcl/tk8.6/man Stu _______________________________________________ Tcl-Core mailing list Tcl...@li... https://lists.sourceforge.net/lists/listinfo/tcl-core |
|
From: <apn...@ya...> - 2025-09-28 17:07:22
|
Stu, Does this mean you expect or plan for only one Tcl version to be installed on the system since the directories are not version-specific? Or that packages are expected to be built so as to be Tcl8 and 9 compatible, loading (in the case of binary extensions) the appropriate shared library (tclfoo.so vs tcl9foo.so)? /Ashok -----Original Message----- From: Stuart Cassoff <exo...@ya...> Sent: Saturday, September 27, 2025 2:09 PM To: tcl...@li...; 'Pietro Cerutti' <ga...@ga...>; apn...@ya... Subject: Re: [TCLCORE] Pain points as a distro maintainer Extension home is /usr/local/lib/tcl. A Tcl-only extension "foo" will be installed in /usr/local/lib/tcl/foo. Preferentially, install Tcl-only extensions as Tcl Modules, if possible. A binary loadable-only extension "foo" (ex. dbus) will be installed in /usr/local/lib/tcl/foo. For a binary linkable-and-loadable extension "foo" (ex. tdbc), the pkgIndex.tcl will be installed in /usr/local/lib/tcl/foo, the .so in /usr/local/lib, and any .h files in /usr/local/include. Executables are installed in /usr/local/bin. Stu On Thursday, August 21, 2025 at 02:09:00 a.m. EDT, <apn...@ya...> wrote: Stu, That was very helpful for me to wrap my head around Unix installs. One item that was left out (question for both Stu and Pietro) was where do third party packages like tcllib, critcl etc. get installed? Note these packages may have Tcl script libraries, shared libraries as well as "applications" like critcl. Do they go into a common system directory or a Tcl version-specific location? /Ashok -----Original Message----- From: Stuart Cassoff via Tcl-Core <tcl...@li...> Sent: Tuesday, August 19, 2025 12:14 AM To: tcl...@li...; Pietro Cerutti <ga...@ga...> Subject: Re: [TCLCORE] Pain points as a distro maintainer Hi, On OpenBSD: My only real concern would be the Thread extension, which, if not made to work in 8 and 9, would have to be separate extension: tclthread and tcl9thread. Not great, not terrible. Right now, everything 8/9 is as integrated as possible but separated where necessary. Tcl/Tk 8.5 and 8.6 are installed under dir names "8.5" and "8.6". Tcl/Tk 9 will simply be "9". When 9.1 is released, it will replace 9.0. The paths and dirs for 9 will be similar, but I'll be keeping the older naming convention for libs and maybe other things, ie: libtk90.so instead of libtcl9tk90.so. These are the default auto_path and tm paths: $ tclsh8.6 % set auto_path /usr/local/lib/tcl/tcl8.6 /usr/local/lib/tcl % tcl::tm::path list /usr/local/lib/tcl/modules/85 /usr/local/lib/tcl/modules/86 /usr/local/lib/tcl/tcl8.6/modules Here's the packing list for 8.6: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/ PLIST?rev=1.17&content-type=text/plain Here's a snip of the most important bits of the package readme: https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/tcl/8.6/pkg/ README?rev=1.8&content-type=text/plain Tclsh and Wish -------------- normally /usr/local/lib/tclsh, /usr/local/lib/wish now /usr/local/bin/tclsh8.6, /usr/local/bin/wish8.6 Library files ------------- scripts, encoding files, etc. normally in /usr/local/lib/tcl8.6, /usr/local/lib/tk8.6 now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Configuration Files ------------------- tclConfig.sh, tkConfig.sh normally in /usr/local/lib now in /usr/local/lib/tcl/tcl8.6, /usr/local/lib/tcl/tk8.6 Header Files ------------ *.h normally in /usr/local/include now in /usr/local/include/tcl8.6, /usr/local/include/tk8.6 Manual Pages ------------ *.1, *.3, *.n normally in /usr/local/man now in /usr/local/lib/tcl/tcl8.6/man, /usr/local/lib/tcl/tk8.6/man Demos ----- *.tcl, * normally in /usr/local/lib/tk8.6/demos now in /usr/local/share/examples/tk8.6 Bundled Tcl Modules ------------------- *.tm normally in /usr/local/lib/tcl8/... now in /usr/local/lib/tcl/tcl8.6/modules Tcl Module Paths ---------------- normally /usr/local/lib/tcl8/... now /usr/local/lib/tcl/modules/{85,86} Manual Page Configuration ========================= Adding the following lines to /etc/man.conf wil enable man(1) and related commands can find the Tcl and Tk manual pages. manpath /usr/local/lib/tcl/tcl8.6/man manpath /usr/local/lib/tcl/tk8.6/man Stu _______________________________________________ Tcl-Core mailing list Tcl...@li... https://lists.sourceforge.net/lists/listinfo/tcl-core |