-
-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Never use the "generic gnu" ponyc package #245
Conversation
Hi @SeanTAllen, The changelog - changed label was added to this pull request; all PRs with a changelog label need to have release notes included as part of the PR. If you haven't added release notes already, please do. Release notes are added by creating a uniquely named file in the The basic format of the release notes (using markdown) should be:
Thanks. |
58ce1dd
to
9db650e
Compare
9db650e
to
9997328
Compare
The "generic gnu" package is not actually generic. It is a glibc version that is built on "some glibc using Linux" and will work if it is installed on a Linux that is compatible at a library level with the system that we built the "generic gnu" package on. Quite some time ago, Theo and I (who made the initial decision to include a "generic gnu") realized that the "generic gnu" idea was "a very bad idea". There are a couple large problems with this approach: 1- anyone using ponyup on glibc distro that isn't compatible with our "generic gnu" platform will by default have things installed that will not work. That's a bad user experience. 2- in order to not fall horribly behind, from time to time, we need to "rev" the environment used to build "generic gnu" in. For us that has meant changing the Ubuntu version periodically. That then means that people who had an environment that worked will do an update and install a ponyc that doesn't work because it is for a different set of libraries. That's a bad user experience as well. This PR drops "generic gnu" from being used by the ponyup installer and it avoids it being set as a target platform. Instead when the installer detects that it is being run on a glibc based Linux, it will attempt to identify the distro being used and if we support it, it will use the builds we do for that distro. In the case of "distros built on distros" like Linux Mint being built on Ubuntu, it will set the platform to the builds for the appropriate "base distro". If we are unable to determine the distro or the distro isn't supported, an error message is displayed that directs them to the Linux install instructions in the ponyc repo. I will be doing a corresponding PR to ponyc to update the Linux section of INSTALL.md to account for the changes from this PR. Additionally, once this is merged, we can stop building the "generic gnu" package which I will also open a PR for.
f188fd5
to
a70f99e
Compare
The "x86-64-unknown-linux-gnu" package was intended to be "generic", however, it is not actually generic. It is a glibc version that is built on "some glibc using Linux" and will work if it is installed on a Linux that is compatible at a library level withthe system that we built the package on. Quite some time ago, Theo and I (who made the initial decision to include a "x86-64-unknown-linux-gnu" package) realized that the "x86-64-unknown-linux-gnu" package idea was "a very bad idea". There are a couple large problems with this approach: 1- anyone using the pacakge on glibc distro that isn't library compatible with our "x86-64-unknown-linux-gnu" build will have the installed ponyc fail in interesting and confounding ways. That's a bad user experience. 2- in order to not fall horribly behind, from time to time, we need to "rev" the environment used to build our "x86-64-unknown-linux-gnu" packages. For us that has meant changing the Ubuntu version periodically. That then means that people who had an environment that worked will do an update and install a ponyc that doesn't work because it is for a different set of libraries. That's a bad user experience as well. This PR drops "x86-64-unknown-linux-gnu" from being built and mirrors a change in ponyup that dropped support for using the package via ponyup. See ponylang/ponyup#245 for more information about the ponyup change.
The "x86-64-unknown-linux-gnu" package was intended to be "generic", however, it is not actually generic. It is a glibc version that is built on "some glibc using Linux" and will work if it is installed on a Linux that is compatible at a library level withthe system that we built the package on. Quite some time ago, Theo and I (who made the initial decision to include a "x86-64-unknown-linux-gnu" package) realized that the "x86-64-unknown-linux-gnu" package idea was "a very bad idea". There are a couple large problems with this approach: 1- anyone using the pacakge on glibc distro that isn't library compatible with our "x86-64-unknown-linux-gnu" build will have the installed ponyc fail in interesting and confounding ways. That's a bad user experience. 2- in order to not fall horribly behind, from time to time, we need to "rev" the environment used to build our "x86-64-unknown-linux-gnu" packages. For us that has meant changing the Ubuntu version periodically. That then means that people who had an environment that worked will do an update and install a ponyc that doesn't work because it is for a different set of libraries. That's a bad user experience as well. This PR drops "x86-64-unknown-linux-gnu" from being built and mirrors a change in ponyup that dropped support for using the package via ponyup. See ponylang/ponyup#245 for more information about the ponyup change.
The "x86-64-unknown-linux-gnu" package was intended to be "generic", however, it is not actually generic. It is a glibc version that is built on "some glibc using Linux" and will work if it is installed on a Linux that is compatible at a library level with the system that we built the package on. Quite some time ago, Theo and I (who made the initial decision to include a "x86-64-unknown-linux-gnu" package) realized that the "x86-64-unknown-linux-gnu" package idea was "a very bad idea". There are a couple large problems with this approach: 1- anyone using the package on glibc distro that isn't library compatible with our "x86-64-unknown-linux-gnu" build will have the installed ponyc fail in interesting and confounding ways. That's a bad user experience. 2- in order to not fall horribly behind, from time to time, we need to "rev" the environment used to build our "x86-64-unknown-linux-gnu" packages. For us that has meant changing the Ubuntu version periodically. That then means that people who had an environment that worked will do an update and install a ponyc that doesn't work because it is for a different set of libraries. That's a bad user experience as well. This PR drops "x86-64-unknown-linux-gnu" from being built and mirrors a change in ponyup that dropped support for using the package via ponyup. See ponylang/ponyup#245 for more information about the ponyup change.
The "generic gnu" package is not actually generic. It is a glibc version that is built on "some glibc using Linux" and will work if it is installed on a Linux that is compatible at a library level with the system that we built the "generic gnu" package on.
Quite some time ago, Theo and I (who made the initial decision to include a "generic gnu") realized that the "generic gnu" idea was "a very bad idea".
There are a couple large problems with this approach:
1- anyone using ponyup on glibc distro that isn't compatible with our "generic gnu" platform will by default have things installed that will not work. That's a bad user experience.
2- in order to not fall horribly behind, from time to time, we need to "rev" the environment used to build "generic gnu" in. For us that has meant changing the Ubuntu version periodically. That then means that people who had an environment that worked will do an update and install a ponyc that doesn't work because it is for a different set of libraries. That's a bad user experience as well.
This PR drops "generic gnu" from being used by the ponyup installer and it avoids it being set as a target platform. Instead when the installer detects that it is being run on a glibc based Linux, it will attempt to identify the distro being used and if we support it, it will use the builds we do for that distro. In the case of "distros built on distros" like Linux Mint being built on Ubuntu, it will set the platform to the builds for the appropriate "base distro". If we are unable to determine the distro or the distro isn't supported, an error message is displayed that directs them to the Linux install instructions in the ponyc repo.
I will be doing a corresponding PR to ponyc to update the Linux section of INSTALL.md to account for the changes from this PR. Additionally, once this is merged, we can stop building the "generic gnu" package which I will also open a PR for.