GithubHelp home page GithubHelp logo

classicvalues / swift-installer-scripts Goto Github PK

View Code? Open in Web Editor NEW

This project forked from apple/swift-installer-scripts

1.0 1.0 0.0 164 KB

License: Apache License 2.0

C++ 59.60% Dockerfile 15.51% Shell 23.40% Assembly 1.48%

swift-installer-scripts's Introduction

Swift Installer Scripts

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.

Organization

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
            └ ...

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

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-<VERSION>-<RELEASE>.<DIST>.<ARCH>.rpm
Package structure: /repo/<OS>/releases/<OS_VERSION>/<ARCH>/
Repository configuration: /repo/<OS>/releases/<OS_VERSION>/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

Tasks

RPM Package Manager (RPM)*

  • 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.

Debian Package (Deb)*

  • 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

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
  • Should we support multiple swiftlang versions on the system?
  • Multiple packages:
    • swiftlang
    • swiftlang-runtime

Contributing

Before contributing, please read CONTRIBUTING.md.

LICENSE

See LICENSE for license information.

Code of Conduct

See Swift.org Code of Conduct for Code of Conduct information.

swift-installer-scripts's People

Contributors

shahmishal avatar compnerd avatar tomerd avatar tachoknight avatar classicvalues avatar futurejones avatar tkremenek avatar stevapple avatar mend-bolt-for-github[bot] avatar wowbaggersliquidlunch avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.