Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1847,22 +1847,6 @@ jobs:
- matrix_notify_failure_unless_pr
- matrix_notify_release_unless_pr

b_alpine_docker:
<<: *base_cimg_small
steps:
- setup_remote_docker:
# Always build from scratch to use current packages.
# This job is only meant to run nightly so build time is not an issue.
docker_layer_caching: false
- checkout
- run:
name: Build and tag the container
command: scripts/docker_deploy_manual.sh develop "file://$PWD" --no-push
- run:
name: Smoke test
command: docker run --pull=never ethereum/solc:build-alpine --version
- matrix_notify_failure_unless_pr

workflows:
version: 2

Expand Down Expand Up @@ -2047,9 +2031,6 @@ workflows:
- b_ubu: *requires_nothing
- t_ubu_soltest_deprecated_evm_versions: *requires_b_ubu

# Build in a Docker container (on Alpine Linux)
- b_alpine_docker: *requires_nothing

nightly-ossfuzz:

triggers:
Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
/commit_hash.txt
/prerelease.txt

# Auth config for ppa release
/.release_ppa_auth

# Compiled Object files
*.slo
*.lo
Expand Down
2 changes: 2 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Bugfixes:
* Yul Optimizer: Fix edge case in which invalid Yul code is produced by ExpressionSimplifier due to expressions being substituted that contain out-of-scope variables.

Build System:
* Docker: Discontinue DockerHub as a binary distribution channel.
* Ubuntu PPA Packages: Discontinue the PPA as a binary distribution channel.
* Update minimum version requirements of Boost to 1.83.0 for non-windows builds and of GCC and Clang to 13.3 and 18.1.3, respectively. Fixes infinite recursion on `boost::rational` comparison affecting compiler binaries built with GCC<14.0 and Boost<1.75.

