This repository contains all the supporting files required for building toolchain packages for the Swift toolchain for distribution.
This repository does not contain the actual contents of the toolchain. These files are used to construct the packaged forms of the toolchain to layout the toolchain properly on the destination system.
Because the repository hosts the packaging support content for multiple platforms, the following structure allows all the platforms to colocate in the same repository without colliding with each other:
swift-installer-scripts
└ platforms
├ Linux
│ ├ README
│ ├ DEB
│ │ ├ README
│ │ ├ Docs - contains information specific to .deb packages
│ │ ├ Debian - contains information specific to the distribution
│ │ │ ├ buster - contains information specific to the version
│ │ │ ├ bullseye
│ │ │ └ ...
│ │ ├ Ubuntu
│ │ │ ├ bionic
│ │ │ ├ focal
│ │ │ ├ hirsute
│ │ │ └ ...
│ │ └ ...
│ │
│ ├ RPM
│ │ ├ README
│ │ ├ Docs - contains information specific to .rpm packages
│ │ ├ Amazonlinux
│ │ │ ├ 2
│ │ │ └ ...
│ │ ├ Centos
│ │ │ ├ 7
│ │ │ ├ 8
│ │ │ └ ...
│ │ ├ Fedora
│ │ │ ├ 33
│ │ │ ├ 34
│ │ │ ├ rawhide
│ │ │ └ ...
│ │ └ ...
│ └ ...
└ Windows
└ ...
Currently Swift on Linux is distributed via tarball and Docker, and we would like to start supporting RPM and Debs officially on swift.org. The goal is to provide a seamless install process for Swift on Linux by utilizing the platform’s native package manager (RPM/Deb).
- Step 1. Develop native packages / installers for the distributions
- Step 2. Offer the native packages / installers through swift.org
- Support all officially supported Linux platforms
- Code signed by swift.org certificate
- Repository hosted on swift.org
- Step 3. Offer the native packages / installer through official repositories
for the various platforms
- Work with official repositories to accept package specs
- Deprecate swift.org packages / installer repository
- Step 4. Deprecate swift.org Linux tarballs
- Package name: swiftlang
- License: Apache 2.0
- Maintainer: [email protected]
- URL: https://swift.org
- Description:
Swift is a general-purpose programming language built using
a modern approach to safety, performance, and software design
patterns.
The goal of the Swift project is to create the best available
language for uses ranging from systems programming, to mobile
and desktop apps, scaling up to cloud services. Most
importantly, Swift is designed to make writing and maintaining
correct programs easier for the developer.
Package naming convention: swiftlang-<VERSION>-<RELEASE>.<DIST>.<ARCH>.rpm
Package structure: /repo/<OS>/releases/<OS_VERSION>/<ARCH>/
Repository configuration: /repo/<OS>/releases/<OS_VERSION>/swiftlang.repo
- Package structure:
/repo/centos/releases/8/x86_64/swiftlang-5.5.0-1.el8.x86_64.rpm
/repo/centos/releases/8/aarch64/swiftlang-5.5.0-1.el8.aarch64.rpm
-
Package URL:
https://download.swift.org/repo/centos/releases/8/aarch64/swiftlang-5.5.0-1.el8.aarch64.rpm -
Repository configuration file URL:
https://download.swift.org/repo/centos/releases/8/swiftlang.repo
- SR-15325 Create RPM spec file
- SR-15326 Setup CI job to build the rpm package
- SR-15327 Code sign rpm package with swift.org certificate
- SR-15328 Host the rpm package on swift.org
- SR-15329 Host the rpm repository on swift.org
- SR-15330 Verify the rpm package and repository
- SR-15331 Update swift.org download / install page
- SR-15332 Work with official repositories to accept package specs
*For each platform, we will start with CentOS 8.
- SR-15334 Create Debs control file
- SR-15335 Setup CI to build the deb package
- SR-15336 Code sign package with swift.org certificate
- SR-15337 Host the deb package on swift.org
- SR-15338 Host the deb repository on swift.org
- SR-15339 Verify the deb package and repository
- SR-15340 Update swift.org download / install page
- SR-15341 Work with official repositories to accept package control files
*For each platform, we will start with Ubuntu 20.04
- Where should swiftlang be installed on the system?
- Option 1: Diverge the install location between platform to best fit the platform requirements.
- symlink the toolchain into /usr/ to avoid conflicting with llvm.org binaries.
- Option 2: Install in /usr and rename llvm-project binaries (example: swift-lldb/lldb-swift ...)
- GitHub discussion
- Option 1: Diverge the install location between platform to best fit the platform requirements.
- Should we support multiple swiftlang versions on the system?
- Multiple packages:
- swiftlang
- swiftlang-runtime
Before contributing, please read our main guide
See LICENSE for license information.
See Swift.org Code of Conduct for Code of Conduct information.