@@ -25,6 +25,104 @@ swift-installer-scripts
25
25
└ ...
26
26
~~~
27
27
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
+
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
+
28
126
## Contributing
29
127
30
128
Before contributing, please read [ CONTRIBUTING.md] ( CONTRIBUTING.md ) .
0 commit comments