diff --git a/README.md b/README.md index 1f50cce8..2b2435ab 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,104 @@ swift-installer-scripts └ ... ~~~ +## Linux Packages (RPM/Deb) + +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 Info +* Package name: swiftlang +* License: Apache 2.0 +* Maintainer: swift-infrastructure@forums.swift.org +* 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. +``` + +### RPM Naming Convention: + +Package naming convention: `swiftlang--...rpm` +Pakcage structure: `/repo//releases///` +Repository configuration: `/repo//releases//swiftlang.repo` + + +#### Example + +**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 + +## Tasks + +### RPM Package Manager (RPM)* + +- [ ] [SR-15325](https://bugs.swift.org/browse/SR-15325) Create RPM spec file +- [ ] [SR-15326](https://bugs.swift.org/browse/SR-15326) Setup CI job to build the rpm package +- [ ] [SR-15327](https://bugs.swift.org/browse/SR-15327) Code sign rpm package with swift.org certificate +- [ ] [SR-15328](https://bugs.swift.org/browse/SR-15328) Host the rpm package on swift.org +- [ ] [SR-15329](https://bugs.swift.org/browse/SR-15329) Host the rpm repository on swift.org +- [ ] [SR-15330](https://bugs.swift.org/browse/SR-15330) Verify the rpm package and repository +- [ ] [SR-15331](https://bugs.swift.org/browse/SR-15331) Update swift.org download / install page +- [ ] [SR-15332](https://bugs.swift.org/browse/SR-15332) Work with official repositories to accept package specs + +*For each platform, we will start with CentOS 8. + +### Debian Package (Deb)* + +- [ ] [SR-15334](https://bugs.swift.org/browse/SR-15334) Create Debs control file +- [ ] [SR-15335](https://bugs.swift.org/browse/SR-15335) Setup CI to build the deb package +- [ ] [SR-15336](https://bugs.swift.org/browse/SR-15336) Code sign package with swift.org certificate +- [ ] [SR-15337](https://bugs.swift.org/browse/SR-15337) Host the deb package on swift.org +- [ ] [SR-15338](https://bugs.swift.org/browse/SR-15338) Host the deb repository on swift.org +- [ ] [SR-15339](https://bugs.swift.org/browse/SR-15339) Verify the deb package and repository +- [ ] [SR-15340](https://bugs.swift.org/browse/SR-15340) Update swift.org download / install page +- [ ] [SR-15341](https://bugs.swift.org/browse/SR-15341) Work with official repositories to accept package control files + +*For each platform, we will start with Ubuntu 20.04 + +## Open Questions + +* 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](https://github.com/apple/swift-installer-scripts/pull/37#discussion_r726707320) +* Should we support multiple swiftlang versions on the system? +* Multiple packages: + * swiftlang + * swiftlang-runtime + ## Contributing Before contributing, please read [CONTRIBUTING.md](CONTRIBUTING.md).