### 0.8.30 (2025-05-07)
Expand Down
24 changes: 0 additions & 24 deletions ReleaseChecklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@
### Requirements
- [ ] GitHub account with access to [solidity](https://github.com/argotorg/solidity), [solc-js](https://github.com/argotorg/solc-js),
[solc-bin](https://github.com/argotorg/solc-bin), [solidity-website](https://github.com/argotorg/solidity-website).
- [ ] DockerHub account with push rights to the [`solc` image](https://hub.docker.com/r/ethereum/solc).
- [ ] Launchpad (Ubuntu One) account with a membership in the ["Ethereum" team](https://launchpad.net/~ethereum) and
a gnupg key for your email in the `ethereum.org` domain (has to be version 1, gpg2 won't work).
- [ ] Ubuntu/Debian dependencies of the Docker script: `docker-buildx`.
- [ ] Ubuntu/Debian dependencies of the PPA scripts: `devscripts`, `debhelper`, `dput`, `git`, `wget`, `ca-certificates`.
- [ ] [npm Registry](https://www.npmjs.com) account added as a collaborator for the [`solc` package](https://www.npmjs.com/package/solc).
- [ ] Access to the [solidity_lang Twitter account](https://twitter.com/solidity_lang).
- [ ] [Reddit](https://www.reddit.com) account that is at least 10 days old with a minimum of 20 comment karma (`/r/ethereum` requirements).
Expand All @@ -22,8 +17,6 @@ At least a day before the release:
- [ ] Rerun CI on the top commits of main branches in all repositories that do not have daily activity by creating a test branch or PR:
- [ ] `solc-js`
- [ ] `solc-bin` (make sure the bytecode comparison check did run)
- [ ] (Optional) Create a prerelease in our Ubuntu PPA by following the steps in the PPA section below on `develop` rather than on a tag.
This is recommended especially when dealing with PPA for the first time, when we add a new Ubuntu version or when the PPA scripts were modified in this release cycle.
- [ ] Verify that the release tarball of `solc-js` works.
Bump version locally, add `soljson.js` from CI, build it, compare the file structure with the previous version, install it locally and try to use it.
- [ ] Review [Learning from Past Releases](https://notes.argot.org/@solidity-release-mistakes) to make sure you don't repeat the same mistakes.
Expand Down Expand Up @@ -79,23 +72,6 @@ At least a day before the release:
### Homebrew and MacOS
- [ ] Update the version and the hash (`sha256sum solidity_$VERSION.tar.gz`) in the [`solidity` formula in Homebrew core repository](https://github.com/Homebrew/homebrew-core/blob/master/Formula/s/solidity.rb).

### Docker
- [ ] Make sure `docker-buildx` is installed.
- [ ] Run `./scripts/docker_deploy_manual.sh v$VERSION`.

### PPA
- [ ] Create `.release_ppa_auth` at the root of your local Solidity checkout and set `LAUNCHPAD_EMAIL` and `LAUNCHPAD_KEYID` to your key's email and key id.
- [ ] Double-check that the `DISTRIBUTIONS` list in `scripts/release_ppa.sh` contains the most recent versions of Ubuntu.
- [ ] Run `scripts/release_ppa.sh v$VERSION` to create the PPA release.
This will create a single package containing static binary for older Ubuntu versions in the [`~ethereum/ethereum-static` PPA](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum-static)
and separate packages with dynamically-linked binaries for recent versions (those listed in `DISTRIBUTIONS`) in the [`~ethereum/ethereum` PPA](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum).
- [ ] Wait for the build to be finished and published for *all architectures* (currently we only build for `amd64`, but we may add `arm` in the future).
**SERIOUSLY: DO NOT PROCEED EARLIER!!!**
- [ ] *After* the package with the static build is *published*, use it to create packages for older Ubuntu versions.
Copy the static package to the [`~ethereum/ethereum` PPA](https://launchpad.net/~ethereum/+archive/ubuntu/ethereum)
for the destination series `Trusty`, `Xenial`, `Bionic`, and `Focal`
while selecting `Copy existing binaries`.

### Release solc-js
- [ ] Wait until solc-bin was properly deployed. You can test this via remix - a test run through remix is advisable anyway.
- [ ] Increment the version number, create a pull request for that, merge it after tests succeeded.
Expand Down
85 changes: 24 additions & 61 deletions docs/installing-solidity.rst
Original file line number Diff line number Diff line change
Expand Up @@ -72,79 +72,40 @@ Please refer to the solc-js repository for instructions.
Docker
======

Docker images of Solidity builds are available using the ``solc`` image from the ``ethereum`` organization.
Use the ``stable`` tag for the latest released version, and ``nightly`` for potentially unstable changes in the ``develop`` branch.
Docker images of Solidity builds up to version 0.8.30 are available on DockerHub as ``ethereum/solc``.
However, we have discontinued this distribution method and future versions will not be added there.

The Docker image runs the compiler executable so that you can pass all compiler arguments to it.
For example, the command below pulls the stable version of the ``solc`` image (if you do not have it already),
and runs it in a new container, passing the ``--help`` argument.

.. code-block:: bash

docker run ethereum/solc:stable --help

.. note::

Specific compiler versions are supported as the Docker image tag such as ``ethereum/solc:0.8.23``.
We will be passing the ``stable`` tag here instead of specific version tag to ensure that users get
the latest version by default and avoid the issue of an out-of-date version.

To use the Docker image to compile Solidity files on the host machine, mount a
local folder for input and output, and specify the contract to compile. For example:

.. code-block:: bash

docker run \
--volume "/tmp/some/local/path/:/sources/" \
ethereum/solc:stable \
/sources/Contract.sol \
--abi \
--bin \
--output-dir /sources/output/

You can also use the standard JSON interface (which is recommended when using the compiler with tooling).
When using this interface, it is not necessary to mount any directories as long as the JSON input is
self-contained (i.e. it does not refer to any external files that would have to be
:ref:`loaded by the import callback <initial-vfs-content-standard-json-with-import-callback>`).

.. code-block:: bash

docker run ethereum/solc:stable --standard-json < input.json > output.json
The images contain only a statically-linked compiler binary and were provided merely for convenience,
as a way to download and manage multiple versions using Docker.
On systems with Docker already installed this made it possible to use any version of the
compiler with a simple ``docker run ethereum/solc:<version>`` command.

Linux Packages
==============

Binary packages of Solidity are available at
`solidity/releases <https://github.com/argotorg/solidity/releases>`_.

We also have PPAs for Ubuntu, you can get the latest stable
version using the following commands:
We provide :ref:`standalone binaries <static-binaries>` of the compiler that should run on most
distributions without any additional installation steps.

.. code-block:: bash

sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
Some Linux distributions provide their own packages.
These packages are not directly maintained by us but usually kept up-to-date by the respective
package maintainers.

The nightly version can be installed using these commands:
Ubuntu packages for versions up to 0.8.30 are available in the
`ethereum/ethereum PPA <https://launchpad.net/~ethereum/+archive/ubuntu/ethereum>`_.
However, we have discontinued this distribution method and future versions will not be added there.

.. code-block:: bash

sudo add-apt-repository ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install solc

Furthermore, some Linux distributions provide their own packages. These packages are not directly
maintained by us but usually kept up-to-date by the respective package maintainers.

For example, Arch Linux has packages for the latest development version as AUR packages: `solidity <https://aur.archlinux.org/packages/solidity>`_
and `solidity-bin <https://aur.archlinux.org/packages/solidity-bin>`_.
Arch Linux provides a script for building and installing the latest release version in its AUR
repository: `solidity <https://aur.archlinux.org/packages/solidity>`_.
Alternatively, one can also install official binaries using the
`solidity-bin <https://aur.archlinux.org/packages/solidity-bin>`_ script.

.. note::

Please be aware that `AUR <https://wiki.archlinux.org/title/Arch_User_Repository>`_ packages
are user-produced content and unofficial packages. Exercise caution when using them.
are produced and maintained by users and not vetted in any way by the distro maintainers.
Exercise caution when using them.

On Nix, unofficial builds are available via `solc.nix <https://github.com/hellwolf/solc.nix>`_.

There is also a `snap package <https://snapcraft.io/solc>`_, however, it is **currently unmaintained**.
It is installable in all the `supported Linux distros <https://snapcraft.io/docs/core/install>`_. To
Expand Down Expand Up @@ -207,6 +168,8 @@ Install it using ``brew``:
# eg. Install 0.4.8
brew install solidity.rb

.. _static-binaries:

Static Binaries
===============

Expand Down
38 changes: 0 additions & 38 deletions scripts/Dockerfile

This file was deleted.

5 changes: 0 additions & 5 deletions scripts/Dockerfile_alpine

This file was deleted.

22 changes: 0 additions & 22 deletions scripts/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,28 +40,6 @@ else
function printLog { echo -e "$(tput setaf 3)$1$(tput sgr0)"; }
fi

function checkDputEntries
{
local pattern="$1"
grep "${pattern}" /etc/dput.cf --quiet || \
fail "Error: Missing ${pattern//\\/} section in /etc/dput.cf (check top comment in release_ppa.sh for more information)."
}

function sourcePPAConfig
{
[[ "$LAUNCHPAD_KEYID" == "" && "$LAUNCHPAD_EMAIL" == "" ]] || fail

# source keyid and email from .release_ppa_auth
if [[ -e .release_ppa_auth ]]
then
# shellcheck source=/dev/null
source "${REPO_ROOT}/.release_ppa_auth"
fi

[[ "$LAUNCHPAD_KEYID" != "" && "$LAUNCHPAD_EMAIL" != "" ]] || \
fail "Error: Couldn't find variables \$LAUNCHPAD_KEYID or \$LAUNCHPAD_EMAIL in sourced file .release_ppa_auth (check top comment in $0 for more information)."
}

function printStackTrace
{
printWarning ""
Expand Down
74 changes: 0 additions & 74 deletions scripts/docker_deploy_manual.sh

This file was deleted.

Loading