Skip to content

Commit 2ee9a55

Browse files
authored
Merge pull request #37 from apple/update-readme
Update the README with Linux package / installer info (RPM/DEB)
2 parents ac22dc0 + 314e83c commit 2ee9a55

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

README.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,104 @@ swift-installer-scripts
2525
└ ...
2626
~~~
2727

28+
## Linux Packages (RPM/Deb)
29+
30+
Currently Swift on Linux is distributed via tarball and Docker, and
31+
we would like to start supporting RPM and Debs officially on swift.org.
32+
The goal is to provide a seamless install process for Swift on Linux by
33+
utilizing the platform’s native package manager (RPM/Deb).
34+
35+
36+
* Step 1. Develop native packages / installers for the distributions
37+
* Step 2. Offer the native packages / installers through swift.org
38+
* Support all officially supported Linux platforms
39+
* Code signed by swift.org certificate
40+
* Repository hosted on swift.org
41+
* Step 3. Offer the native packages / installer through official repositories
42+
for the various platforms
43+
* Work with official repositories to accept package specs
44+
* Deprecate swift.org packages / installer repository
45+
* Step 4. Deprecate swift.org Linux tarballs
46+
47+
### Package Info
48+
* Package name: swiftlang
49+
* License: Apache 2.0
50+
* Maintainer: [email protected]
51+
* URL: https://swift.org
52+
* Description:
53+
```
54+
Swift is a general-purpose programming language built using
55+
a modern approach to safety, performance, and software design
56+
patterns.
57+
58+
The goal of the Swift project is to create the best available
59+
language for uses ranging from systems programming, to mobile
60+
and desktop apps, scaling up to cloud services. Most
61+
importantly, Swift is designed to make writing and maintaining
62+
correct programs easier for the developer.
63+
```
64+
65+
### RPM Naming Convention:
66+
67+
Package naming convention: `swiftlang-<VERSION>-<RELEASE>.<DIST>.<ARCH>.rpm`
68+
Pakcage structure: `/repo/<OS>/releases/<OS_VERSION>/<ARCH>/`
69+
Repository configuration: `/repo/<OS>/releases/<OS_VERSION>/swiftlang.repo`
70+
71+
72+
#### Example
73+
74+
**Package structure:**
75+
```
76+
/repo/centos/releases/8/x86_64/swiftlang-5.5.0-1.el8.x86_64.rpm
77+
/repo/centos/releases/8/aarch64/swiftlang-5.5.0-1.el8.aarch64.rpm
78+
```
79+
80+
**Package URL:**
81+
https://download.swift.org/repo/centos/releases/8/aarch64/swiftlang-5.5.0-1.el8.aarch64.rpm
82+
83+
**Repository configuration file URL:**
84+
https://download.swift.org/repo/centos/releases/8/swiftlang.repo
85+
86+
## Tasks
87+
88+
### RPM Package Manager (RPM)*
89+
90+
- [ ] [SR-15325](https://bugs.swift.org/browse/SR-15325) Create RPM spec file
91+
- [ ] [SR-15326](https://bugs.swift.org/browse/SR-15326) Setup CI job to build the rpm package
92+
- [ ] [SR-15327](https://bugs.swift.org/browse/SR-15327) Code sign rpm package with swift.org certificate
93+
- [ ] [SR-15328](https://bugs.swift.org/browse/SR-15328) Host the rpm package on swift.org
94+
- [ ] [SR-15329](https://bugs.swift.org/browse/SR-15329) Host the rpm repository on swift.org
95+
- [ ] [SR-15330](https://bugs.swift.org/browse/SR-15330) Verify the rpm package and repository
96+
- [ ] [SR-15331](https://bugs.swift.org/browse/SR-15331) Update swift.org download / install page
97+
- [ ] [SR-15332](https://bugs.swift.org/browse/SR-15332) Work with official repositories to accept package specs
98+
99+
*For each platform, we will start with CentOS 8.
100+
101+
### Debian Package (Deb)*
102+
103+
- [ ] [SR-15334](https://bugs.swift.org/browse/SR-15334) Create Debs control file
104+
- [ ] [SR-15335](https://bugs.swift.org/browse/SR-15335) Setup CI to build the deb package
105+
- [ ] [SR-15336](https://bugs.swift.org/browse/SR-15336) Code sign package with swift.org certificate
106+
- [ ] [SR-15337](https://bugs.swift.org/browse/SR-15337) Host the deb package on swift.org
107+
- [ ] [SR-15338](https://bugs.swift.org/browse/SR-15338) Host the deb repository on swift.org
108+
- [ ] [SR-15339](https://bugs.swift.org/browse/SR-15339) Verify the deb package and repository
109+
- [ ] [SR-15340](https://bugs.swift.org/browse/SR-15340) Update swift.org download / install page
110+
- [ ] [SR-15341](https://bugs.swift.org/browse/SR-15341) Work with official repositories to accept package control files
111+
112+
*For each platform, we will start with Ubuntu 20.04
113+
114+
## Open Questions
115+
116+
* Where should swiftlang be installed on the system?
117+
* Option 1: Diverge the install location between platform to best fit the platform requirements.
118+
* symlink the toolchain into /usr/ to avoid conflicting with llvm.org binaries.
119+
* Option 2: Install in /usr and rename llvm-project binaries (example: swift-lldb/lldb-swift ...)
120+
* [GitHub discussion](https://github.com/apple/swift-installer-scripts/pull/37#discussion_r726707320)
121+
* Should we support multiple swiftlang versions on the system?
122+
* Multiple packages:
123+
* swiftlang
124+
* swiftlang-runtime
125+
28126
## Contributing
29127

30128
Before contributing, please read [CONTRIBUTING.md](CONTRIBUTING.md).

0 commit comments

Comments
 (0)