Skip to content
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

Merged
merged 7 commits into from
Jan 20, 2023
Merged

Conversation

SeanTAllen
Copy link
Member

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.

@SeanTAllen SeanTAllen requested a review from a team January 20, 2023 19:25
@SeanTAllen SeanTAllen added the changelog - changed Automatically add "Changed" CHANGELOG entry on merge label Jan 20, 2023
@ponylang-main ponylang-main added the discuss during sync Should be discussed during an upcoming sync label Jan 20, 2023
@ponylang-main
Copy link
Contributor

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 .release-notes directory. We suggest you call the file 245.md to match the number of this pull request.

The basic format of the release notes (using markdown) should be:

## Title

End user description of changes, why it's important,
problems it solves etc.

If a breaking change, make sure to include 1 or more
examples what code would look like prior to this change
and how to update it to work after this change.

Thanks.

@SeanTAllen SeanTAllen changed the title Never use the "generic gnu" package Never use the "generic gnu" ponyc package Jan 20, 2023
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.
@SeanTAllen SeanTAllen merged commit 1513ee3 into main Jan 20, 2023
@SeanTAllen SeanTAllen deleted the no-more-generic-gnu branch January 20, 2023 21:39
github-actions bot pushed a commit that referenced this pull request Jan 20, 2023
@ponylang-main ponylang-main removed the discuss during sync Should be discussed during an upcoming sync label Jan 20, 2023
github-actions bot pushed a commit that referenced this pull request Jan 20, 2023
SeanTAllen added a commit to ponylang/ponyc that referenced this pull request Jan 20, 2023
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.
SeanTAllen added a commit to ponylang/ponyc that referenced this pull request Jan 20, 2023
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.
SeanTAllen added a commit to ponylang/ponyc that referenced this pull request Jan 24, 2023
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
changelog - changed Automatically add "Changed" CHANGELOG entry on merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants