├── .github └── ISSUE_TEMPLATE │ ├── bug-template.md │ ├── help-template.md │ └── suggestion-template.md ├── .gitignore ├── .icons ├── pngs │ ├── sailfishos-chum_108.png │ ├── sailfishos-chum_128.png │ ├── sailfishos-chum_172.png │ ├── sailfishos-chum_256.png │ ├── sailfishos-chum_480.png │ ├── sailfishos-chum_560.png │ ├── sailfishos-chum_86.png │ └── social-media │ │ ├── sailfishos-chum_1280x640.png │ │ ├── sailfishos-chum_1500x500.png │ │ ├── sailfishos-chum_792x792.png │ │ └── sailfishos-chum_960x640.png ├── sailfishos-chum.svg ├── sailfishos-chum_combined.svg └── sailfishos-chum_combined_cleaned.svg ├── GettingStarted.md ├── LICENSE ├── Maintainer.md ├── Metadata.md ├── README.md └── Retiring_Packages.md /.github/ISSUE_TEMPLATE/bug-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Report a bug for the SailfishOS:Chum community repository 4 | title: "[Bug] " 5 | labels: 'bug' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **SailfishOS VERSION** (Settings → About product → Build): 11 |
**HARDWARE** (Settings → About product → Manufacturer & Product name): 12 |
13 | 14 | #### BUG DESCRIPTION 15 | 16 | 17 | #### STEPS TO REPRODUCE 18 | 19 | 20 | #### ADDITIONAL INFORMATION 21 | 22 | \[Please consider which other pieces of information may be relevant: Denote if this is not always reproducible, if this is a regression (then name to which older version), attach relevant data such as log files or the systemd journal, provide screenshots etc.\] 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/help-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Help form 3 | about: Questions about SailfishOS:Chum community repository 4 | title: "[Help] " 5 | labels: 'question' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **SailfishOS VERSION** (Settings → About product → Build): 11 |
**HARDWARE** (Settings → About product → Manufacturer & Product name): 12 |
13 | 14 | #### QUESTION 15 | 16 | 17 | #### STEPS TO REPRODUCE 18 | 19 | 20 | #### ADDITIONAL INFORMATION 21 | 22 | \[Please consider which other pieces of information may be relevant: Denote if this is not always reproducible, if this is a regression (then name to which older version), attach relevant data such as log files or the systemd journal, provide screenshots etc.\] 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/suggestion-template.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for SailfishOS:Chum community repository 4 | title: "[Suggestion] " 5 | labels: 'enhancement' 6 | assignees: '' 7 | 8 | --- 9 | 10 | #### DESCRIPTION 11 | 12 | 13 | #### ADDITIONAL INFORMATION 14 | 15 | \[Please consider which other pieces of information may be relevant: Attach relevant data, provide screenshots etc.\] 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_108.png -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_128.png -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_172.png -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_256.png -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_480.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_480.png -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_560.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_560.png -------------------------------------------------------------------------------- /.icons/pngs/sailfishos-chum_86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/sailfishos-chum_86.png -------------------------------------------------------------------------------- /.icons/pngs/social-media/sailfishos-chum_1280x640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/social-media/sailfishos-chum_1280x640.png -------------------------------------------------------------------------------- /.icons/pngs/social-media/sailfishos-chum_1500x500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/social-media/sailfishos-chum_1500x500.png -------------------------------------------------------------------------------- /.icons/pngs/social-media/sailfishos-chum_792x792.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/social-media/sailfishos-chum_792x792.png -------------------------------------------------------------------------------- /.icons/pngs/social-media/sailfishos-chum_960x640.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sailfishos-chum/main/6442c18b6c626c40b291d866ab5f950d73148ee3/.icons/pngs/social-media/sailfishos-chum_960x640.png -------------------------------------------------------------------------------- /.icons/sailfishos-chum.svg: -------------------------------------------------------------------------------- 1 | 2 | 22 | SailfishOS:Chum all-in-one Texts 24 | 26 | 27 | 29 | image/svg+xml 30 | 32 | SailfishOS:Chum all-in-one Texts 33 | 35 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 51 | 52 | 53 | 55 | 58 | 62 | 66 | 67 | 77 | 88 | 89 | 109 | 112 | 113 | 117 | 128 | 139 | 146 | 153 | 158 | 159 | 163 | 166 | 172 | 178 | 184 | 190 | 191 | 197 | 198 | 204 | 210 | 216 | 222 | 228 | 229 | 230 | -------------------------------------------------------------------------------- /.icons/sailfishos-chum_combined.svg: -------------------------------------------------------------------------------- 1 | 2 | 22 | SailfishOS:Chum all-in-one Texts 24 | 26 | 27 | 29 | image/svg+xml 30 | 32 | SailfishOS:Chum all-in-one Texts 33 | 35 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 51 | 52 | 53 | 55 | 58 | 62 | 66 | 67 | 77 | 88 | 89 | 109 | 112 | 113 | 117 | 128 | 139 | 146 | 153 | 158 | 159 | 163 | 166 | 172 | 178 | 184 | 190 | 191 | 197 | 198 | 204 | 210 | 216 | 222 | 228 | 234 | 240 | 246 | 247 | 273 | 279 | 285 | 291 | 297 | 303 | 304 | 309 | Chum 320 | Chum 332 | Chum 343 | Chum 354 | Chum 366 | Chum 377 | Chum 388 | Chum 400 | Chum 412 | 413 | 414 | -------------------------------------------------------------------------------- /.icons/sailfishos-chum_combined_cleaned.svg: -------------------------------------------------------------------------------- 1 | 2 | 22 | SailfishOS:Chum all-in-one Texts 24 | 26 | 27 | 29 | image/svg+xml 30 | 32 | SailfishOS:Chum all-in-one Texts 33 | 35 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 51 | 52 | 53 | 55 | 58 | 62 | 66 | 67 | 77 | 88 | 89 | 109 | 112 | 113 | 117 | 128 | 139 | 146 | 153 | 158 | 159 | 163 | 166 | 172 | 178 | 184 | 190 | 191 | 197 | 198 | 204 | 210 | 216 | 222 | 228 | 234 | 240 | 246 | 247 | 253 | 259 | 265 | 271 | 277 | 278 | 279 | -------------------------------------------------------------------------------- /GettingStarted.md: -------------------------------------------------------------------------------- 1 | # SailfishOS:Chum - Getting Started with OBS 2 | 3 | This document summarises the process of building your first package on the Sailfish OS OBS. 4 | It only skims the surface of OBS and is not a manual. 5 | 6 | To start building your packages on OBS you will require an account. 7 | If you are not using the Sailfish OS OBS yet, you shall obtain an account there by following the instructions at [the Sailfish OS OBS front page](https://build.sailfishos.org/). 8 | 9 | When your account is set up, you will have a "Home Project". 10 | This is where you can start creating packages. 11 | The URL for your home project will be:
12 | https://build.sailfishos.org/project/show/home: 13 | 14 | ## Creating a package on OBS 15 | 16 | OBS projects contain packages which are built against target repositories 17 | (i.e. Sailfish OS versions, not source / git repositories). 18 | 19 | ### Prerequisites 20 | 21 | To build on OBS, the source repository must contain a spec file for building the RPM. 22 | This will generally be the case for projects created using the Sailfish SDK. 23 | The name of the spec file must match the package name and it must be located in the `rpm` top level directory at the source repository. 24 | 25 | ### Creating a Package 26 | 27 | To create your first package, perform the following steps: 28 | 29 | 1. Click on "Create Package". 30 | 2. On the new package page, give the package a name and click "Save Changes". 31 | 3. You now need to add files to the package to allow OBS to get the source and build it. 32 | Create a file on your computer called `_service` with the following content: 33 | ``` 34 | 35 | 36 | URL TO PROJECT 37 | master 38 | 39 | 40 | 41 | ``` 42 | Specify at least the URL. If you want to build another branch, change the 43 | branch name, and if you want to build a particular revision, specify a git hash 44 | or git tag in the revision field. 45 | 4. Back on OBS, click "Add File" then "Browse" and select the `_service` file you 46 | just created and click on "Save Changes". 47 | 5. If all goes well, OBS will fetch the source code. 48 | 49 | ## Adding target repositories 50 | 51 | Back at the home project on OBS, you will require target repositories to build against. 52 | These can be added using a UI, but it is easier to add them manually. 53 | 54 | 1. Click "Advanced" and "Meta". 55 | Note, do not confuse this with the package Meta configuration, even though the names are the same. 56 | 2. You will be presented with an XML description of the target repositories. 57 | Between the ` ` XML tags, add the following: 58 | ``` 59 | 60 | 61 | i586 62 | 63 | 64 | 65 | armv8el 66 | 67 | 68 | 69 | aarch64 70 | 71 | 72 | 73 | armv8el 74 | 75 | 76 | 77 | aarch64 78 | 79 | 80 | 81 | i586 82 | 83 | ``` 84 | This will create build targets for the 4.1.0 and the "latest" Sailfish OS release versions 85 | for all three supported architectures. 86 | 3. Click "Save Changes", navigate back to the project overview, and you should see 87 | the build status for each target on the right hand side. 88 | 4. You can click on the package name, and then click on the build target status to 89 | see the current build log. 90 | 91 | ## Submitting your package to SailfishOS:Chum:Testing 92 | 93 | Once your builds are working fine, you can submit it for inclusion to the `sailfishos:chum:testing` OBS repository. 94 | 95 | 1. Navigate to the package, and click "Submit Package". 96 | 2. Enter the target project as `sailfishos:chum:testing`. 97 | 3. Click on "Ok". 98 | 99 | For packages submitted to SailfishOS:Chum, please specify a particular git revision to be built 100 | (hash or tag) and do not use webhooks, so that packages in SailfishOS:Chum are not automatically updated. 101 | For this reason, you may want to set up your home project with builds from your master 102 | branch for personal use, but a specific revision to be submitted to SailfishOS:Chum. 103 | 104 | Please ensure that the license specified in the spec file matches that of the source repository 105 | and that it follows one of the formats at https://github.com/sailfishos/rpmlint/blob/master/rpm/sailfish.toml#L151-L458 106 | 107 | ## Other useful notes 108 | 109 | * You can create sub-projects in your home project to group builds together. 110 | * You can add a repository to your device using `ssu ar` in order to install your built packages 111 | on your device. 112 | * To re-trigger OBS to download the latest code, click "Trigger services" at the package overview. 113 | * You can configure OBS to not build certain packages against certain repositories, or disable 114 | certain projects from being published. It is very flexible. This is available from the "Repositories" 115 | tab. 116 | * OBS will resolve dependencies when building a package, if dependency packages are available in 117 | either the current project or the build target. 118 | If you want to build a package in your home project against other packages, which are only available 119 | in SailfishOS:Chum (or another repository), then these can be added to the repository configuration 120 | with code as follows in the project "Meta" configuration: 121 | ``` 122 | 123 | 124 | 125 | armv8el 126 | 127 | ``` 128 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 sailfishos-chum 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Maintainer.md: -------------------------------------------------------------------------------- 1 | ## Maintainer's tasks on package submission to SailfishOS:Chum 2 | 3 | On initial submission of a package by a package maintainer ("submitter" hereafter), a SailfishOS:Chum 4 | maintainer is tasked to check that … 5 | 6 | - the `_service` file contains a specific git tag or commit ID (hash). 7 | Alternative is source submission via compressed archive. 8 | 9 | - the `_service` file does not contain a webhook. 10 | 11 | - the license in rpm spec file is [approved by OSI](https://opensource.org/licenses) and 12 | matches the software license in the source code repository or the submitted archive. 13 | 14 | - the license tag in rpm spec file is one of 15 | [github.com/sailfishos/rpmlint/blob/master/rpm/sailfish.toml#L150-L459](https://github.com/sailfishos/rpmlint/blob/master/rpm/sailfish.toml#L150-L459). 16 | 17 | - no binary blobs, such as precompiled libraries, applications or other executable files, are part of the package submission. 18 | Bundled databases or similar are allowed. 19 | 20 | - the package does not conflict with (e.g. replace) any package from Jolla's repositories for Sailfish OS. 21 | 22 | After these checks have been successful, … 23 | 24 | - accept the submission of the package to `sailfishos:chum:testing`. 25 | 26 | - employ the submitter as a maintainer for the package in `sailfishos:chum:testing`. 27 | 28 | - if building the package fails for some versions of SFOS, decide together with the submitter 29 | whether to disable those build targets or to adjust the package. 30 | 31 | - with all compilation issues resolved, promote the package from `sailfishos:chum:testing` 32 | to `sailfishos:chum`. 33 | 34 | - if some SFOS versions or architectures were disabled for a package in `sailfishos:chum:testing`, 35 | also disable them in `sailfishos:chum`. 36 | -------------------------------------------------------------------------------- /Metadata.md: -------------------------------------------------------------------------------- 1 | # Additional metadata for SailfishOS:Chum 2 | 3 | ### Introduction 4 | 5 | The basic specification for the additional metadata is [that of AppStream](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#spec-component-filespec). 6 | While it is a goal to leverage AppStream metadata directly for SailfishOS:Chum packages and the SailfishOS:Chum GUI application, we are not at that stage yet, and are instead using a method of embedding metadata in the `%description` section of the RPM spec file. 7 | 8 | Note that it is important, that the part from the `%if 0%{?_chum}` to the `%endif` is the last and a contiguous paragraph of the `%description` section, i.e. it must not contain empty or comment lines (or any other line, which is evaluated to an empty line). 9 | If you need comment lines for remarks with regard to the SailfishOS:Chum metadata, place them outside of the whole metadata paragraph, as shown in the example below. 10 | 11 | Also note that embracing the metadata for SailfishOS:Chum by `%if 0%{?_chum}` / `%endif` is not strictly necessary: If the `%if…` and `%endif` lines are both omitted, the metadata for SailfishOS:Chum is displayed as part of the package description by common tools as `pkcon`, `zypper`, `rpm` etc. 12 | Nevertheless, metadata for SailfishOS:Chum always must be contiguous (i.e. without lines which are empty or may be evaluated to become empty) and the last paragraph of the `%description` section. 13 | 14 | ### An example 15 | ``` 16 | %description 17 | A camera application for Sailfish OS, which provides advanced features. 18 | 19 | # This description section includes metadata for SailfishOS:Chum, see 20 | # https://github.com/sailfishos-chum/main/blob/main/Metadata.md 21 | %if 0%{?_chum} 22 | Title: Advanced Camera 23 | Type: desktop-application 24 | DeveloperName: Adam Pigg 25 | Categories: 26 | - Media 27 | - Video 28 | Custom: 29 | Repo: https://github.com/piggz/harbour-advanced-camera 30 | PackageIcon: https://github.com/piggz/harbour-advanced-camera/raw/master/harbour-advanced-camera.svg 31 | Screenshots: 32 | - https://github.com/piggz/harbour-advanced-camera/raw/master/screenshots/screenshot1.png 33 | - https://github.com/piggz/harbour-advanced-camera/raw/master/screenshots/screenshot2.png 34 | - https://github.com/piggz/harbour-advanced-camera/raw/master/screenshots/screenshot3.png 35 | Links: 36 | Homepage: https://github.com/piggz/harbour-advanced-camera 37 | Help: https://github.com/piggz/harbour-advanced-camera/discussions 38 | Bugtracker: https://github.com/piggz/harbour-advanced-camera/issues 39 | Donation: https://www.paypal.me/piggz 40 | %endif 41 | ``` 42 | 43 | ## Field descriptions 44 | 45 | ### Notes 46 | * All fields are optional, and the example above does not use all possible fields (e.g. it lacks a `PackagingRepo:` tag). 47 | * The table below documents version 1 of the SailfishOS:Chum metadata definition.
48 | Note that four tags of the [original version 0](https://github.com/sailfishos-chum/main/blob/3a24059591d75529cf52d29c5d6a8a8f63feb4c6/Metadata.md) are deprecated [due to issues](https://github.com/sailfishos-chum/main/issues/100), but [still valid as synonyms](https://github.com/sailfishos-chum/sailfishos-chum-gui/pull/181) to the four tags which superseded them in version 1. 49 | 50 | ### Table of field descriptions 51 | 52 | | Tag | Field description | Notes | 53 | | -------------------------------- | ---------------------------------------------------------- | ----- | 54 | | Title: | Human readable application name | Might comprise multiple words, must be a single line with less than ca. 24 characters. If not set, the package name in the spec file preamble is used for creating a pretty name.[1](https://github.com/sailfishos-chum/sailfishos-chum-gui/blob/main/src/chumpackage.cpp#L122-L188) Does not follow AppStream specification due to conflicting with Jolla's [`tar_git` service](https://github.com/MeeGoIntegration/obs-service-tar-git) used by SailfishOS-OBS. | 55 | | Type: | Basic application type | Defaults to `generic`, unless the package name starts with `harbour-`, then it defaults to `desktop-application`. See [freedesktop.org:AppStream-docs:YAML-field-dep11](https://www.freedesktop.org/software/appstream/docs/sect-AppStream-YAML.html#field-dep11-type) for valid entries. | 56 | | DeveloperName: | Developer's preferred name | If not set, and a GitHub repository is set, then the name will be automatically retrieved. Note that such automatic retrieval is not ([yet](https://github.com/sailfishos-chum/main/issues/81)) supported for GitLab repositories. | 57 | | PackagedBy: | Packager's preferred name | Use if different from the developer and is expected to be contacted for packaging issues. Defaults to the packager name provided in the spec file preamble, if set there. | 58 | | Categories: | List of categories in which the package will be displayed | Each category shall be provided in a single line prefixed by `- ` (dash & space). Defaults to `Other`. See [freedesktop.org:AppStream-docs:ct-categories](https://www.freedesktop.org/software/appstream/docs/chap-CatalogData.html#tag-ct-categories) for the general specification. Valid main categories are `Library` and those listed in [freedesktop.org:menu-spec:categories](https://specifications.freedesktop.org/menu-spec/latest/category-registry.html), additional categories are described in [freedesktop.org:menu-spec:additional-category](https://specifications.freedesktop.org/menu-spec/latest/additional-category-registry.html) (plus [freedesktop.org:menu-spec:reserved-category](https://specifications.freedesktop.org/menu-spec/latest/reserved-category-registry.html) when really appropriate). | 59 | | Custom: | Root entry for custom repository fields | | 60 | |    Repo: | URL of the source code repository | If `Repo:` is set, other URLs for the SailfishOS:Chum GUI application will be automatically determined when possible (see `Links:` sub-fields). Currently supported are GitHub and GitLab.com URLs in the form `https://github.com//` and `https://gitlab.com//`.
If `Repo:` (and `PackagingRepo:`, see below) is not set or the metadata for SailfishOS:Chum is completely missing, the URL provided by the `URL:` field in the spec file preamble is used instead. | 61 | |    PackagingRepo: | URL of the repository specifically used for packaging | Is shown in the SailfishOS:Chum GUI application as a web-link. If `Repo:` is not set, it is also used as a fallback for the GitHub and GitLab integration. | 62 | |    DescriptionMD: | URL for a package description in MarkDown syntax | If provided, a description is downloaded from the specified URL and rendered as MarkDown in [Showdown's Markdown syntax](https://github.com/showdownjs/showdown/wiki/Showdown's-Markdown-syntax).
Otherwise (as default), the description in the `%description` section of the RPM spec file is used. | 63 | | PackageIcon: | URL to an image to be displayed in the SailfishOS:Chum GUI application as package icon; may differ from an application's launcher icon. | If not set, no icon will be shown for this package.
SVG is the preferred format; as alternatives PNG is the recommended raster format, BMP, GIF, JPG, PBM, PGM, PPM, XBM, XPM [are also supported](https://doc.qt.io/qt-5/qimagereader.html#supportedImageFormats), and ICNS, JP2, MNG, TGA, TIFF, WBMP, WEBP [should be supported](https://doc.qt.io/qt-5/qtimageformats-index.html). If a raster format is used, the image size should be 172x172 pixels or more, up to 256x256 pixels. | 64 | | Screenshots: | List of URLs to screenshots of the application | If not set, no screenshots will be displayed for the package. Each URL shall be provided in a single line prefixed by `- ` (dash & space). | 65 | | Links: | Root entry for additional URLs | These URL fields are displayed in the SailfishOS:Chum GUI application. | 66 | |    Homepage: | URL to the application homepage | Overrides the `Repo:` URL if set. This URL is also probed for the GitHub and GitLab integration after probing the URL provided by custom field `Repo:`. | 67 | |    Help: | URL to an application help page, e.g. a forum | If not set, and `Repo:` or `Homepage:` is set and points to GitHub, the GitHub discussion page will be used for projects which have it switched on. | 68 | |    Bugtracker: | URL to a bug tracker which allows users to file bugs | If not set, and `Repo:` or `Homepage:` is set and points to supported repository type, the repository's issues page will be used. | 69 | |    Donation: | URL to a web page proposed for donations | | 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SailfishOS:Chum community repository 2 | 3 | The SailfishOS:Chum community repository provides a collection of 4 | applications, tools and libraries compiled for various hardware 5 | architectures and Sailfish OS release versions. 6 | 7 | The ambition is to become the principal software distribution platform 8 | for Sailfish OS. 9 | 10 | In contrast to the software distribution model of the Jolla Store or 11 | OpenRepos, to which binary packages are uploaded by developers, at 12 | SailfishOS:Chum software is compiled and packaged into RPMs in a 13 | reproducible manner directly from its source code. The source code used 14 | for compiling and packaging is submitted by developers to OBS (Open 15 | Build Service), which generates multiple RPM files for various 16 | combinations of hardware architectures and Sailfish OS release 17 | versions. 18 | 19 | This scheme ensures that the complete source code of all packages at 20 | SailfishOS:Chum is available and inspectable there, and that all 21 | packages are generated solely from this source code. Hence all software 22 | packages at SailfishOS:Chum are created in a transparent and fully 23 | traceable manner. 24 | 25 | By collecting software for Sailfish OS in a single automated build 26 | system, collaboration between developers through common packaging of 27 | shared libraries etc. is fostered, duplication of work for keeping these 28 | common packages up-to-date is eliminated, and it becomes much easier to 29 | determine which pieces of software exist and which are missing at the 30 | Sailfish OS OBS. Additionally this eases tracing multiple and 31 | potentially layered dependencies ("dependency chains") which is crucial 32 | for keeping the software supply chains of complex packages up-to-date. 33 | 34 | The SailfishOS:Chum repository is located at the Sailfish OS OBS: 35 | [build.sailfishos.org/project/show/sailfishos:chum](https://build.sailfishos.org/project/show/sailfishos:chum) 36 | 37 | This repository at GitHub is used for filing general issues and 38 | publishing documentation for SailfishOS:Chum. 39 | 40 | For the etymological origin and meanings of the word "chum", see 41 | [en.wikipedia.org:Chumming](https://en.wikipedia.org/wiki/Chumming) 42 | and [en.wiktionary.org:chum](https://en.wiktionary.org/wiki/chum). 43 | 44 | 45 | ## User's guide 46 | 47 | There are two different ways of using the SailfishOS:Chum repository: 48 | - with the [SailfishOS:Chum GUI application](https://github.com/sailfishos-chum/sailfishos-chum-gui#readme) 49 | - with the usual command line tools for package management, `pkcon` or `zypper` 50 | 51 | ### How to install the SailfishOS:Chum GUI application 52 | 53 | The easiest way to install the SailfishOS:Chum GUI application built for the CPU-architecture of a device and its installed Sailfish OS release fully automatically is [the SailfishOS:Chum GUI Installer](https://github.com/sailfishos-chum/sailfishos-chum-gui-installer#readme). Because it is [hosted at OpenRepos](https://openrepos.net/content/olf/sailfishoschum-gui-installer) it can be conveniently [installed via Storeman](https://openrepos.net/content/olf/storeman-installer). The SailfishOS:Chum GUI Installer can also be manually downloaded from [OpenRepos](https://openrepos.net/content/olf/sailfishoschum-gui-installer), [GitHub](https://github.com/sailfishos-chum/sailfishos-chum-gui-installer/releases) or [SailfishOS:Chum](https://build.sailfishos.org/package/show/sailfishos:chum/sailfishos-chum-gui-installer) and then installed, e.g. by `pkcon install-local `. 54 | 55 | Alternatively a version of the SailfishOS:Chum GUI application for a specific CPU-architecture and Sailfish OS release can be manually selected and downloaded at [chumrpm.netlify.app](https://chumrpm.netlify.app/) for manual installation. 56 | 57 | Furthermore SailfishOS:Chum GUI application's individual RPMs are also provided at the [SailfishOS:Chum repository](https://build.sailfishos.org/package/show/sailfishos:chum/sailfishos-chum-gui), where they can be fully manually selected and fetched from, as the SailfishOS:Chum GUI Installer does in a fully automated manner and the web-interface at chumrpm.netlify.app semi-automated. 58 | 59 | **Important note**: If you experience issues while or after installing the SailfishOS:Chum GUI application, [do read the installation notes](https://github.com/sailfishos-chum/sailfishos-chum-gui#important-notes)! 60 | 61 | ### How to deploy the configuration for command line tools 62 | 63 | For using the SailfishOS:Chum repository by command line tools, a [`sailfishos-chum-repo-config` helper RPM](https://github.com/sailfishos-chum/sailfishos-chum-repo-config#readme), which solely provides an appropriate local repository configuration for utilising the SailfishOS:Chum repository, is available at [OpenRepos](https://openrepos.net/content/olf/sailfishoschum-repo-config-rpm), at [chumrpm.netlify.app](https://chumrpm.netlify.app/), at [GitHub](https://github.com/sailfishos-chum/sailfishos-chum-repo-config/releases) and [SailfishOS:Chum](https://build.sailfishos.org/package/show/sailfishos:chum/sailfishos-chum-repo-config). 64 | 65 | Mind that installing the SailfishOS:Chum GUI application deploys the same local repository configuration, so your device is already set for using the SailfishOS:Chum repository with the usual command line tools for package management, then. 66 | 67 | To utilise the SailfishOS:Chum repository using command line tools on your device, you have to … 68 | 1. install either of the aforementioned packages `sailfishos-chum-gui` or `sailfishos-chum-repo-config`. 69 | 2. refresh the package cache on your device as root user per `pkcon refresh` or `zypper ref`. 70 | 3. install any software packages you like from the SailfishOS:Chum repository as root user by executing `pkcon install ` or `zypper in `. You can also search for available packages by executing `pkcon search name ` or `zypper se `. 71 | 72 | As software packages at SailfishOS:Chum have their vendor set to `chum` by default (*but* this can be overrridden in a package's spec file), for most packages it is easy to determine which ones are installed from the SailfishOS:Chum repository by executing:
73 | `rpm -qa --queryformat '%{vendor}:%{name}\n' | fgrep chum` 74 | 75 | 76 | ## Developer's guide 77 | 78 | There are no major restrictions imposed on software submitted to SailfishOS:Chum. 79 | Although one limitation is that submitted software should not interfere with any software distributed by Jolla as a part of Sailfish OS, which also means that updating or replacing libraries distributed by Jolla's repositories must be avoided. 80 | Note that Jolla's repositories provide far more software packages than the ones installed by default. 81 | 82 | All kinds of software for Sailfish OS are welcome at SailfishOS:Chum, for example, actively maintained software for SFOS, abandoned software for SFOS, and tools and libraries which are missing on SFOS as distributed by Jolla. 83 | Depending on the type of software, the recommended way of submitting software to SailfisOS:Chum varies, as described in the sections below. 84 | 85 | The overall process is as follows. 86 | 1. For the initial submission of a software package: 87 | - Make your software package successfully compile at the Sailfish OS OBS. 88 | - Submit your package to the SailfishOS:Chum:Testing repository `sailfishos:chum:testing` by using the "Submit package" action of OBS. A version has to be specified when submitting. 89 | - The `sailfishos:chum:testing` maintainers will accept or reject your request and check if your software package successfully builds at the SailfishOS:Chum:Testing repository. If all is fine, the package will be promoted to the main `sailfishos:chum` repository by the SailfishOS:Chum maintainers. If something went wrong, you will be notified to resolve the issue. 90 | 2. After a successful initial submission, you will be made maintainer of your software package in the `sailfishos:chum:testing` repository, which allows you to handle updates in a simplified manner: 91 | - For updating your package, prepare the source, then update the version information accordingly in the OBS service file `_service` at `sailfishos:chum:testing`: This will trigger a new build at OBS. 92 | - Check that your software package successfully builds at the SailfishOS:Chum:Testing repository. Note that this needs some patience and might require reloading the browser window or using `osc blt` at the command line to observe that OBS progresses. 93 | - Ultimately use the "Submit package" action to trigger promoting your package from `sailfishos:chum:testing` to `sailfishos:chum`: Fill the form with `sailfishos:chum` as the target repository, the target package field shall be left empty to reuse the existing name at `sailfishos:chum:testing` and the description can be left empty, as it is a free text field only for this submit request. 94 | 95 | As a reference, see the [maintainer's tasks](Maintainer.md) document for a list of checks and balances performed by the SailfishOS:Chum maintainers. 96 | 97 | Also note the documentation for the [additional metadata for SailfishOS:Chum](Metadata.md) in RPM spec files. 98 | 99 | ### Asking for help 100 | 101 | If something is not clear or you become stuck in the process, feel free to ask for help via the IRC channel `#sailfishos` (you may contact `piggz` or `rinigus` there), the [Sailfish OS forum](https://forum.sailfishos.org/search?q=chum), or filing an [issue here at GitHub](https://github.com/sailfishos-chum/main/issues). 102 | 103 | For an OBS primer, see our [Getting Started with OBS](GettingStarted.md) document. 104 | 105 | You may also ask someone else to package some software for you. 106 | Just be aware that for this to work out, you might need to provide some incentive. 107 | 108 | ### Submitting actively maintained software 109 | 110 | If a package is already compiled at the Sailfish OS OBS, simply use the "Submit package" action for the package and all its dependencies, which are not yet available as part of the SailfishOS:Chum repository or Jolla's RPM repositories. 111 | 112 | If you are not using the Sailfish OS OBS yet, you should obtain an account there by following the instructions at [the Sailfish OS OBS front page](https://build.sailfishos.org/), and then configure your software package at the Sailfish OS OBS; alternatively you may ask the SailfishOS:Chum maintainers to add your software to the SailfishOS:Chum:Testing repository as a preliminary measure. 113 | 114 | For actively developed or maintained software for SFOS, it is expected that the source code is fetched from the software repository where it is developed. 115 | In contrast to the subsequent paragraph, no requests for forking a software as a project under the GitHub organisation [sailfishos-chum](https://github.com/sailfishos-chum) are expected for actively maintained software. 116 | 117 | ### Submitting abandoned software 118 | 119 | If an application or other software for SFOS has not been picked up by some other developer (please check thoroughly first), it is suggested to open [an issue at this repository](https://github.com/sailfishos-chum/main/issues) requesting to add that software as a project under the GitHub organisation [sailfishos-chum](https://github.com/sailfishos-chum). 120 | The link to the original git repository at GitHub, GitLab or elsewhere must be included. 121 | 122 | The request will be evaluated and a fork of the software into the GitHub organisation [sailfishos-chum](https://github.com/sailfishos-chum) might be created. 123 | If necessary, the packaging scripts will be updated and ultimately the software might be added to the SailfishOS:Chum:Testing repository with the perspective of promotion to the SailfishOS:Chum main repository. 124 | 125 | ### Submitting third party software 126 | 127 | If you want to submit software, which is actively maintained as an upstream version (for example, libraries or tools as Midnight Commander), it is suggested to request creating a repository at the GitHub organisation [sailfishos-chum](https://github.com/sailfishos-chum) and adding it to the Sailfish OS OBS. 128 | For that, open [an issue at this repository](https://github.com/sailfishos-chum/main/issues), the SailfishOS:Chum maintainers will create a source code repository for you in which you will be able to adapt and package the software as needed for Sailfish OS. 129 | 130 | If you already have a source code repository for adapting and packaging the software for Sailfish OS, it can be either forked by the GitHub organisation [sailfishos-chum](https://github.com/sailfishos-chum) or, at your choice, transferred to this organisation; alternatively you may follow the approach described for [actively maintained software](#submitting-actively-maintained-software). 131 | 132 | For adapting and packaging the software for Sailfish OS, perferably use the scheme Jolla employs for [the majority of Sailfish OS packages](https://github.com/sailfishos): Add the upstream source code repository as a submodule and maintain your patches and packaging scripts in your downstream 133 | repository. 134 | 135 | 136 | ## SailfishOS:Chum FAQ 137 | 138 | - **My software requires specific SFOS versions, can I still use the SailfishOS:Chum repository?**
139 | Yes, you can. 140 | You simply have to disable the unsupported SFOS versions and / or architectures in the OBS Meta settings for your package. 141 | Take a look at [Pure Maps' OBS Meta settings](https://build.sailfishos.org/package/meta/sailfishos:chum/pure-maps) as an example. 142 | 143 | - **Can I build differently depending on the Sailfish OS version?**
144 | Yes, you can. 145 | You can use the RPM macro `%sailfishos_version` to build differently depending on the release version. 146 | This works in the same manner as for other Linux distributions, so you can support multiple Linux distributions with a single spec file. 147 | For details, see [openSUSE:Build_Service_cross_distribution_howto](https://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto).
148 | Alternatively you may use the [OBS-specific RPM macro `%_repository`](https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.supported_formats.html#sec.obs.building.spec2rpm), which resolves to, e.g. `sailfishos4.4.0.72_aarch64`. The architecture part can also be queried specifically by the classic RPM macros [`%ifarch` and `%ifnarch`](https://rpm-software-management.github.io/rpm/manual/spec.html#conditionals). 149 | 150 | - **Can I use the RPMs of my software built at SailfishOS:Chum to upload them to the Jolla Store?**
151 | Mind that RPMs built at SailfishOS:Chum have [Vendor set to `chum` by default](https://build.merproject.org/project/prjconf/sailfishos:chum), which is not allowed at the Jolla Store ("harbour"), as any other value (`meego` might be an exception). 152 | However, it is easy to set up a personal repository at the Sailfish OS OBS (which sets Vendor to `meego` by default for packages built there), configure `sailfishos:chum` to provide the required dependencies and re-build your packages at your own repository. 153 | Alternatively you may explicitly set `Vendor:` in the spec file, but then these RPMs are not identifyable as being built at SailfishOS:Chum or the Sailfish OS OBS, despite being offered there (unless `Vendor:` is set to `chum` or `meego`). Note that you cannot unset Vendor by `%undefine vendor`.
154 | As a result, you will get automated builds for all architectures wanted without Vendor set to `chum` in your RPMs. 155 | 156 | - **Can I use the RPMs of my software built at SailfishOS:Chum to upload them to OpenRepos or elsewhere?**
157 | While you could do that, it is not recommended to re-distribute RPMs from SailfishOS:Chum because they have Vendor set to `chum` by default (unless explicitly set to something else), which will prevent users from distinguishing whether a package was directly installed from the SailfishOS:Chum repository or from some other package repository, and additionally overrides package store separation by ["Vendor stickiness"](https://en.opensuse.org/SDB:Vendor_change_update) (see also next bullet point). 158 | For a way to automatically build packages at the Sailfish OS OBS utilising SailfishOS:Chum for dependencies, but having Vendor not set to `chum`, see previous answer. 159 | 160 | - **Can I set the Vendor field of my software built at SailfishOS:Chum to a value used elsewhere in order to avoid ["Vendor stickiness"](https://en.opensuse.org/SDB:Vendor_change_update), which prevents cross-repository updates?**
161 | Though this implies the drawbacks denoted in the two previous points, you can do that. [This thread](https://github.com/sailfishos-chum/sailfishos-chum-gui/issues/149#issuecomment-1426819632) details this and the two prior bullet points. 162 | 163 | - **Are there limitations on the licensing of the software which is submitted to SailfishOS:Chum?**
164 | Yes, in general solely software which is distributed under an [OSI approved license](https://opensource.org/licenses) might be submitted to the Sailfish OS OBS. 165 | Exceptions may be made in special cases as firmware blobs, but in general this guidance shall be obeyed: [openSUSE:Build_Service_application_blacklist](https://en.opensuse.org/openSUSE:Build_Service_application_blacklist) 166 | -------------------------------------------------------------------------------- /Retiring_Packages.md: -------------------------------------------------------------------------------- 1 | ## Retiring packages from SailfishOS:Chum 2 | 3 | The team at Jolla/Jollyboys, and the people providing packages at Chum rarely, 4 | but increasingly often find themselves in the situation that a package has been 5 | published at Chum, and a release of Sailfish OS published at a later point 6 | ships the same software. 7 | 8 | This causes the issue that Chum is suddenly in violation of the agreement that 9 | no Sailfish OS upstream packages be published on it. 10 | 11 | Still, the package is published on Chum, other software may depend on it, and 12 | usually it's beneficial to keep it there, and continue to offer it for older OS 13 | releases. 14 | 15 | Hence this 16 | 17 | ### Process for retiring a package: 18 | 19 | #### Organisational 20 | 21 | 0. Hopefully, a Chum package maintainer is informed in due time by the Sailfish OS team that retirement is necessary. 22 | 23 | 1. If you are not the maintainer of the affected package, file a bug with its packaging repository. 24 | 1. If there is no packaging repository, and no other means of informing the 25 | packager of the issue, or they are not responsive, etc., file a bug at 26 | https://github.com/sailfishos-chum/main/issues/ instead (or additionally). 27 | 28 | The exact changes necessary should be determined/documented/tracked in said bug reports. 29 | 30 | The SailfishOS IRC channel `#sailfishos` on the OFTC network is there for 31 | discussion. In more complicated cases it may be good to bring the issue to 32 | Jolla, either at their [Issue Tracker](https://github.com/sailfishos/issue-tracker/issues/), 33 | or as a point to discuss at a [Community Meeting](https://forum.sailfishos.org/tag/community-meeting). 34 | 35 | #### Technical 36 | 1. Investigate differences in packaging. Things like sub-package names etc. 37 | 1. Identify the last SailfishOS release where the package may be published on Chum. 38 | 1. If there are relevant differences in packaging, for existing, published 39 | repository versions of the chum package, publish a new revision which aligns 40 | the chum packaging with the Sailfish OS one. 41 | Think about the update case from the Chum version to the Sailfish OS version and 42 | ensure a clean update path is possible. 43 | Take care of `Obsoletes:`, `Conflicts:` and so on. 44 | 1. Optionally (and for `tar_git` packaging only), if the `sailfishos-mirror` 45 | organisation now has a fork or clone repository, point git sub-modules there 46 | instead of the original. 1. Edit the .spec file so the package cannot be built 47 | on conflicting versions. 48 | 1. Note that disabling build repos on OBS may seem like a viable strategy, but 49 | this puts all the work in the hands of the Chum maintainers, and errors may 50 | lead to unwanted binaries ending up being published. 51 | This task is better left to the packager. 52 | 53 | Strategies that may be used in .spec files to disable building: 54 | 55 | **ExclusiveArch: none** 56 | 57 | 58 | ``` 59 | %if 0%{?sailfishos_version} >= 50500 60 | ExclusiveArch: none 61 | %endif 62 | ``` 63 | This works on Sailfish OBS because the macro is defined there. Other build environments may or may not define it. 64 | 65 | **Depending/Conflicting with `sailfish-version`**: 66 | 67 | All Sailfish OS related build environments should have the `sailfish-version` package. 68 | This has the added benefit that you can select whether to disable *building* or *installing* the package on the relevant Sailfish Version. 69 | 70 | ``` 71 | Requires: sailfish-version < 5.0.0-1.1.1 72 | BuildRequires: sailfish-version < 5.0.0-1.1.1 73 | ``` 74 | 75 | ---- 76 | 77 | ### References: 78 | 79 | - https://github.com/sailfishos-chum/main/issues/118 80 | - https://github.com/sailfishos/issue-tracker/issues/7 81 | --------------------------------------------------------------------------------