Merge pull request #6 from CereusLinuxProject/master

Backup current master branch in oldrepo
This commit is contained in:
Kevin Figueroa 2023-06-01 12:11:54 -04:00 committed by GitHub
commit be5540fc78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
243 changed files with 5207 additions and 1765 deletions

73
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View file

@ -0,0 +1,73 @@
name: Bug Report
description: File a bug report
labels: ["bug", "needs-testing"]
body:
- type: markdown
attributes:
value: >
#### Don't request an update of a package,
[We have a script for that](https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt).
However, a quality pull request may help.
- id: verified
type: dropdown
attributes:
label: Is this a new report?
description: I verified that there isn't already an open issue for this bug
options:
- "Yes"
- "No"
validations:
required: true
- id: xuname
type: input
attributes:
label: System Info
description: Output of `xuname` (part of [`xtools`](https://man.voidlinux.org/xtools.1))
placeholder: Void 5.x.y_z x86_64-musl ...
validations:
required: true
- id: packages
type: input
attributes:
label: Package(s) Affected
description: Affected package(s) including version (this can be found with `xbps-query -p pkgver foo`)
placeholder: foo-1.0.2_5, bar-5.6.7_1, baz-0.0.3_5, ...
validations:
required: true
- id: upstream
type: textarea
attributes:
label: Does a report exist for this bug with the project's home (upstream) and/or another distro?
description: If so, link it here (It's fine if there's none)
placeholder: |
For example:
https://bugs.kde.org/show_bug.cgi?id=432975
https://bugs.gentoo.org/767478
- id: expected
type: textarea
attributes:
label: Expected behaviour
description: A clear and concise description of what you expected to happen
placeholder: The package is supposed to do this thing.
validations:
required: true
- id: description
type: textarea
attributes:
label: Actual behaviour
description: A clear and concise description of what the bug is
placeholder: There was a crash when...
validations:
required: true
- id: steps
type: textarea
attributes:
label: Steps to reproduce
description: Clear steps to reproduce the bug
placeholder: |
1. Do the thing
2. Do the other thing
3. ???
4. Crash :(
validations:
required: true

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Other kind of issue
url: https://github.com/void-linux/void-packages/issues/new
about: For RFCs, tracking issues, etc (freeform text)

59
.github/ISSUE_TEMPLATE/pkg-request.yml vendored Normal file
View file

@ -0,0 +1,59 @@
name: Package Request
title: "Package request: "
description: Request the addition of a package
labels: ["request"]
body:
- type: markdown
attributes:
value: >
#### Don't request an update of a package,
[We have a script for that](https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt).
However, a quality pull request may help.
- id: name
type: input
attributes:
label: Package name
placeholder: foobar9k
validations:
required: true
- id: homepage
type: input
attributes:
label: Package homepage
placeholder: https://example.com/foobar9k
validations:
required: true
- id: description
type: textarea
attributes:
label: Description
description: What does the package do?
placeholder: >
Foobar9k is a music player that turns your music up to 11.
It provides features X, Y, and Z, which other music players in Void don't.
validations:
required: true
- id: quality
type: dropdown
attributes:
label: Does the requested package meet the package requirements?
description: |
See [CONTRIBUTING.md](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements) for details
multiple: true
options:
- System
- Compiled
- Required
validations:
required: true
- id: released
type: dropdown
attributes:
label: Is the requested package released?
description: |
See [CONTRIBUTING.md](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements) for details
options:
- "Yes"
- "No"
validations:
required: true

View file

@ -1,14 +1,8 @@
<!-- Don't request update of package. We have a script for that. https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt . However, a quality pull request may help. --> <!--
### System if you are creating a bug report or package request, please fill out one of the forms here:
https://github.com/void-linux/void-packages/issues/new/choose
* xuname:
*output of ``xuname`` (part of xtools)*
* package:
*affected package(s) including the version*: ``xbps-query -p pkgver <pkgname>``
### Expected behavior
### Actual behavior
### Steps to reproduce the behavior
Don't request an update of a package, We have a script for that:
https://alpha.de.repo.voidlinux.org/void-updates/void-updates.txt
However, a quality pull request may help.
-->

View file

@ -5,7 +5,7 @@
<!-- <!--
#### New package #### New package
- This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO** - This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**|**NO**
--> -->
<!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in <!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in

View file

@ -2,18 +2,26 @@ name: Check build
on: on:
pull_request: pull_request:
paths:
- 'srcpkgs/**'
push: push:
branches: branches:
- 'ci-**' - 'ci-**'
paths:
- 'srcpkgs/**'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
# Lint changed templates. # Lint changed templates.
xlint: xlint:
name: Lint templates name: Lint templates
runs-on: ubuntu-18.04 runs-on: ubuntu-latest
env: env:
PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin' PATH: '/usr/libexec/chroot-git:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
XLINT: '1' XLINT: '1'
LICENSE_LIST: common/travis/license.lst LICENSE_LIST: common/travis/license.lst
@ -30,13 +38,13 @@ jobs:
# Build changed packages. # Build changed packages.
build: build:
name: Build packages name: Build packages
runs-on: ubuntu-18.04 runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[ci skip]') && !contains(github.event.pull_request.body, '[ci skip]')" if: "!contains(github.event.pull_request.title, '[ci skip]') && !contains(github.event.pull_request.body, '[ci skip]')"
container: container:
image: 'ghcr.io/void-linux/xbps-src-masterdir:20210313rc01-${{ matrix.config.bootstrap }}' image: 'ghcr.io/void-linux/xbps-src-masterdir:20220527RC01-${{ matrix.config.bootstrap }}'
env: env:
PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin' PATH: '/usr/libexec/chroot-git:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
ARCH: '${{ matrix.config.arch }}' ARCH: '${{ matrix.config.arch }}'
BOOTSTRAP: '${{ matrix.config.bootstrap }}' BOOTSTRAP: '${{ matrix.config.bootstrap }}'
TEST: '${{ matrix.config.test }}' TEST: '${{ matrix.config.test }}'
@ -57,6 +65,9 @@ jobs:
steps: steps:
- name: Prepare container - name: Prepare container
run: | run: |
# switch to repo-ci mirror
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
# Sync and upgrade once, assume error comes from xbps update # Sync and upgrade once, assume error comes from xbps update
xbps-install -Syu || xbps-install -yu xbps xbps-install -Syu || xbps-install -yu xbps
# Upgrade again (in case there was a xbps update) # Upgrade again (in case there was a xbps update)
@ -90,6 +101,22 @@ jobs:
"$here/common/travis/show_files.sh" "$BOOTSTRAP" "$ARCH" "$here/common/travis/show_files.sh" "$BOOTSTRAP" "$ARCH"
) )
- name: Compare to previous
run: |
(
here="$(pwd)"
cd /
"$here/common/travis/xpkgdiff.sh" "$BOOTSTRAP" "$ARCH"
)
- name: Check file conflicts
if: matrix.config.arch == 'x86_64' # the arch indexed in xlocate
run: |
if [ -s /tmp/templates ]; then
xlocate -S &&
common/scripts/lint-conflicts $HOME/hostdir/binpkgs
fi
- name: Verify repository state - name: Verify repository state
run: | run: |
( (

View file

@ -7,11 +7,16 @@ on:
jobs: jobs:
cycles: cycles:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
issues: write
container: container:
image: 'ghcr.io/void-linux/xbps-src-masterdir:20210313rc01-x86_64-musl' image: 'ghcr.io/void-linux/xbps-src-masterdir:20220527RC01-x86_64-musl'
steps: steps:
- name: Prepare container - name: Prepare container
run: | run: |
# switch to repo-ci mirror
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
# Sync and upgrade once, assume error comes from xbps update # Sync and upgrade once, assume error comes from xbps update
xbps-install -Syu || xbps-install -yu xbps xbps-install -Syu || xbps-install -yu xbps
# Upgrade again (in case there was a xbps update) # Upgrade again (in case there was a xbps update)
@ -28,6 +33,9 @@ jobs:
common/travis/prepare.sh common/travis/prepare.sh
- name: Find cycles and open issues - name: Find cycles and open issues
run: | run: |
PATH="/usr/libexec/chroot-git:$PATH"
# required by git 2.35.2+
git config --global --add safe.directory "$PWD"
common/scripts/xbps-cycles.py | tee cycles common/scripts/xbps-cycles.py | tee cycles
grep 'Cycle:' cycles | while read -r line; do grep 'Cycle:' cycles | while read -r line; do
if gh issue list -R "$GITHUB_REPOSITORY" -S "$line" | grep .; then if gh issue list -R "$GITHUB_REPOSITORY" -S "$line" | grep .; then

View file

@ -0,0 +1,46 @@
name: 'Cycle Check'
on: workflow_dispatch
jobs:
cycles:
runs-on: ubuntu-latest
permissions:
issues: write
container:
image: 'ghcr.io/void-linux/xbps-src-masterdir:20220527RC01-x86_64-musl'
steps:
- name: Prepare container
run: |
# switch to repo-ci mirror
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sed -i 's|repo-default|repo-ci|g' /etc/xbps.d/*-repository-*.conf
# Sync and upgrade once, assume error comes from xbps update
xbps-install -Syu || xbps-install -yu xbps
# Upgrade again (in case there was a xbps update)
xbps-install -yu
# Install script dependencies
xbps-install -y python3-networkx github-cli
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Create hostrepo and prepare masterdir
run: |
ln -s "$(pwd)" /hostrepo &&
common/travis/set_mirror.sh &&
common/travis/prepare.sh
- name: Find cycles and open issues
run: |
PATH="/usr/libexec/chroot-git:$PATH"
# required by git 2.35.2+
git config --global --add safe.directory "$PWD"
common/scripts/xbps-cycles.py | tee cycles
grep 'Cycle:' cycles | while read -r line; do
if gh issue list -R "$GITHUB_REPOSITORY" -S "$line" | grep .; then
printf "Issue on '%s' already exists.\n" "$line"
else
gh issue create -R "$GITHUB_REPOSITORY" -b '' -t "$line"
fi
done
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN }}

18
.github/workflows/notify-telegram.yml vendored Normal file
View file

@ -0,0 +1,18 @@
name: Telegram notification
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Notify to internal Telegram group on push
uses: appleboy/telegram-action@master
with:
to: ${{ secrets.TG_INTERNAL_GROUP_ID }}
token: ${{ secrets.TG_INTERNAL_BOT_TOKEN }}
format: markdown
message: |
[New commit](https://github.com/${{ github.repository }}/commit/${{github.sha}}) to [${{ github.repository }}](https://github.com/${{ github.repository }}):
*${{ github.event.commits[0].message }}* by [${{ github.actor }}](https://github.com/${{ github.actor }}).

View file

@ -9,13 +9,17 @@ on:
jobs: jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps: steps:
- uses: actions/stale@v4 - uses: actions/stale@v6
with: with:
stale-issue-message: 'Issues become stale 90 days after last activity and are closed 7 days after that. If this issue is still relevant bump it or assign it.' stale-issue-message: 'Issues become stale 90 days after last activity and are closed 14 days after that. If this issue is still relevant bump it or assign it.'
stale-pr-message: 'Pull Requests become stale 90 days after last activity and are closed 7 days after that. If this pull request is still relevant bump it or assign it.' stale-pr-message: 'Pull Requests become stale 90 days after last activity and are closed 14 days after that. If this pull request is still relevant bump it or assign it.'
days-before-stale: 90 days-before-stale: 90
days-before-close: 7 days-before-close: 14
debug-only: true
exempt-all-assignees: true exempt-all-assignees: true
operations-per-run: 1000 ascending: true
operations-per-run: 250
exempt-issue-labels: 'request,bug,tracking'

View file

@ -4,15 +4,39 @@ void-packages is the backbone of the Void Linux distribution. It contains all th
This document describes how you, as a contributor, can help with adding packages, correcting bugs and adding features to void-packages. This document describes how you, as a contributor, can help with adding packages, correcting bugs and adding features to void-packages.
## Getting your packages into Void by yourself ## Package Requirements
If you really want to get a package into Void Linux, we recommend you package it yourself. To be included in the Void repository, software must meet at least one of the following requirements.
Exceptions to the list are possible, and might be accepted, but are extremely unlikely.
If you believe you have an exception, start a PR and make an argument for why that particular piece of software,
while not meeting any of the following requirements, is a good candidate for the Void packages system.
1. **System**: The software should be installed system-wide, not per-user.
1. **Compiled**: The software needs to be compiled before being used, even if it is software that is not needed by the whole system.
1. **Required**: Another package either within the repository or pending inclusion requires the package.
In particular, new themes are highly unlikely to be accepted.
Simple shell scripts are unlikely to be accepted unless they provide considerable value to a broad user base.
New fonts may be accepted if they provide value beyond aesthetics (e.g. they contain glyphs for a script missing in already packaged fonts).
Browser forks, including those based on Chromium and Firefox, are generally not accepted.
Such forks require heavy patching, maintenance and hours of build time.
Software need to be used in version announced by authors as ready to use by the general public - usually called releases.
Betas, arbitrary VCS revisions, templates using tip of development branch taken at build time and releases created by the package maintainer won't be accepted.
## Creating, updating, and modifying packages in Void by yourself
If you really want to get a new package or package update into Void Linux, we recommend you contribute it yourself.
We provide a [comprehensive Manual](./Manual.md) on how to create new packages. We provide a [comprehensive Manual](./Manual.md) on how to create new packages.
There's also a [manual for xbps-src](./README.md), which is used There's also a [manual for xbps-src](./README.md), which is used to build package files from templates.
to build package files from templates.
For this guide, we assume you have basic knowledge about [git](http://git-scm.org), as well as a [GitHub Account](http://github.com). For this guide, we assume you have basic knowledge about [git](http://git-scm.org), as well as a [GitHub Account](http://github.com) with [SSH set up](https://docs.github.com/en/authentication/connecting-to-github-with-ssh).
You should also [set the email](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address) on your GitHub account and in git so your commits are associated with your GitHub account properly.
To get started, [fork](https://help.github.com/articles/fork-a-repo) the void-linux `void-packages` git repository on GitHub and clone it: To get started, [fork](https://help.github.com/articles/fork-a-repo) the void-linux `void-packages` git repository on GitHub and clone it:
@ -23,9 +47,24 @@ To keep your forked repository up to date, setup the `upstream` remote to pull i
$ git remote add upstream https://github.com/void-linux/void-packages.git $ git remote add upstream https://github.com/void-linux/void-packages.git
$ git pull --rebase upstream master $ git pull --rebase upstream master
This can also be done with the `github-cli` tool:
$ gh repo fork void-linux/void-packages
$ gh repo clone <user>/void-packages
This automatically sets up the `upstream` remote, so `git pull --rebase upstream master` can still be used to keep your fork up-to-date.
Using the GitHub web editor for making changes is strongly discouraged, because you will need to clone the repo anyways to edit and test your changes.
using the the `master` branch of your fork for contributing is also strongly discouraged.
It can cause many issues with updating your pull request (also called a PR), and having multiple PRs open at once.
To create a new branch:
$ git checkout master -b <a-descriptive-name>
### Creating a new template ### Creating a new template
You can use the helper tool `xnew`, from the [xtools](https://github.com/chneukirchen/xtools) package, to create new templates: You can use the helper tool `xnew`, from the [xtools](https://github.com/leahneukirchen/xtools) package, to create new templates:
$ xnew pkgname subpkg1 subpkg2 ... $ xnew pkgname subpkg1 subpkg2 ...
@ -33,44 +72,58 @@ Templates must have the name `void-packages/srcpkgs/<pkgname>/template`, where `
For deeper insights on the contents of template files, please read the [manual](./Manual.md), and be sure to browse the existing template files in the `srcpkgs` directory of this repository for concrete examples. For deeper insights on the contents of template files, please read the [manual](./Manual.md), and be sure to browse the existing template files in the `srcpkgs` directory of this repository for concrete examples.
When you've finished working on the template file, please check it with `xlint` helper from the [xtools](https://github.com/chneukirchen/xtools) package: ### Updating a template
At minimum, a template update will consist of changing `version` and `checksum`, if there was an upstream version change, and/or `revision`, if a template-specific change (e.g. patch, correction, etc.) is needed.
Other changes to the template may be needed depending on what changes the upstream has made.
The checksum can be updated automatically with the `xgensum` helper from the [xtools](https://github.com/leahneukirchen/xtools) package:
$ xgensum -i <pkgname>
### Committing your changes
After making your changes, please check that the package builds successfully. From the top level directory of your local copy of the `void-packages` repository, run:
$ ./xbps-src pkg <pkgname>
Your package must build successfully for at least x86, but we recommend also trying a cross-build for armv6l* as well, e.g.:
$ ./xbps-src -a armv6l pkg <pkgname>
When building for `x86_64*` or `i686`, building with the `-Q` flag or with `XBPS_CHECK_PKGS=yes` set in `etc/conf` (to run the check phase) is strongly encouraged.
Also, new packages and updates will not be accepted unless they have been runtime tested by installing and running the package.
When you've finished working on the template file, please check it with `xlint` helper from the [xtools](https://github.com/leahneukirchen/xtools) package:
$ xlint template $ xlint template
If `xlint` reports any issues, resolve them before committing. If `xlint` reports any issues, resolve them before committing.
### Committing your changes
Once you have made and verified your changes to the package template and/or other files, make one commit per package (including all changes to its sub-packages). Each commit message should have one of the following formats: Once you have made and verified your changes to the package template and/or other files, make one commit per package (including all changes to its sub-packages). Each commit message should have one of the following formats:
* for new packages, use ```New package: <pkgname>-<version>``` ([example](https://github.com/void-linux/void-packages/commit/176d9655429188aac10cd229827f99b72982ab10)). * for new packages, use `New package: <pkgname>-<version>` ([example](https://github.com/void-linux/void-packages/commit/8ed8d41c40bf6a82cf006c7e207e05942c15bff8)).
* for package updates, use ```<pkgname>: update to <version>.``` ([example](https://github.com/void-linux/void-packages/commit/b6b82dcbd4aeea5fc37a32e4b6a8dd8bd980d5a3)). * for package updates, use `<pkgname>: update to <version>.` ([example](https://github.com/void-linux/void-packages/commit/c92203f1d6f33026ae89f3e4c1012fb6450bbac1)).
* for template modifications without a version change, use ```<pkgname>: <reason>``` ([example](https://github.com/void-linux/void-packages/commit/8b68d6bf1eb997cd5e7c095acd040e2c5379c91d)). * for template modifications without a version change, use `<pkgname>: <reason>` ([example](https://github.com/void-linux/void-packages/commit/ff39c912d412717d17232de9564f659b037e95b5)).
* for package removals, use ```<pkgname>: remove package``` ([example](https://github.com/void-linux/void-packages/commit/83784632d94deee5d038c8e1c4c1dffa922fca21)). * for package removals, use `<pkgname>: remove package` and include the removal reason in the commit body ([example](https://github.com/void-linux/void-packages/commit/4322f923bdf5d4e0eb36738d4f4717d72d0a0ca4)).
* for `common/shlibs` modifications, use `common/shlibs: <pkgname>` ([example](https://github.com/void-linux/void-packages/commit/613651c91811cb4fd2e1a6be701c87072d759a9f)). * for changes to any other file, use `<filename>: <reason>` ([example](https://github.com/void-linux/void-packages/commit/e00bea014c36a70d60acfa1758514b0c7cb0627d),
[example](https://github.com/void-linux/void-packages/commit/93bf159ce10d8e474da5296e5bc98350d00c6c82), [example](https://github.com/void-linux/void-packages/commit/dc62938c67b66a7ff295eab541dc37b92fb9fb78), [example](https://github.com/void-linux/void-packages/commit/e52317e939d41090562cf8f8131a68772245bdde))
If you want to describe your changes in more detail, add an empty line followed by those details ([example](https://github.com/void-linux/void-packages/commit/f1c45a502086ba1952f23ace9084a870ce437bc6)). If you want to describe your changes in more detail, explain in the commit body (separated from the first line with a blank line) ([example](https://github.com/void-linux/void-packages/commit/f1c45a502086ba1952f23ace9084a870ce437bc6)).
`xbump`, available in the [xtools](https://github.com/chneukirchen/xtools) package, can be used to commit a new or updated package: `xbump`, available in the [xtools](https://github.com/leahneukirchen/xtools) package, can be used to commit a new or updated package:
$ xbump <pkgname> <git commit options> $ xbump <pkgname> <git commit options>
`xbump` will use `git commit` to commit the changes with the appropriate commit message. For more fine-grained control over the commit, specific options can be passed to `git commit` by adding them after the package name. `xrevbump`, also available in the [xtools](https://github.com/leahneukirchen/xtools) package, can be used to commit a template modification for a package:
After committing your changes, please check that the package builds successfully. From the top level directory of your local copy of the `void-packages` repository, run: $ xrevbump '<message>' <pkgnames...>
$ ./xbps-src pkg <pkgname> `xbump` and `xrevbump` will use `git commit` to commit the changes with the appropriate commit message. For more fine-grained control over the commit, specific options can be passed to `git commit` by adding them after the package name.
Your package must build successfully for at least x86, but we recommend trying to build for armv* as well, e.g.:
$ ./xbps-src -a armv7l pkg <pkgname>
Runtime testing of packages and building with the `-Q` flag or with `XBPS_CHECK_PKGS=yes` set in the environment or `etc/conf` are strongly encouraged.
New packages will not be accepted unless they have been runtime tested.
### Starting a pull request ### Starting a pull request
@ -123,9 +176,31 @@ Once you have applied all requested changes, the reviewers will merge your reque
If the pull request becomes inactive for some days, the reviewers may or may not warn you when they are about to close it. If the pull request becomes inactive for some days, the reviewers may or may not warn you when they are about to close it.
If it stays inactive further, it will be closed. If it stays inactive further, it will be closed.
Please abstain from temporarily closing a pull request while revising the templates. Instead, leave a comment on the PR describing what still needs work, or add "[WIP]" to the PR title. Only close your pull request if you're sure you don't want your changes to be included. Please abstain from temporarily closing a pull request while revising the templates. Instead, leave a comment on the PR describing what still needs work, [mark it as a draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft), or add "[WIP]" to the PR title. Only close your pull request if you're sure you don't want your changes to be included.
#### Publishing the package #### Publishing the package
Once the reviewers have merged the pull request, our [build server](http://build.voidlinux.org) is automatically triggered and builds Once the reviewers have merged the pull request, our [build server](http://build.voidlinux.org) is automatically triggered and builds
all packages in the pull request for all supported platforms. Upon completion, the packages are available to all Void Linux users. all packages in the pull request for all supported platforms. Upon completion, the packages are available to all Void Linux users.
## Testing Pull Requests
While it is the responsibility of the PR creator to test changes before sending it, one person can't test all configuration options, usecases, hardware, etc.
Testing new package submissions and updates is always helpful, and is a great way to get started with contributing.
First, [clone the repository](https://github.com/void-linux/void-packages#quick-start) if you haven't done so already.
Then check out the pull request, either with `github-cli`:
$ gh pr checkout <number>
Or with `git`:
If your local void-packages repository is cloned from your fork, you may need to add the main repository as a remote first:
$ git remote add upstream https://github.com/void-linux/void-packages.git
Then fetch and check out the PR (replacing `<remote>` with either `origin` or `upstream`):
$ git fetch <remote> pull/<number>/head:<branch-name>
$ git checkout <branch-name>
Then [build and install](https://github.com/void-linux/void-packages#building-packages) the package and test its functionality.

View file

@ -6,7 +6,6 @@ packages for XBPS, the `Void Linux` native packaging system.
*Table of Contents* *Table of Contents*
* [Introduction](#Introduction) * [Introduction](#Introduction)
* [Quality Requirements](#quality_requirements)
* [Package build phases](#buildphase) * [Package build phases](#buildphase)
* [Package naming conventions](#namingconventions) * [Package naming conventions](#namingconventions)
* [Libraries](#libs) * [Libraries](#libs)
@ -62,6 +61,7 @@ packages for XBPS, the `Void Linux` native packaging system.
* [kernel-hooks](#triggers_kernel_hooks) * [kernel-hooks](#triggers_kernel_hooks)
* [mimedb](#triggers_mimedb) * [mimedb](#triggers_mimedb)
* [mkdirs](#triggers_mkdirs) * [mkdirs](#triggers_mkdirs)
* [openjdk-profile](#triggers_openjdk_profile)
* [pango-modules](#triggers_pango_module) * [pango-modules](#triggers_pango_module)
* [pycompile](#triggers_pycompile) * [pycompile](#triggers_pycompile)
* [register-shell](#triggers_register_shell) * [register-shell](#triggers_register_shell)
@ -123,38 +123,6 @@ If everything went fine after running
a binary package named `foo-1.0_1.<arch>.xbps` will be generated in the local repository a binary package named `foo-1.0_1.<arch>.xbps` will be generated in the local repository
`hostdir/binpkgs`. `hostdir/binpkgs`.
<a id="quality_requirements"></a>
### Quality Requirements
To be included in the Void repository, software must meet at least one
of the following requirements. Exceptions to the list are possible,
and might be accepted, but are extremely unlikely. If you believe you have an
exception, start a PR and make an argument for why that particular piece of
software, while not meeting any of the following requirements, is a good candidate for
the Void packages system.
1. System: The software should be installed system-wide, not per-user.
1. Compiled: The software needs to be compiled before being used, even if it is
software that is not needed by the whole system.
1. Required: Another package either within the repository or pending inclusion
requires the package.
In particular, new themes are highly unlikely to be accepted. Simple shell
scripts are unlikely to be accepted unless they provide considerable value to a
broad user base. New fonts may be accepted if they provide value beyond
aesthetics (e.g. they contain glyphs for a script missing in already packaged
fonts).
Browser forks, including those based on Chromium and Firefox, are generally not
accepted. Such forks require heavy patching, maintenance and hours of build time.
Software need to be used in version announced by authors as ready to use by
the general public - usually called releases. Betas, arbitrary VCS revisions,
templates using tip of development branch taken at build time and releases
created by the package maintainer won't be accepted.
<a id="buildphase"></a> <a id="buildphase"></a>
### Package build phases ### Package build phases
@ -427,6 +395,8 @@ in this directory such as `${XBPS_BUILDDIR}/${wrksrc}`.
- `XBPS_RUST_TARGET` The target architecture triplet used by `rustc` and `cargo`. - `XBPS_RUST_TARGET` The target architecture triplet used by `rustc` and `cargo`.
- `XBPS_BUILD_ENVIRONMENT` Enables continuous-integration-specific operations. Set to `void-packages-ci` if in continuous integration.
<a id="available_vars"></a> <a id="available_vars"></a>
### Available variables ### Available variables
@ -463,7 +433,7 @@ the generated `binary packages` have been modified.
- `short_desc` A string with a brief description for this package. Max 72 chars. - `short_desc` A string with a brief description for this package. Max 72 chars.
- `version` A string with the package version. Must not contain dashes or underscore - `version` A string with the package version. Must not contain dashes or underscore
and at least one digit is required. Shell's variable substition usage is not allowed. and at least one digit is required. Shell's variable substitution usage is not allowed.
Neither `pkgname` or `version` should contain special characters which make it Neither `pkgname` or `version` should contain special characters which make it
necessary to quote them, so they shouldn't be quoted in the template. necessary to quote them, so they shouldn't be quoted in the template.
@ -542,13 +512,14 @@ can be specified by prepending a commercial at (@).
For tarballs you can find the contents checksum by using the command For tarballs you can find the contents checksum by using the command
`tar xf <tarball.ext> --to-stdout | sha256sum`. `tar xf <tarball.ext> --to-stdout | sha256sum`.
- `wrksrc` The directory name where the package sources are extracted, by default - `wrksrc` The directory name where the package sources are extracted, set to `${pkgname}-${version}`.
set to `${pkgname}-${version}`. If the top level directory of a package's `distfile` is different from the default, `wrksrc` must be set to the top level directory name inside the archive.
- `build_wrksrc` A directory relative to `${wrksrc}` that will be used when building the package. - `build_wrksrc` A directory relative to `${wrksrc}` that will be used when building the package.
- `create_wrksrc` Enable it to create the `${wrksrc}` directory. Required if a package - `create_wrksrc` Usually, after extracting, if there're multiple top-level
contains multiple `distfiles`. files and/or directories or when there're no directories at all, top-level files,
and directories will be wrapped inside one more layer of directory.
Set `create_wrksrc` to force this behaviour.
- `build_style` This specifies the `build method` for a package. Read below to know more - `build_style` This specifies the `build method` for a package. Read below to know more
about the available package `build methods` or effect of leaving this not set. about the available package `build methods` or effect of leaving this not set.
@ -577,10 +548,8 @@ build methods. Unset by default.
`${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile` `${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile`
build methods. Unset by default. build methods. Unset by default.
- `make_install_args` The arguments to be passed in to `${make_cmd}` at the `install-destdir` - `make_install_args` The arguments to be passed in to `${make_cmd}` at the `install`
phase if `${build_style}` is set to `configure`, `gnu-configure` or phase if `${build_style}` is set to `configure`, `gnu-configure` or `gnu-makefile` build methods.
`gnu-makefile` build methods. By default set to
`PREFIX=/usr DESTDIR=${DESTDIR}`.
- `make_build_target` The build target. If `${build_style}` is set to `configure`, `gnu-configure` - `make_build_target` The build target. If `${build_style}` is set to `configure`, `gnu-configure`
or `gnu-makefile`, this is the target passed to `${make_cmd}` in the build phase; or `gnu-makefile`, this is the target passed to `${make_cmd}` in the build phase;
@ -600,6 +569,9 @@ path of the Python wheel produced by the build phase that will be installed; whe
`python-pep517` build style will look for a wheel matching the package name and version in the `python-pep517` build style will look for a wheel matching the package name and version in the
current directory with respect to the install. current directory with respect to the install.
- `make_check_pre` The expression in front of `${make_cmd}`. This can be used for wrapper commands
or for setting environment variables for the check command. By default empty.
- `patch_args` The arguments to be passed in to the `patch(1)` command when applying - `patch_args` The arguments to be passed in to the `patch(1)` command when applying
patches to the package sources during `do_patch()`. Patches are stored in patches to the package sources during `do_patch()`. Patches are stored in
`srcpkgs/<pkgname>/patches` and must be in `-p1` format. By default set to `-Np1`. `srcpkgs/<pkgname>/patches` and must be in `-p1` format. By default set to `-Np1`.
@ -609,6 +581,11 @@ and `XBPS_MAKEJOBS` will be set to 1. If a package does not work well with `XBPS
but still has a mechanism to build in parallel, set `disable_parallel_build` and but still has a mechanism to build in parallel, set `disable_parallel_build` and
use `XBPS_ORIG_MAKEJOBS` (which holds the original value of `XBPS_MAKEJOBS`) in the template. use `XBPS_ORIG_MAKEJOBS` (which holds the original value of `XBPS_MAKEJOBS`) in the template.
- `disable_parallel_check` If set tests for the package won't be built and run in parallel
and `XBPS_MAKEJOBS` will be set to 1. If a package does not work well with `XBPS_MAKEJOBS`
but still has a mechanism to run checks in parallel, set `disable_parallel_check` and
use `XBPS_ORIG_MAKEJOBS` (which holds the original value of `XBPS_MAKEJOBS`) in the template.
- `make_check` Sets the cases in which the `check` phase is run. - `make_check` Sets the cases in which the `check` phase is run.
This option has to be accompanied by a comment explaining why the tests fail. This option has to be accompanied by a comment explaining why the tests fail.
Allowed values: Allowed values:
@ -653,7 +630,7 @@ debugging symbols. Files can be given by full path or by filename.
- `noshlibprovides` If set, the ELF binaries won't be inspected to collect the provided - `noshlibprovides` If set, the ELF binaries won't be inspected to collect the provided
sonames in shared libraries. sonames in shared libraries.
- `noverifyrdeps` If set, the ELF binaries and shared libaries won't be inspected to collect - `noverifyrdeps` If set, the ELF binaries and shared libraries won't be inspected to collect
their reverse dependencies. You need to specify all dependencies in the `depends` when you their reverse dependencies. You need to specify all dependencies in the `depends` when you
need to set this. need to set this.
@ -693,7 +670,7 @@ This appends to the generated file rather than replacing it.
- `nopie` Only needs to be set to something to make active, disables building the package with hardening - `nopie` Only needs to be set to something to make active, disables building the package with hardening
features (PIE, relro, etc). Not necessary for most packages. features (PIE, relro, etc). Not necessary for most packages.
- `nopie_files` White-space seperated list of ELF binaries that won't be checked - `nopie_files` White-space separated list of ELF binaries that won't be checked
for PIE. Files must be given by full path. for PIE. Files must be given by full path.
- `reverts` xbps supports a unique feature which allows to downgrade from broken - `reverts` xbps supports a unique feature which allows to downgrade from broken
@ -779,7 +756,7 @@ A special value `noarch` used to be available, but has since been removed.
So far, we have listed four types of `depends` variables: `hostmakedepends`, So far, we have listed four types of `depends` variables: `hostmakedepends`,
`makedepends`, `checkdepends` and `depends`. These different kinds of variables `makedepends`, `checkdepends` and `depends`. These different kinds of variables
are necessary because `xbps-src` supports cross compilation and to avoid are necessary because `xbps-src` supports cross compilation and to avoid
installing unecessary packages in the build environment. installing unnecessary packages in the build environment.
During a build process, there are programs that must be _run_ on the host, such During a build process, there are programs that must be _run_ on the host, such
as `yacc` or the C compiler. The packages that contain these programs should be as `yacc` or the C compiler. The packages that contain these programs should be
@ -1124,9 +1101,9 @@ Current working directory for functions is set as follows:
- For do_fetch, post_fetch: `XBPS_BUILDDIR`. - For do_fetch, post_fetch: `XBPS_BUILDDIR`.
- For do_extract, post_extract: `wrksrc`. - For do_extract through do_patch: `wrksrc`.
- For pre_patch through post_install: `build_wrksrc` - For post_patch through post_install: `build_wrksrc`
if it is defined, otherwise `wrksrc`. if it is defined, otherwise `wrksrc`.
<a id="build_options"></a> <a id="build_options"></a>
@ -1276,8 +1253,8 @@ declaring a virtual name and version in the `${provides}` template variable (e.g
specific provider can declare a dependency on the virtual package name with the prefix `virtual?` specific provider can declare a dependency on the virtual package name with the prefix `virtual?`
(e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any (e.g., `depends="virtual?vpkg-0.1_1"`). When a package is built by `xbps-src`, providers for any
virtual packages will be confirmed to exist and will be built if necessary. A map from virtual virtual packages will be confirmed to exist and will be built if necessary. A map from virtual
packages to their default providers is defined in `etc/default.virtual`. Individual mappings can be packages to their default providers is defined in `etc/defaults.virtual`. Individual mappings can be
overridden by local preferences in `etc/virtual`. Comments in `etc/default.virtual` provide more overridden by local preferences in `etc/virtual`. Comments in `etc/defaults.virtual` provide more
information on this map. information on this map.
<a id="install_remove_files"></a> <a id="install_remove_files"></a>
@ -1406,6 +1383,14 @@ If the service requires directories in parts of the system that are not generall
temporary filesystems. Then use the `make_dirs` variable in the template to create temporary filesystems. Then use the `make_dirs` variable in the template to create
those directories when the package is installed. those directories when the package is installed.
If the package installs a systemd service file or other unit, leave it in place as a
reference point so long as including it has no negative side effects.
Examples of when *not* to install systemd units:
1. When doing so changes runtime behavior of the packaged software.
2. When it is done via a compile time flag that also changes build dependencies.
<a id="32bit_pkgs"></a> <a id="32bit_pkgs"></a>
### 32bit packages ### 32bit packages
@ -1585,12 +1570,11 @@ recursively by the target python version. This differs from `pycompile_module` i
path may be specified, Example: `pycompile_dirs="usr/share/foo"`. path may be specified, Example: `pycompile_dirs="usr/share/foo"`.
- `python_version`: this variable expects the supported Python major version. - `python_version`: this variable expects the supported Python major version.
By default it's set to `2`. This variable is needed for multi-language In most cases version is inferred from shebang, install path or build style.
Only required for some multi-language
applications (e.g., the application is written in C while the command is applications (e.g., the application is written in C while the command is
written in Python) or just single Python file ones that live in `/usr/bin`. written in Python) or just single Python file ones that live in `/usr/bin`.
> NOTE: you need to define it *only* for non-Python modules.
Also, a set of useful variables are defined to use in the templates: Also, a set of useful variables are defined to use in the templates:
| Variable | Value | | Variable | Value |
@ -1628,6 +1612,7 @@ The following template variables influence how Go packages are built:
any go.mod files, `default` to use Go's default behavior, or anything any go.mod files, `default` to use Go's default behavior, or anything
accepted by `go build -mod MODE`. Defaults to `vendor` if there's accepted by `go build -mod MODE`. Defaults to `vendor` if there's
a vendor directory, otherwise `default`. a vendor directory, otherwise `default`.
- `go_ldflags`: Arguments to pass to the linking steps of go tool.
The following environment variables influence how Go packages are built: The following environment variables influence how Go packages are built:
@ -1997,6 +1982,13 @@ During removal it will delete the directory using `rmdir`.
To include this trigger use the `make_dirs` variable, as the trigger won't do anything To include this trigger use the `make_dirs` variable, as the trigger won't do anything
unless it is defined. unless it is defined.
<a id="triggers_openjdk_profile"></a>
#### openjdk-profile
The openjdk-profile trigger is responsible for creating an entry in /etc/profile.d that
sets the `JAVA_HOME` environment variable to the currently-selected alternative for
`/usr/bin/java` on installation. This trigger must be manually requested.
<a id="triggers_pango_module"></a> <a id="triggers_pango_module"></a>
#### pango-modules #### pango-modules

View file

@ -3,3 +3,4 @@ if [ "$CROSS_BUILD" ]; then
else else
export WX_CONFIG=/usr/bin/wx-config-gtk3 export WX_CONFIG=/usr/bin/wx-config-gtk3
fi fi
configure_args+=" -DwxWidgets_CONFIG_EXECUTABLE=${WX_CONFIG} "

View file

@ -0,0 +1,16 @@
# fix building non-pure-python modules on cross
if [ -n "$CROSS_BUILD" ]; then
export PYPREFIX="$XBPS_CROSS_BASE"
export CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
export LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
export CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
export LDSHARED="${CC} -shared $LDFLAGS"
export PYTHON_CONFIG="${XBPS_CROSS_BASE}/usr/bin/python3-config"
export PYTHONPATH="${XBPS_CROSS_BASE}/${py3_lib}"
for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
[ -f "$f" ] || continue
f=${f##*/}
_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
done
[ -n "$_PYTHON_SYSCONFIGDATA_NAME" ] && export _PYTHON_SYSCONFIGDATA_NAME
fi

View file

@ -3,24 +3,24 @@
# #
do_build() { do_build() {
: ${make_cmd:=cargo} : ${make_cmd:=cargo auditable}
${make_cmd} build --release --target ${RUST_TARGET} ${configure_args} ${make_cmd} build --release --target ${RUST_TARGET} ${configure_args}
} }
do_check() { do_check() {
: ${make_cmd:=cargo} : ${make_cmd:=cargo auditable}
${make_cmd} test --release --target ${RUST_TARGET} ${configure_args} \ ${make_check_pre} ${make_cmd} test --release --target ${RUST_TARGET} ${configure_args} \
${make_check_args} ${make_check_args}
} }
do_install() { do_install() {
: ${make_cmd:=cargo} : ${make_cmd:=cargo auditable}
: ${make_install_args:=--path .} : ${make_install_args:=--path .}
${make_cmd} install --target ${RUST_TARGET} --root="${DESTDIR}/usr" \ ${make_cmd} install --target ${RUST_TARGET} --root="${DESTDIR}/usr" \
--locked ${configure_args} ${make_install_args} --offline --locked ${configure_args} ${make_install_args}
rm -f "${DESTDIR}"/usr/.crates.toml rm -f "${DESTDIR}"/usr/.crates.toml
rm -f "${DESTDIR}"/usr/.crates2.json rm -f "${DESTDIR}"/usr/.crates2.json

View file

@ -54,6 +54,14 @@ _EOF
cmake_args+=" -DCMAKE_INSTALL_PREFIX=/usr" cmake_args+=" -DCMAKE_INSTALL_PREFIX=/usr"
cmake_args+=" -DCMAKE_BUILD_TYPE=None" cmake_args+=" -DCMAKE_BUILD_TYPE=None"
cmake_args+=" -DCMAKE_INSTALL_LIBDIR=lib${XBPS_TARGET_WORDSIZE}" cmake_args+=" -DCMAKE_INSTALL_LIBDIR=lib${XBPS_TARGET_WORDSIZE}"
cmake_args+=" -DCMAKE_INSTALL_SYSCONFDIR=/etc"
if [ "$CROSS_BUILD" ]; then
cmake_args+=" -DQT_HOST_PATH=/usr"
# QT_HOST_PATH isn't enough in my system,
# which have binfmts support on and off
cmake_args+=" -DQT_HOST_PATH_CMAKE_DIR=/usr/lib/cmake"
fi
if [[ $build_helper = *"qemu"* ]]; then if [[ $build_helper = *"qemu"* ]]; then
echo "SET(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static)" \ echo "SET(CMAKE_CROSSCOMPILING_EMULATOR /usr/bin/qemu-${XBPS_TARGET_QEMU_MACHINE}-static)" \
@ -116,7 +124,7 @@ do_check() {
: ${make_check_target:=test} : ${make_check_target:=test}
${make_cmd} ${make_check_args} ${make_check_target} ${make_check_pre} ${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
} }
do_install() { do_install() {

View file

@ -29,7 +29,7 @@ do_check() {
: ${make_cmd:=make} : ${make_cmd:=make}
: ${make_check_target:=check} : ${make_check_target:=check}
${make_cmd} ${make_check_args} ${make_check_target} ${make_check_pre} ${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
} }
do_install() { do_install() {

View file

@ -30,7 +30,7 @@ do_check() {
: ${make_cmd:=make} : ${make_cmd:=make}
: ${make_check_target:=check} : ${make_check_target:=check}
${make_cmd} ${make_check_args} ${make_check_target} ${make_check_pre} ${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
} }
do_install() { do_install() {

View file

@ -9,8 +9,10 @@ do_build() {
CC="$CC" CXX="$CXX" LD="$LD" AR="$AR" RANLIB="$RANLIB" \ CC="$CC" CXX="$CXX" LD="$LD" AR="$AR" RANLIB="$RANLIB" \
CPP="$CPP" AS="$AS" OBJCOPY="$OBJCOPY" OBJDUMP="$OBJDUMP" \ CPP="$CPP" AS="$AS" OBJCOPY="$OBJCOPY" OBJDUMP="$OBJDUMP" \
CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \ CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" \
PREFIX=/usr prefix=/usr \
${makejobs} ${make_build_args} ${make_build_target} ${makejobs} ${make_build_args} ${make_build_target}
else else
export PREFIX=/usr prefix=/usr
${make_cmd} ${makejobs} ${make_build_args} ${make_build_target} ${make_cmd} ${makejobs} ${make_build_args} ${make_build_target}
fi fi
} }
@ -30,12 +32,12 @@ do_check() {
: ${make_cmd:=make} : ${make_cmd:=make}
: ${make_check_target:=check} : ${make_check_target:=check}
${make_cmd} ${make_check_args} ${make_check_target} ${make_check_pre} ${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
} }
do_install() { do_install() {
: ${make_cmd:=make} : ${make_cmd:=make}
: ${make_install_target:=install} : ${make_install_target:=install}
${make_cmd} STRIP=true PREFIX=/usr DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target} ${make_cmd} STRIP=true PREFIX=/usr prefix=/usr DESTDIR=${DESTDIR} ${make_install_args} ${make_install_target}
} }

View file

@ -22,6 +22,13 @@ do_configure() {
} }
do_build() { do_build() {
# remove -s and -w from go_ldflags, we should let xbps-src strip binaries itself
for wd in $go_ldflags; do
if [ "$wd" == "-s" ] || [ "$wd" == "-w" ]; then
msg_error "$pkgname: remove -s and -w from go_ldflags\n"
fi
done
go_package=${go_package:-$go_import_path} go_package=${go_package:-$go_import_path}
# Build using Go modules if there's a go.mod file # Build using Go modules if there's a go.mod file
if [ "${go_mod_mode}" != "off" ] && [ -f go.mod ]; then if [ "${go_mod_mode}" != "off" ] && [ -f go.mod ]; then

View file

@ -103,7 +103,7 @@ do_configure() {
export AR="gcc-ar" export AR="gcc-ar"
# unbuffered output for continuous logging # unbuffered output for continuous logging
PYTHONUNBUFFERED=1 ${meson_cmd} \ PYTHONUNBUFFERED=1 ${meson_cmd} setup \
--prefix=/usr \ --prefix=/usr \
--libdir=/usr/lib${XBPS_TARGET_WORDSIZE} \ --libdir=/usr/lib${XBPS_TARGET_WORDSIZE} \
--libexecdir=/usr/libexec \ --libexecdir=/usr/libexec \
@ -138,7 +138,7 @@ do_check() {
: ${make_check_target:=test} : ${make_check_target:=test}
: ${meson_builddir:=build} : ${meson_builddir:=build}
${make_cmd} -C ${meson_builddir} ${makejobs} ${make_check_args} ${make_check_target} ${make_check_pre} ${make_cmd} -C ${meson_builddir} ${makejobs} ${make_check_args} ${make_check_target}
} }
do_install() { do_install() {

View file

@ -41,7 +41,7 @@ do_check() {
if [ ! -x ./Build ]; then if [ ! -x ./Build ]; then
msg_error "$pkgver: cannot find ./Build script!\n" msg_error "$pkgver: cannot find ./Build script!\n"
fi fi
./Build test ${make_check_pre} ./Build test
} }
do_install() { do_install() {

View file

@ -79,7 +79,7 @@ do_check() {
: ${make_cmd:=make} : ${make_cmd:=make}
: ${make_check_target:=test} : ${make_check_target:=test}
${make_cmd} ${make_check_args} ${make_check_target} ${make_check_pre} ${make_cmd} ${makejobs} ${make_check_args} ${make_check_target}
} }
do_install() { do_install() {

View file

@ -49,7 +49,7 @@ do_check() {
fi fi
fi fi
python${pyver} setup.py ${make_check_target:-test} ${make_check_args} ${make_check_pre} python${pyver} setup.py ${make_check_target:-test} ${make_check_args}
rm build rm build
done done
} }

View file

@ -3,30 +3,18 @@
# #
do_build() { do_build() {
if [ -n "$CROSS_BUILD" ]; then python3 setup.py build ${make_build_args}
PYPREFIX="$XBPS_CROSS_BASE"
CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
LDSHARED="${CC} -shared $LDFLAGS"
for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
f=${f##*/}
_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
done
env CC="$CC" LDSHARED="$LDSHARED" \
PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib} \
_PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME" \
LDFLAGS="$LDFLAGS" python3 setup.py build ${make_build_args}
else
python3 setup.py build ${make_build_args}
fi
} }
do_check() { do_check() {
local testjobs
if python3 -c 'import pytest' >/dev/null 2>&1; then if python3 -c 'import pytest' >/dev/null 2>&1; then
if python3 -c 'import xdist' >/dev/null 2>&1; then
testjobs="-n $XBPS_MAKEJOBS"
fi
PYTHONPATH="$(cd build/lib* && pwd)" \ PYTHONPATH="$(cd build/lib* && pwd)" \
python3 -m pytest ${make_check_args} ${make_check_target} ${make_check_pre} \
python3 -m pytest ${testjobs} ${make_check_args} ${make_check_target}
else else
# Fall back to deprecated setup.py test orchestration without pytest # Fall back to deprecated setup.py test orchestration without pytest
if [ -z "$make_check_target" ]; then if [ -z "$make_check_target" ]; then
@ -37,28 +25,10 @@ do_check() {
fi fi
: ${make_check_target:=test} : ${make_check_target:=test}
python3 setup.py ${make_check_target} ${make_check_args} ${make_check_pre} python3 setup.py ${make_check_target} ${make_check_args}
fi fi
} }
do_install() { do_install() {
if [ -n "$CROSS_BUILD" ]; then python3 setup.py install --prefix=/usr --root=${DESTDIR} ${make_install_args}
PYPREFIX="$XBPS_CROSS_BASE"
CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc} -I${XBPS_CROSS_BASE}/usr/include"
LDFLAGS+=" -L${XBPS_CROSS_BASE}/${py3_lib} -L${XBPS_CROSS_BASE}/usr/lib"
CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS"
LDSHARED="${CC} -shared $LDFLAGS"
for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do
f=${f##*/}
_PYTHON_SYSCONFIGDATA_NAME=${f%.py}
done
env CC="$CC" LDSHARED="$LDSHARED" \
PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \
PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib} \
_PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME" \
LDFLAGS="$LDFLAGS" python3 setup.py \
install --prefix=/usr --root=${DESTDIR} ${make_install_args}
else
python3 setup.py install --prefix=/usr --root=${DESTDIR} ${make_install_args}
fi
} }

View file

@ -3,31 +3,31 @@
# #
do_build() { do_build() {
# No PEP517 build tool currently supports compiled extensions
# Thus, there is no need to accommodate cross compilation here
: ${make_build_target:=.} : ${make_build_target:=.}
: ${make_build_args:=--no-isolation --wheel}
mkdir -p build python3 -m build ${make_build_args} ${make_build_target}
TMPDIR=build python3 -m pip wheel --no-deps --use-pep517 --no-clean \
--no-build-isolation ${make_build_args} ${make_build_target}
} }
do_check() { do_check() {
local testjobs
if python3 -c 'import pytest' >/dev/null 2>&1; then if python3 -c 'import pytest' >/dev/null 2>&1; then
python3 -m pytest ${make_check_args} ${make_check_target} if python3 -c 'import xdist' >/dev/null 2>&1; then
testjobs="-n $XBPS_MAKEJOBS"
fi
${make_check_pre} python3 -m pytest ${testjobs} ${make_check_args} ${make_check_target}
else else
msg_warn "Unable to determine tests for PEP517 Python templates" msg_warn "Unable to determine tests for PEP517 Python templates\n"
return 0 return 0
fi fi
} }
do_install() { do_install() {
# As with do_build, no need to accommodate cross compilation here if [ -z "${make_install_target}" ]; then
: ${make_install_target:=${pkgname#python3-}-${version}-*-*-*.whl} # Default wheel name normalizes hyphens to underscores
local wheelbase="${pkgname#python3-}"
make_install_target="dist/${wheelbase//-/_}-${version}-*-*-*.whl"
fi
# If do_build was overridden, make sure the TMPDIR exists python3 -m installer --destdir ${DESTDIR} \
mkdir -p build ${make_install_args} ${make_install_target}
TMPDIR=build python3 -m pip install --use-pep517 --prefix /usr \
--root ${DESTDIR} --no-deps --no-build-isolation \
--no-clean ${make_install_args} ${make_install_target}
} }

View file

@ -1,17 +1,12 @@
# #
# This helper is for templates using Qt4/Qt5 qmake. # This helper is for templates using Qt5/Qt6 qmake.
# #
do_configure() { do_configure() {
local qmake local qmake
local qmake_args local qmake_args
if [ -x "/usr/lib/qt5/bin/qmake" ]; then if [ -x "/usr/lib/qt5/bin/qmake" ]; then
# Qt5 qmake
qmake="/usr/lib/qt5/bin/qmake" qmake="/usr/lib/qt5/bin/qmake"
fi fi
if [ -x "/usr/lib/qt/bin/qmake" ]; then
# Qt4 qmake
qmake="/usr/lib/qt/bin/qmake"
fi
if [ -z "${qmake}" ]; then if [ -z "${qmake}" ]; then
msg_error "${pkgver}: Could not find qmake - missing in hostmakedepends?\n" msg_error "${pkgver}: Could not find qmake - missing in hostmakedepends?\n"
fi fi

View file

@ -3,7 +3,7 @@
# #
do_check() { do_check() {
RAKULIB=lib prove -r -e raku t/ RAKULIB=lib ${make_check_pre} prove -r -e raku t/
} }
do_install() { do_install() {

View file

@ -9,18 +9,27 @@ do_build() {
CXXFLAGS="$CXXFLAGS" LINKFLAGS="$LDFLAGS" \ CXXFLAGS="$CXXFLAGS" LINKFLAGS="$LDFLAGS" \
cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" \ cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" \
RANLIB="$RANLIB" ranlib="$RANLIB" \ RANLIB="$RANLIB" ranlib="$RANLIB" \
prefix=/usr destdir=${DESTDIR} DESTDIR=${DESTDIR} \ prefix=/usr \
${scons_use_destdir:+DESTDIR="${DESTDIR}"} \
${scons_use_destdir:+destdir="${DESTDIR}"} \
${make_build_args} ${make_build_target} ${make_build_args} ${make_build_target}
} }
do_install() { do_install() {
: ${make_cmd:=scons} : ${make_cmd:=scons}
: ${make_install_target:=install} : ${make_install_target:=install}
local _sandbox=
if [ -z "$scons_use_destdir" ]; then _sandbox=yes ; fi
${make_cmd} ${makejobs} CC=$CC CXX=$CXX CCFLAGS="$CFLAGS" \ ${make_cmd} ${makejobs} CC=$CC CXX=$CXX CCFLAGS="$CFLAGS" \
cc=$CC cxx=$CXX ccflags="$CFLAGS" \ cc=$CC cxx=$CXX ccflags="$CFLAGS" \
CXXFLAGS="$CXXFLAGS" LINKFLAGS="$LDFLAGS" \ CXXFLAGS="$CXXFLAGS" LINKFLAGS="$LDFLAGS" \
cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" \ cxxflags="$CXXFLAGS" linkflags="$LDFLAGS" \
RANLIB="$RANLIB" ranlib="$RANLIB" \ RANLIB="$RANLIB" ranlib="$RANLIB" \
prefix=/usr destdir=${DESTDIR} DESTDIR=${DESTDIR} \ prefix=/usr \
${scons_use_destdir:+DESTDIR="${DESTDIR}"} \
${scons_use_destdir:+destdir="${DESTDIR}"} \
${_sandbox:+--install-sandbox="${DESTDIR}"} \
${make_install_args} ${make_install_target} ${make_install_args} ${make_install_target}
} }

View file

@ -5,7 +5,6 @@
# required variables # required variables
# #
# build_style=slashpackage # build_style=slashpackage
# wrksrc=<category>
# build_wrksrc=${pkgname}-${version} # build_wrksrc=${pkgname}-${version}
# distfiles=<download link> # distfiles=<download link>
# #
@ -15,7 +14,6 @@
# pkgname=daemontools # pkgname=daemontools
# version=0.76 # version=0.76
# revision=1 # revision=1
# wrksrc=admin
# build_wrksrc=${pkgname}-${version} # build_wrksrc=${pkgname}-${version}
# build_style=slashpackage # build_style=slashpackage
# short_desc="A collection of tools for managing UNIX services" # short_desc="A collection of tools for managing UNIX services"

View file

@ -1,8 +1,10 @@
makedepends+=" R" makedepends+=" R"
depends+=" R" depends+=" R"
wrksrc="${XBPS_BUILDDIR}/${pkgname#R-cran-}" create_wrksrc=required
build_wrksrc="${pkgname#R-cran-}"
# default to cran # default to cran
if [ -z "$distfiles" ]; then if [ -z "$distfiles" ]; then
distfiles="https://cran.r-project.org/src/contrib/${pkgname#R-cran-}_${version//r/-}.tar.gz" distfiles="https://cran.r-project.org/src/contrib/${pkgname#R-cran-}_${version//r/-}.tar.gz
https://cran.r-project.org/src/contrib/Archive/${pkgname#R-cran-}/${pkgname#R-cran-}_${version//r/-}.tar.gz"
fi fi

View file

@ -1,5 +1,9 @@
hostmakedepends+=" cargo" hostmakedepends+=" cargo"
if ! [[ "$pkgname" =~ ^cargo-auditable(-bootstrap)?$ ]]; then
hostmakedepends+=" cargo-auditable"
fi
if [ "$CROSS_BUILD" ]; then if [ "$CROSS_BUILD" ]; then
makedepends+=" rust-std" makedepends+=" rust-std"
fi fi

View file

@ -43,3 +43,8 @@ case "$XBPS_TARGET_MACHINE" in
*-musl) export GOCACHE="${XBPS_HOSTDIR}/gocache-muslc" ;; *-musl) export GOCACHE="${XBPS_HOSTDIR}/gocache-muslc" ;;
*) export GOCACHE="${XBPS_HOSTDIR}/gocache-glibc" ;; *) export GOCACHE="${XBPS_HOSTDIR}/gocache-glibc" ;;
esac esac
case "$XBPS_TARGET_MACHINE" in
# https://go.dev/cl/421935
i686*) export CGO_CFLAGS="$CGO_CFLAGS -fno-stack-protector" ;;
esac

View file

@ -1,2 +1,3 @@
lib32disabled=yes lib32disabled=yes
makedepends+=" python3" makedepends+=" python3"
build_helper+=" python3"

View file

@ -1,2 +1,3 @@
hostmakedepends+=" python3-pip" hostmakedepends+=" python3-build python3-installer"
lib32disabled=yes lib32disabled=yes
build_helper+=" python3"

View file

@ -2,4 +2,3 @@
hostmakedepends+=" rsync" hostmakedepends+=" rsync"
# python_version isn't needed for everything either # python_version isn't needed for everything either
python_version=3 python_version=3
create_wrksrc=yes

View file

@ -1,6 +1,5 @@
lib32disabled=yes lib32disabled=yes
nopie=yes nopie=yes
create_wrksrc=yes
nostrip_files+=" libcaf_single.a libgcc.a libgcov.a libgcc_eh.a nostrip_files+=" libcaf_single.a libgcc.a libgcov.a libgcc_eh.a
libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a" libgnarl_pic.a libgnarl.a libgnat_pic.a libgnat.a libgmem.a"

View file

@ -1,2 +1,16 @@
CFLAGS="${CFLAGS} -fdebug-prefix-map=$wrksrc=." local _wrksrc="$wrksrc${build_wrksrc:+/$build_wrksrc}"
CXXFLAGS="${CXXFLAGS} -fdebug-prefix-map=$wrksrc=." case "$build_style" in
cmake)
CFLAGS="${CFLAGS} -fdebug-prefix-map=$_wrksrc/${cmake_builddir:-build}=."
CXXFLAGS="${CXXFLAGS} -fdebug-prefix-map=$_wrksrc/${cmake_builddir:-build}=."
;;
meson)
CFLAGS="${CFLAGS} -fdebug-prefix-map=$_wrksrc/${meson_builddir:-build}=."
CXXFLAGS="${CXXFLAGS} -fdebug-prefix-map=$_wrksrc/${meson_builddir:-build}=."
;;
*)
CFLAGS="${CFLAGS} -fdebug-prefix-map=$_wrksrc=."
CXXFLAGS="${CXXFLAGS} -fdebug-prefix-map=$_wrksrc=."
esac
unset _wrksrc

View file

@ -7,7 +7,7 @@ py2_lib="usr/lib/python${py2_ver}"
py2_sitelib="${py2_lib}/site-packages" py2_sitelib="${py2_lib}/site-packages"
py2_inc="usr/include/python${py2_ver}" py2_inc="usr/include/python${py2_ver}"
py3_ver="3.10" py3_ver="3.11"
py3_abiver="" py3_abiver=""
py3_lib="usr/lib/python${py3_ver}" py3_lib="usr/lib/python${py3_ver}"
py3_sitelib="${py3_lib}/site-packages" py3_sitelib="${py3_lib}/site-packages"

View file

@ -7,17 +7,24 @@ unset -v archs distfiles checksum build_style build_helper nocross broken
unset -v configure_script configure_args wrksrc build_wrksrc create_wrksrc unset -v configure_script configure_args wrksrc build_wrksrc create_wrksrc
unset -v make_build_args make_check_args make_install_args unset -v make_build_args make_check_args make_install_args
unset -v make_build_target make_check_target make_install_target unset -v make_build_target make_check_target make_install_target
unset -v make_cmd meson_cmd gem_cmd fetch_cmd unset -v make_cmd meson_cmd gem_cmd fetch_cmd make_check_pre
unset -v python_version stackage unset -v python_version stackage
unset -v cmake_builddir meson_builddir unset -v cmake_builddir meson_builddir
unset -v meson_crossfile unset -v meson_crossfile
unset -v gemspec unset -v gemspec
unset -v go_import_path go_package go_mod_mode unset -v go_import_path go_package go_mod_mode
unset -v patch_args disable_parallel_build keep_libtool_archives make_use_env unset -v patch_args disable_parallel_build disable_parallel_check
unset -v keep_libtool_archives make_use_env
unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted unset -v reverts subpackages makedepends hostmakedepends checkdepends depends restricted
unset -v nopie build_options build_options_default bootstrap repository reverts unset -v nopie build_options build_options_default bootstrap repository reverts
unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH unset -v CFLAGS CXXFLAGS FFLAGS CPPFLAGS LDFLAGS LD_LIBRARY_PATH
unset -v CC CXX CPP GCC LD AR AS RANLIB NM OBJDUMP OBJCOPY STRIP READELF PKG_CONFIG unset -v CC CXX CPP GCC LD AR AS RANLIB NM OBJDUMP OBJCOPY STRIP READELF PKG_CONFIG
unset -v CMAKE_GENERATOR
# build-helper python3
unset -v PYPREFIX LDSHARED PYTHON_CONFIG PYTHONPATH _PYTHON_SYSCONFIGDATA_NAME
# unset all $build_option_ variables
unset -v "${!build_option_@}"
# hooks/do-extract/00-distfiles # hooks/do-extract/00-distfiles
unset -v skip_extraction unset -v skip_extraction

View file

@ -57,8 +57,13 @@ vsed() {
newdigest="$($XBPS_DIGEST_CMD "$f")" newdigest="$($XBPS_DIGEST_CMD "$f")"
newdigest="${newdigest%% *}" newdigest="${newdigest%% *}"
msgfunc=msg_warn
if [ -n "$XBPS_STRICT" ]; then
msgfunc=msg_error
fi
if [ "$olddigest" = "$newdigest" ]; then if [ "$olddigest" = "$newdigest" ]; then
msg_warn "$pkgver: vsed: regex \"$rx\" didn't change file \"$f\"\n" $msgfunc "$pkgver: vsed: regex \"$rx\" didn't change file \"$f\"\n"
fi fi
olddigest="${newdigest}" olddigest="${newdigest}"
done done

View file

@ -3,7 +3,7 @@
hook() { hook() {
local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version" local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
local f j curfile found extractdir local f j curfile found extractdir innerdir num_dirs
local TAR_CMD local TAR_CMD
if [ -z "$distfiles" -a -z "$checksum" ]; then if [ -z "$distfiles" -a -z "$checksum" ]; then
@ -20,10 +20,6 @@ hook() {
fi fi
done done
if [ -n "$create_wrksrc" ]; then
mkdir -p "${wrksrc}" || msg_error "$pkgver: failed to create wrksrc.\n"
fi
# Disable trap on ERR; the code is smart enough to report errors and abort. # Disable trap on ERR; the code is smart enough to report errors and abort.
trap - ERR trap - ERR
@ -31,6 +27,9 @@ hook() {
[ -z "$TAR_CMD" ] && TAR_CMD="$(command -v tar)" [ -z "$TAR_CMD" ] && TAR_CMD="$(command -v tar)"
[ -z "$TAR_CMD" ] && msg_error "xbps-src: no suitable tar cmd (bsdtar, tar)\n" [ -z "$TAR_CMD" ] && msg_error "xbps-src: no suitable tar cmd (bsdtar, tar)\n"
extractdir=$(mktemp -d "$XBPS_BUILDDIR/.extractdir-XXXXXXX") ||
msg_error "Cannot create temporary dir for do-extract\n"
msg_normal "$pkgver: extracting distfile(s), please wait...\n" msg_normal "$pkgver: extracting distfile(s), please wait...\n"
for f in ${distfiles}; do for f in ${distfiles}; do
@ -73,12 +72,6 @@ hook() {
*) msg_error "$pkgver: unknown distfile suffix for $curfile.\n";; *) msg_error "$pkgver: unknown distfile suffix for $curfile.\n";;
esac esac
if [ -n "$create_wrksrc" ]; then
extractdir="$wrksrc"
else
extractdir="$XBPS_BUILDDIR"
fi
case ${cursufx} in case ${cursufx} in
tar|txz|tbz|tlz|tgz|crate) tar|txz|tbz|tlz|tgz|crate)
$TAR_CMD -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C "$extractdir" $TAR_CMD -x --no-same-permissions --no-same-owner -f $srcdir/$curfile -C "$extractdir"
@ -128,11 +121,7 @@ hook() {
fi fi
;; ;;
txt) txt)
if [ "$create_wrksrc" ]; then cp -f $srcdir/$curfile "$extractdir"
cp -f $srcdir/$curfile "$extractdir"
else
msg_error "$pkgname: ${curfile##*.} files can only be extracted when create_wrksrc is set\n"
fi
;; ;;
7z) 7z)
if command -v 7z &>/dev/null; then if command -v 7z &>/dev/null; then
@ -150,16 +139,10 @@ hook() {
fi fi
;; ;;
gem) gem)
case "$TAR_CMD" in innerdir="$extractdir/${wrksrc##*/}"
*bsdtar) mkdir -p "$innerdir"
$TAR_CMD -xOf $srcdir/$curfile data.tar.gz | \ $TAR_CMD -xOf $srcdir/$curfile data.tar.gz |
$TAR_CMD -xz -C "$extractdir" -s ",^,${wrksrc##*/}/," -f - $TAR_CMD -xz -C "$innerdir" -f -
;;
*)
$TAR_CMD -xOf $srcdir/$curfile data.tar.gz | \
$TAR_CMD -xz -C "$extractdir" --transform="s,^,${wrksrc##*/}/,"
;;
esac
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n" msg_error "$pkgver: extracting $curfile into $XBPS_BUILDDIR.\n"
fi fi
@ -169,4 +152,31 @@ hook() {
;; ;;
esac esac
done done
# find "$extractdir" -mindepth 1 -maxdepth 1 -printf '1\n' | wc -l
# However, it requires GNU's find
num_dirs=0
for f in "$extractdir"/* "$extractdir"/.*; do
if [ -e "$f" ] || [ -L "$f" ]; then
case "$f" in
*/. | */..) ;;
*)
innerdir="$f"
num_dirs=$(( num_dirs + 1 ))
;;
esac
fi
done
rm -rf "$wrksrc"
if [ "$num_dirs" = 1 ] && [ -d "$innerdir" ] && [ -z "$create_wrksrc" ]; then
# rename the subdirectory (top-level of distfiles) to $wrksrc
mv "$innerdir" "$wrksrc" &&
rmdir "$extractdir"
elif [ "$num_dirs" -gt 1 ] || [ -n "$create_wrksrc" ]; then
# rename the tmpdir to wrksrc
mv "$extractdir" "$wrksrc"
else
mkdir -p "$wrksrc"
fi ||
msg_error "$pkgver: failed to move sources to $wrksrc\n"
} }

View file

@ -2,24 +2,6 @@
# the $distfiles variable and then verifies its sha256 checksum comparing # the $distfiles variable and then verifies its sha256 checksum comparing
# its value with the one stored in the $checksum variable. # its value with the one stored in the $checksum variable.
# Get the checksum for $curfile at index $dfcount
get_cksum() {
local curfile="$1" dfcount="$2" ckcount cksum i
ckcount=0
cksum=0
for i in ${checksum}; do
if [ $dfcount -eq $ckcount -a -n "$i" ]; then
cksum=$i
fi
ckcount=$((ckcount + 1))
done
if [ -z "$cksum" ]; then
msg_error "$pkgver: cannot find checksum for $curfile.\n"
fi
echo "$cksum"
}
# Return the checksum of the contents of a tarball # Return the checksum of the contents of a tarball
contents_cksum() { contents_cksum() {
local curfile="$1" cursufx cksum local curfile="$1" cursufx cksum
@ -110,9 +92,7 @@ contents_cksum() {
# Verify the checksum for $curfile stored at $distfile and index $dfcount # Verify the checksum for $curfile stored at $distfile and index $dfcount
verify_cksum() { verify_cksum() {
local curfile="$1" distfile="$2" dfcount="$3" filesum cksum local curfile="$1" distfile="$2" cksum="$3" filesum
cksum=$(get_cksum $curfile $dfcount)
# If the checksum starts with an commercial at (@) it is the contents checksum # If the checksum starts with an commercial at (@) it is the contents checksum
if [ "${cksum:0:1}" = "@" ]; then if [ "${cksum:0:1}" = "@" ]; then
@ -121,7 +101,7 @@ verify_cksum() {
filesum=$(contents_cksum "$curfile") filesum=$(contents_cksum "$curfile")
if [ "${cksum}" != "$filesum" ]; then if [ "${cksum}" != "$filesum" ]; then
echo echo
msg_red "SHA256 mismatch for '$curfile:'\n@$filesum\n" msg_red "SHA256 mismatch for '${curfile}:'\n@${filesum}\n"
errors=$((errors + 1)) errors=$((errors + 1))
else else
msg_normal_append "OK.\n" msg_normal_append "OK.\n"
@ -131,7 +111,7 @@ verify_cksum() {
filesum=$(${XBPS_DIGEST_CMD} "$distfile") filesum=$(${XBPS_DIGEST_CMD} "$distfile")
if [ "$cksum" != "$filesum" ]; then if [ "$cksum" != "$filesum" ]; then
echo echo
msg_red "SHA256 mismatch for '$curfile:'\n$filesum\n" msg_red "SHA256 mismatch for '${curfile}:'\n${filesum}\n"
errors=$((errors + 1)) errors=$((errors + 1))
else else
if [ ! -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" ]; then if [ ! -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" ]; then
@ -145,22 +125,20 @@ verify_cksum() {
# Link an existing cksum $distfile for $curfile at index $dfcount # Link an existing cksum $distfile for $curfile at index $dfcount
link_cksum() { link_cksum() {
local curfile="$1" distfile="$2" dfcount="$3" filesum cksum local curfile="$1" distfile="$2" cksum="$3"
cksum=$(get_cksum $curfile $dfcount)
if [ -n "$cksum" -a -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" ]; then if [ -n "$cksum" -a -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" ]; then
ln -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" "$distfile" ln -f "$XBPS_SRCDISTDIR/by_sha256/${cksum}_${curfile}" "$distfile"
msg_normal "$pkgver: using known distfile $curfile.\n" msg_normal "$pkgver: using known distfile $curfile.\n"
return 0
fi fi
return 1
} }
try_mirrors() { try_mirrors() {
local curfile="$1" distfile="$2" dfcount="$3" subdir="$4" f="$5" local curfile="$1" distfile="$2" cksum="$3" f="$4"
local filesum cksum basefile mirror path scheme local filesum basefile mirror path scheme good
[ -z "$XBPS_DISTFILES_MIRROR" ] && return [ -z "$XBPS_DISTFILES_MIRROR" ] && return 1
basefile="${f##*/}" basefile="${f##*/}"
cksum=$(get_cksum $curfile $dfcount)
for mirror in $XBPS_DISTFILES_MIRROR; do for mirror in $XBPS_DISTFILES_MIRROR; do
scheme="file" scheme="file"
if [[ $mirror == *://* ]]; then if [[ $mirror == *://* ]]; then
@ -179,28 +157,80 @@ try_mirrors() {
fi fi
if [[ "$mirror" == *voidlinux* ]]; then if [[ "$mirror" == *voidlinux* ]]; then
# For distfiles.voidlinux.* append the subdirectory # For distfiles.voidlinux.* append the subdirectory
mirror="$mirror/$subdir" mirror="$mirror/$pkgname-$version"
fi fi
msg_normal "$pkgver: fetching distfile '$curfile' from '$mirror'...\n" msg_normal "$pkgver: fetching distfile '$curfile' from mirror '$mirror'...\n"
$fetch_cmd "$mirror/$curfile" $fetch_cmd "$mirror/$curfile"
# If basefile was not found, but a curfile file may exist, try to fetch it # If basefile was not found, but a curfile file may exist, try to fetch it
if [ ! -f "$distfile" -a "$basefile" != "$curfile" ]; then # if [ ! -f "$distfile" -a "$basefile" != "$curfile" ]; then
$fetch_cmd "$mirror/$basefile" # msg_normal "$pkgver: fetching distfile '$basefile' from mirror '$mirror'...\n"
fi # $fetch_cmd "$mirror/$basefile"
# fi
[ ! -f "$distfile" ] && continue [ ! -f "$distfile" ] && continue
flock -n ${distfile}.part rm -f ${distfile}.part flock -n ${distfile}.part rm -f ${distfile}.part
filesum=$(${XBPS_DIGEST_CMD} "$distfile") filesum=$(${XBPS_DIGEST_CMD} "$distfile")
[ "$cksum" == "$filesum" ] && break if [ "$cksum" == "$filesum" ]; then
return 0
fi
msg_normal "$pkgver: checksum failed - removing '$curfile'...\n" msg_normal "$pkgver: checksum failed - removing '$curfile'...\n"
rm -f ${distfile} rm -f ${distfile}
done done
return 1
}
try_urls() {
local curfile="$1"
local good=
for i in ${_file_idxs["$curfile"]}; do
local cksum=${_checksums["$i"]}
local url=${_distfiles["$i"]}
# If distfile does not exist, download it from the original location.
if [[ "$FTP_RETRIES" && "${url}" =~ ^ftp:// ]]; then
max_retries="$FTP_RETRIES"
else
max_retries=1
fi
for retry in $(seq 1 1 $max_retries); do
if [ ! -f "$distfile" ]; then
if [ "$retry" == 1 ]; then
msg_normal "$pkgver: fetching distfile '$curfile' from '$url'...\n"
else
msg_normal "$pkgver: fetch attempt $retry of $max_retries...\n"
fi
flock "${distfile}.part" $fetch_cmd "$url"
fi
done
if [ ! -f "$distfile" ]; then
continue
fi
# distfile downloaded, verify sha256 hash.
flock -n "${distfile}.part" rm -f "${distfile}.part"
verify_cksum "$curfile" "$distfile" "$cksum"
return 0
done
return 1
} }
hook() { hook() {
local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version" local srcdir="$XBPS_SRCDISTDIR/$pkgname-$version"
local dfcount=0 dfgood=0 errors=0 max_retries local dfcount=0 dfgood=0 errors=0 max_retries
if [ ! -d "$srcdir" ]; then local -a _distfiles=($distfiles)
local -a _checksums=($checksum)
local -A _file_idxs
# Create a map from target file to index in _distfiles/_checksums
for i in ${!_distfiles[@]}; do
f="${_distfiles[$i]}"
curfile="${f#*>}"
curfile="${curfile##*/}"
_file_idxs["$curfile"]+=" $i"
done
if [[ ! -d "$srcdir" ]]; then
mkdir -p -m775 "$srcdir" mkdir -p -m775 "$srcdir"
chgrp $(id -g) "$srcdir" chgrp $(id -g) "$srcdir"
fi fi
@ -209,90 +239,72 @@ hook() {
# Disable trap on ERR; the code is smart enough to report errors and abort. # Disable trap on ERR; the code is smart enough to report errors and abort.
trap - ERR trap - ERR
# Detect bsdtar and GNU tar (in that order of preference) # Detect bsdtar and GNU tar (in that order of preference)
TAR_CMD="$(command -v bsdtar)" TAR_CMD="$(command -v bsdtar)"
if [ -z "$TAR_CMD" ]; then if [[ -z "$TAR_CMD" ]]; then
TAR_CMD="$(command -v tar)" TAR_CMD="$(command -v tar)"
fi fi
# Detect distfiles with obsolete checksum and purge them from the cache # Detect distfiles with obsolete checksum and purge them from the cache
for f in ${distfiles}; do for f in ${!_file_idxs[@]}; do
curfile="${f#*>}" distfile="$srcdir/$f"
curfile="${curfile##*/}" for i in ${_file_idxs["$f"]}; do
distfile="$srcdir/$curfile" if [[ -f $distfile ]]; then
cksum=${_checksums["$i"]}
if [ -f "$distfile" ]; then if [[ ${cksum:0:1} = @ ]]; then
cksum=$(get_cksum $curfile $dfcount) cksum=${cksum:1}
if [ "${cksum:0:1}" = "@" ]; then filesum=$(contents_cksum "$distfile")
cksum=${cksum:1} else
filesum=$(contents_cksum "$distfile") filesum=$(${XBPS_DIGEST_CMD} "$distfile")
else fi
filesum=$(${XBPS_DIGEST_CMD} "$distfile") if [[ $cksum = $filesum ]]; then
dfgood=$((dfgood + 1))
else
inode=$(stat "$distfile" --printf "%i")
msg_warn "$pkgver: wrong checksum found for ${curfile} - purging\n"
find ${XBPS_SRCDISTDIR} -inum ${inode} -delete -print
fi
fi fi
if [ "$cksum" = "$filesum" ]; then dfcount=$((dfcount + 1))
dfgood=$((dfgood + 1)) done
else
inode=$(stat "$distfile" --printf "%i")
msg_warn "$pkgver: wrong checksum found for ${curfile} - purging\n"
find ${XBPS_SRCDISTDIR} -inum ${inode} -delete -print
fi
fi
dfcount=$((dfcount + 1))
done done
# We're done, if all distfiles were found and had good checksums # We're done, if all distfiles were found and had good checksums
[ $dfcount -eq $dfgood ] && return [[ $dfcount -eq $dfgood ]] && return
# Download missing distfiles and verify their checksums # Download missing distfiles and verify their checksums
dfcount=0 for curfile in ${!_file_idxs[@]}; do
for f in ${distfiles}; do
curfile="${f#*>}"
curfile="${curfile##*/}"
distfile="$srcdir/$curfile" distfile="$srcdir/$curfile"
set -- ${_file_idxs["$curfile"]}
i="$1"
# If file lock cannot be acquired wait until it's available. # If file lock cannot be acquired wait until it's available.
while true; do while ! flock -w 1 "${distfile}.part" true; do
flock -w 1 ${distfile}.part true
[ $? -eq 0 ] && break
msg_warn "$pkgver: ${curfile} is already being downloaded, waiting for 1s ...\n" msg_warn "$pkgver: ${curfile} is already being downloaded, waiting for 1s ...\n"
done done
if [[ -f "$distfile" ]]; then
continue
fi
# If distfile does not exist, try to link to it. # If distfile does not exist, try to link to it.
if [ ! -f "$distfile" ]; then if link_cksum "$curfile" "$distfile" "${_checksums[$i]}"; then
link_cksum $curfile $distfile $dfcount continue
fi fi
# If distfile does not exist, download it from a mirror location. # If distfile does not exist, download it from a mirror location.
if [ ! -f "$distfile" ]; then if try_mirrors "$curfile" "$distfile" "${_checksums[$i]}" "${_distfiles[$i]}"; then
try_mirrors $curfile $distfile $dfcount $pkgname-$version $f continue
fi fi
# If distfile does not exist, download it from the original location.
if [[ "$FTP_RETRIES" && "${f}" =~ ^ftp:// ]]; then if ! try_urls "$curfile"; then
max_retries="$FTP_RETRIES" msg_error "$pkgver: failed to fetch '$curfile'.\n"
else
max_retries=1
fi fi
for retry in $(seq 1 1 $max_retries); do
if [ ! -f "$distfile" ]; then
if [ "$retry" == 1 ]; then
msg_normal "$pkgver: fetching distfile '$curfile'...\n"
else
msg_normal "$pkgver: fetch attempt $retry of $max_retries...\n"
fi
flock "${distfile}.part" $fetch_cmd "$f"
fi
done
if [ ! -f "$distfile" ]; then
msg_error "$pkgver: failed to fetch $curfile.\n"
fi
# distfile downloaded, verify sha256 hash.
flock -n ${distfile}.part rm -f ${distfile}.part
verify_cksum $curfile $distfile $dfcount
dfcount=$((dfcount + 1))
done done
unset TAR_CMD unset TAR_CMD
if [ $errors -gt 0 ]; then if [[ $errors -gt 0 ]]; then
msg_error "$pkgver: couldn't verify distfiles, exiting...\n" msg_error "$pkgver: couldn't verify distfiles, exiting...\n"
fi fi
} }

View file

@ -6,23 +6,23 @@ _process_patch() {
_args="-Np1" _args="-Np1"
_patch=${i##*/} _patch=${i##*/}
if [ -f $PATCHESDIR/${_patch}.args ]; then if [ -f "$PATCHESDIR/${_patch}.args" ]; then
_args=$(<$PATCHESDIR/${_patch}.args) _args=$(<"$PATCHESDIR/${_patch}.args")
elif [ -n "$patch_args" ]; then elif [ -n "$patch_args" ]; then
_args=$patch_args _args=$patch_args
fi fi
cp -f $i "$wrksrc" cp -f "$i" "$wrksrc"
# Try to guess if its a compressed patch. # Try to guess if its a compressed patch.
if [[ $f =~ .gz$ ]]; then if [[ $i =~ .gz$ ]]; then
gunzip "$wrksrc/${_patch}" gunzip "$wrksrc/${_patch}"
_patch=${_patch%%.gz} _patch=${_patch%%.gz}
elif [[ $f =~ .bz2$ ]]; then elif [[ $i =~ .bz2$ ]]; then
bunzip2 "$wrksrc/${_patch}" bunzip2 "$wrksrc/${_patch}"
_patch=${_patch%%.bz2} _patch=${_patch%%.bz2}
elif [[ $f =~ .diff$ ]]; then elif [[ $i =~ .diff$ ]]; then
: :
elif [[ $f =~ .patch$ ]]; then elif [[ $i =~ .patch$ ]]; then
: :
else else
msg_warn "$pkgver: unknown patch type: $i.\n" msg_warn "$pkgver: unknown patch type: $i.\n"
@ -31,7 +31,7 @@ _process_patch() {
cd "$wrksrc" cd "$wrksrc"
msg_normal "$pkgver: patching: ${_patch}.\n" msg_normal "$pkgver: patching: ${_patch}.\n"
patch -s ${_args} -i ${_patch} 2>/dev/null patch -s ${_args} <"${_patch}" 2>/dev/null
} }
hook() { hook() {
@ -44,11 +44,11 @@ hook() {
done < $PATCHESDIR/series done < $PATCHESDIR/series
else else
for f in $PATCHESDIR/*; do for f in $PATCHESDIR/*; do
[ ! -f $f ] && continue [ ! -f "$f" ] && continue
if [[ $f =~ ^.*.args$ ]]; then if [[ $f =~ ^.*.args$ ]]; then
continue continue
fi fi
_process_patch $f _process_patch "$f"
done done
fi fi
} }

View file

@ -24,8 +24,7 @@ hook() {
# Find all binaries in /usr/share and add them to the pool # Find all binaries in /usr/share and add them to the pool
while read -r f; do while read -r f; do
mime="${f##*:}" mime="${f##*: }"
mime="${mime// /}"
file="${f%:*}" file="${f%:*}"
file="${file#${PKGDESTDIR}}" file="${file#${PKGDESTDIR}}"
case "${mime}" in case "${mime}" in
@ -37,7 +36,7 @@ hook() {
fi fi
;; ;;
esac esac
done < <(find $PKGDESTDIR/usr/share $prune_expr -type f | file --mime-type --files-from -) done < <(find $PKGDESTDIR/usr/share $prune_expr -type f | file --no-pad --mime-type --files-from -)
# Check passed if no packages in pool # Check passed if no packages in pool
if [ -z "$matches" ]; then if [ -z "$matches" ]; then

View file

@ -236,7 +236,7 @@ hook() {
generic_wrapper3 libetpan-config generic_wrapper3 libetpan-config
generic_wrapper3 giblib-config generic_wrapper3 giblib-config
python_wrapper python-config 2.7 python_wrapper python-config 2.7
python_wrapper python3-config 3.10 python_wrapper python3-config 3.11
apr_apu_wrapper apr-1-config apr_apu_wrapper apr-1-config
apr_apu_wrapper apu-1-config apr_apu_wrapper apu-1-config
} }

View file

@ -34,15 +34,14 @@ add_rundep() {
store_pkgdestdir_rundeps() { store_pkgdestdir_rundeps() {
if [ -n "$run_depends" ]; then if [ -n "$run_depends" ]; then
: > ${PKGDESTDIR}/rdeps
for f in ${run_depends}; do for f in ${run_depends}; do
_curdep="$(echo "$f" | sed -e 's,\(.*\)?.*,\1,')" _curdep="$(echo "$f" | sed -e 's,\(.*\)?.*,\1,')"
if [ -z "$($XBPS_UHELPER_CMD getpkgdepname ${_curdep} 2>/dev/null)" -a \ if [ -z "$($XBPS_UHELPER_CMD getpkgdepname ${_curdep} 2>/dev/null)" -a \
-z "$($XBPS_UHELPER_CMD getpkgname ${_curdep} 2>/dev/null)" ]; then -z "$($XBPS_UHELPER_CMD getpkgname ${_curdep} 2>/dev/null)" ]; then
_curdep="${_curdep}>=0" _curdep="${_curdep}>=0"
fi fi
printf -- "${_curdep} " >> ${PKGDESTDIR}/rdeps printf -- "${_curdep}\n"
done done | sort | xargs > ${PKGDESTDIR}/rdeps
fi fi
} }
@ -166,6 +165,6 @@ hook() {
sorequires+="${f} " sorequires+="${f} "
done done
if [ -n "${sorequires}" ]; then if [ -n "${sorequires}" ]; then
echo "${sorequires}" > ${PKGDESTDIR}/shlib-requires echo "${sorequires}" | xargs -n1 | sort | xargs > ${PKGDESTDIR}/shlib-requires
fi fi
} }

View file

@ -22,7 +22,7 @@ hook() {
fi fi
done done
for f in var/run usr/local; do for f in var/run usr/local usr/etc; do
if [ -d ${PKGDESTDIR}/${f} ]; then if [ -d ${PKGDESTDIR}/${f} ]; then
msg_red "${pkgver}: /${f} directory is not allowed, remove it!\n" msg_red "${pkgver}: /${f} directory is not allowed, remove it!\n"
error=1 error=1
@ -103,11 +103,21 @@ hook() {
error=1 error=1
fi fi
if [ -d ${PKGDESTDIR}/usr/usr ]; then
msg_red "${pkgver}: /usr/usr is forbidden, use /usr.\n"
error=1
fi
if [ -d ${PKGDESTDIR}/usr/man ]; then if [ -d ${PKGDESTDIR}/usr/man ]; then
msg_red "${pkgver}: /usr/man is forbidden, use /usr/share/man.\n" msg_red "${pkgver}: /usr/man is forbidden, use /usr/share/man.\n"
error=1 error=1
fi fi
if [[ -d ${PKGDESTDIR}/usr/share/man/man ]]; then
msg_red "${pkgver}: /usr/share/man/man is forbidden, use /usr/share/man.\n"
error=1
fi
if [ -d ${PKGDESTDIR}/usr/doc ]; then if [ -d ${PKGDESTDIR}/usr/doc ]; then
msg_red "${pkgver}: /usr/doc is forbidden. Use /usr/share/doc.\n" msg_red "${pkgver}: /usr/doc is forbidden. Use /usr/share/doc.\n"
error=1 error=1
@ -182,7 +192,7 @@ hook() {
if [ -z "$found" ]; then if [ -z "$found" ]; then
_myshlib="${libname}.so" _myshlib="${libname}.so"
[ "${_myshlib}" != "${rev}" ] && _myshlib+=".${rev}" [ "${_myshlib}" != "${rev}" ] && _myshlib+=".${rev}"
msg_warn "${pkgver}: ${_myshlib} not found in common/shlibs!\n" msg_normal "${pkgver}: ${_myshlib} not found in common/shlibs.\n"
fi; fi;
} }
done done

View file

@ -5,18 +5,17 @@ die() {
exit 1 exit 1
} }
GIT_CMD=$(command -v chroot-git 2>/dev/null) || command -v git >/dev/null 2>&1 ||
GIT_CMD=$(command -v git 2>/dev/null) ||
die "neither chroot-git nor git could be found!" die "neither chroot-git nor git could be found!"
rev_parse() { rev_parse() {
if [ -n "$1" ]; then if [ -n "$1" ]; then
"$GIT_CMD" rev-parse --verify "$1" git rev-parse --verify "$1"
else else
shift shift
while test "$#" != 0 while test "$#" != 0
do do
"$GIT_CMD" rev-parse --verify "$1" 2>/dev/null && return git rev-parse --verify "$1" 2>/dev/null && return
shift shift
done done
return 1 return 1
@ -27,26 +26,26 @@ base=$(rev_parse "$1" FETCH_HEAD ORIG_HEAD) || die "base commit not found"
tip=$(rev_parse "$2" HEAD) || die "tip commit not found" tip=$(rev_parse "$2" HEAD) || die "tip commit not found"
status=0 status=0
for cmt in $("$GIT_CMD" rev-list --abbrev-commit $base..$tip) for cmt in $(git rev-list --abbrev-commit $base..$tip)
do do
"$GIT_CMD" cat-file commit "$cmt" | git cat-file commit "$cmt" |
awk -vC="$cmt" ' awk -vC="$cmt" '
# skip header # skip header
/^$/ && !msg { msg = 1; next } /^$/ && !msg { msg = 1; next }
!msg { next } !msg { next }
# 3: long-line-is-banned-except-footnote-like-this-for-url # 3: long-line-is-banned-except-footnote-like-this-for-url
(NF > 2) && (length > 80) { print C ": long line: " $0; exit 1 } (NF > 2) && (length > 80) { print "::error title=Commit Lint::" C ": long line: " $0; exit 1 }
!subject { !subject {
if (length > 50) { print C ": subject is a bit long" } if (length > 50) { print "::warning title=Commit Lint::" C ": subject is a bit long" }
if (!($0 ~ ":" || $0 ~ "^Take over maintainership " || $0 ~ "^Orphan ")) { print C ": subject does not follow CONTRIBUTING.md guildelines"; exit 1 } if (!($0 ~ ":" || $0 ~ "^Take over maintainership " || $0 ~ "^Orphan ")) { print "::error title=Commit Lint::" C ": subject does not follow CONTRIBUTING.md guildelines"; exit 1 }
# Below check is too noisy? # Below check is too noisy?
# if (!($0 ~ "^New package:" || $0 ~ ".*: update to")) { # if (!($0 ~ "^New package:" || $0 ~ ".*: update to")) {
# print C ": not new package/update/removal?" # print "::warning title=Commit Lint::" C ": not new package/update/removal?"
# } # }
subject = 1; next subject = 1; next
} }
/^$/ { body = 1; next } /^$/ { body = 1; next }
!body { print C ": second line must be blank"; exit 1 } !body { print "::error title=Commit Lint::" C ": second line must be blank"; exit 1 }
' || status=1 ' || status=1
done done
exit $status exit $status

198
common/scripts/lint-conflicts Executable file
View file

@ -0,0 +1,198 @@
#!/usr/bin/env bash
# Report packages installing same file and not marked with
# conflicts or replaces.
# Without argument, find conflicts between packages in local
# repository at hostdir/binpkgs and packages indexed in xlocate.
# With single path as argument, read that local repository.
# With -a flag, find conflicts between packages indexed in xlocate.
if [ "$#" = 0 ]; then
binpkgs="$PWD/hostdir/binpkgs"
elif [ "$1" = -a ]; then
all=1
elif [ -d "$1" ]; then
binpkgs="$1"
else
echo "Usage:"
echo "$0"
echo " check packages in ./hostdir/binpkgs"
echo "$0 path/to/hostdir/binpkgs"
echo " check packages there"
echo "$0 -a"
echo " check all packages indexed in xlocate"
exit 1
fi
declare -A newly_built conflicts_cache providers_cache pairs owners
repositories=("--repository=${binpkgs}" "--repository=${binpkgs}/nonfree")
rv=0
template_exists() {
[ -f "srcpkgs/$1/template" ]
}
partial_check() {
[ -z "$all" ]
}
providers_of() {
# print the pkgname and packages that `provides` it
local pkgname=$1
if [ "${providers_cache[$pkgname]}" = '' ]; then
local line provider_pkgver provided_pkgver provider_pkgname provided_pkgname
local -A providers
providers[$pkgname]=$pkgname
while read -r line; do
line=${line%%'('*}
provider_pkgver=${line%': '*}
provided_pkgver=${line#*': '}
provider_pkgname=${provider_pkgver%-*}
provided_pkgname=${provided_pkgver%-*}
# comes from $(xbps-query -s $pkgname), so $pkgname can be substring
if [ "$provided_pkgname" = "$pkgname" ]; then
providers[$provider_pkgname]=$provider_pkgname
fi
done < <(xbps-query "${repositories[@]}" -p provides -R -s "$pkgname")
# leading space ensures ${[]} != ''
providers_cache[$pkgname]=" ${providers[*]}"
fi
echo ${providers_cache[$pkgname]}
}
conflicts_of() {
# print list of packages that are _marked_ as conflicting with given one
local pkgname=$1
if [ "${conflicts_cache[$pkgname]}" = '' ]; then
local in_conflict provider
local -A all
while read -r in_conflict; do
in_conflict=${in_conflict%'<'*}
in_conflict=${in_conflict%'>'*}
providers_of "$in_conflict" > /dev/null # executing in same process to fill cache
for provider in $(providers_of "$in_conflict"); do
all[$provider]=$provider
done
done < <(xbps-query "${repositories[@]}" -p conflicts,replaces -R "$pkgname")
# leading space ensures ${[]} != ''
conflicts_cache[$pkgname]=" ${all[*]}"
fi
echo ${conflicts_cache[$pkgname]}
}
conflict_between() {
# exit successfully if packages are _marked_ as conflicting
conflicts_of "$1" > /dev/null # executing in same process to fill cache
case " $(conflicts_of "$1") " in
*" $2 "*) return 0
esac
conflicts_of "$2" > /dev/null # executing in same process to fill cache
case " $(conflicts_of "$2") " in
*" $1 "*) return 0
esac
return 1
}
list_newly_built_files() {
# print one line per file in newly built packages
# each line contains pkgname and file path
local pkgver pkgname
while read -r pkgver; do
pkgname=${pkgver%-*}
xbps-query "${repositories[@]}" -i -f "$pkgname" | sed s'/ -> .*//;'" s/^/$pkgname /"
done < <(xbps-query "${repositories[@]}" -i -R -s '' | cut -d' ' -f 2)
}
list_interesting_files() {
# list files potentially contained in more than one package
# each line contains pkgver/pkgname and file path
if partial_check; then
list_newly_built_files
else
xlocate / | sed s'/ -> .*//' | grep -F -f <(xlocate / | cut -f 2- | sed s'/ -> .*//' | sort | uniq -d)
fi
}
group_by_file_full() {
# create associative array `owners` mapping file to list of packages
# for packages potentially conflicting with newly built ones
local pkgver file pkgname
while read -r pkgver file; do
pkgname=${pkgver%-*}
if template_exists "$pkgname"; then
owners[$file]+=" $pkgname"
fi
done < <(list_interesting_files)
}
group_by_file_partial() {
# create associative array `owners` mapping file to list of packages
# for all packages in xlocate
local pkgname file
## newly built packages
while read -r pkgver; do
pkgname=${pkgver%-*}
newly_built[$pkgname]=$pkgname
done < <(xbps-query "${repositories[@]}" -i -R -s '' | cut -d' ' -f 2)
while read -r pkgname file; do
owners[$file]+=" $pkgname"
done < <(list_newly_built_files)
## rest of repository
while read -r pkgver file; do
pkgname=${pkgver%-*}
if [ -z "${newly_built[$pkgname]}" ] && template_exists "$pkgname"; then
owners[$file]+=" $pkgname"
fi
done < <(xlocate / | sed s'/ -> .*//' | grep -F -f <(list_newly_built_files | cut -d ' ' -f 2-))
}
group_by_pair() {
# find package pairs owning same file and not marked as conflicting
local pkg file a b
while read -r pkg file; do
for a in ${owners[$file]}; do
for b in ${owners[$file]}; do
if ! [ "$a" "<" "$b" ]; then
continue
fi
if partial_check && [ -z "${newly_built[$a]}" ] && [ -z "${newly_built[$b]}" ]; then
continue
fi
if ! conflict_between "$a" "$b"; then
unset pair_files
local -A pair_files
eval "${pairs["$a $b"]}"
pair_files[$file]="$file"
pairs["$a $b"]="${pair_files[@]@A}"
fi
done
done
done < <(list_interesting_files)
}
print_out() {
local pair file
if [ "${#pairs[@]}" = 0 ]; then
echo 1>&2 "No conflicts found in" "${repositories[@]#*=}"
exit 0
fi
while read -r pair; do
rv=1
echo "${pair% *} and ${pair#* } conflict for"
unset pair_files
eval "${pairs[$pair]}"
for file in "${pair_files[@]}"; do
echo " $file"
done | sort
done < <(printf '%s\n' "${!pairs[@]}" | sort)
}
if partial_check; then
group_by_file_partial
else
group_by_file_full
fi
group_by_pair
print_out
exit $rv

View file

@ -13,20 +13,17 @@ if ! [ "$base_rev" ]; then
die "usage: $0 TEMPLATE BASE-REVISION [TIP-REVISION]" die "usage: $0 TEMPLATE BASE-REVISION [TIP-REVISION]"
fi fi
if command -v chroot-git >/dev/null 2>&1; then if ! command -v git >/dev/null 2>&1; then
GIT_CMD=$(command -v chroot-git)
elif command -v git >/dev/null 2>&1; then
GIT_CMD=$(command -v git)
else
die "neither chroot-git nor git could be found" die "neither chroot-git nor git could be found"
fi fi
scan() { scan() {
rx="$1" msg="$2" rx="$1" msg="$2"
template_path=$template template_path=$template
maybe_git=
if [ "$tip_rev" ]; then if [ "$tip_rev" ]; then
template_path="${tip_rev}:${template}" template_path="${tip_rev}:${template}"
maybe_git="$GIT_CMD" maybe_git="git"
revspec="[^:]*:" revspec="[^:]*:"
fi fi
$maybe_git grep -P -Hn -e "$rx" "$template_path" | $maybe_git grep -P -Hn -e "$rx" "$template_path" |
@ -37,7 +34,7 @@ scan() {
show_template() { show_template() {
rev="$1" rev="$1"
if [ "$rev" ]; then if [ "$rev" ]; then
$GIT_CMD cat-file blob "${rev}:${template}" 2>/dev/null git cat-file blob "${rev}:${template}" 2>/dev/null
else else
cat "${template}" 2>/dev/null cat "${template}" 2>/dev/null
fi fi
@ -45,7 +42,10 @@ show_template() {
show_template_var() { show_template_var() {
rev="$1" var="$2" rev="$1" var="$2"
show_template "$rev" | grep -Po '^'${var}'=\K.*' (
show_template "$rev"
printf '%s\n' "printf '%s\\n' \"\$${var}\""
) | bash 2>/dev/null
} }
revision_reset() { revision_reset() {
@ -72,6 +72,28 @@ reverts_on_downgrade() {
esac esac
} }
check_revert() {
for vr in $reverts; do
xbps-uhelper cmpver "${version}" "${vr%_*}"
case "$?" in
0 | 1)
scan '^version=' "remove $vr from \$reverts"
status=1
;;
esac
done
for vr in $prev_reverts; do
if ! xbps-uhelper cmpver "$version" "${vr%_*}"; then
continue
fi
if [ $revision -gt "${vr##*_}" ]; then
continue
fi
scan '^revision=' "undo a revert with same revision as before"
status=1
done
}
version_change() { version_change() {
version="$(show_template_var "$tip_rev" version)" version="$(show_template_var "$tip_rev" version)"
revision="$(show_template_var "$tip_rev" revision)" revision="$(show_template_var "$tip_rev" revision)"
@ -83,6 +105,7 @@ version_change() {
1) revision_reset;; 1) revision_reset;;
-1|255) reverts_on_downgrade;; -1|255) reverts_on_downgrade;;
esac esac
check_revert
} }
version_change version_change

View file

@ -0,0 +1,11 @@
# Converts xlint/etc format lints into GH Actions annotations
# The original line is printed alongside the annotation command
{
split($0, a, ": ")
split(a[1], b, ":")
msg = substr($0, index($0, ": ") + 2)
if (b[2]) {
line = ",line=" b[2]
}
printf "::error title=Template Lint,file=%s%s::%s\n", b[1], line, msg
}

File diff suppressed because it is too large Load diff

View file

@ -13,7 +13,7 @@ fi
PKGS=$(/hostrepo/xbps-src sort-dependencies $(cat /tmp/templates)) PKGS=$(/hostrepo/xbps-src sort-dependencies $(cat /tmp/templates))
for pkg in ${PKGS}; do for pkg in ${PKGS}; do
/hostrepo/xbps-src -j$(nproc) -H "$HOME"/hostdir $arch $test pkg "$pkg" /hostrepo/xbps-src -j$(nproc) -s -H "$HOME"/hostdir $arch $test pkg "$pkg"
[ $? -eq 1 ] && exit 1 [ $? -eq 1 ] && exit 1
done done

View file

@ -2,19 +2,15 @@
# #
# changed_templates.sh # changed_templates.sh
if command -v chroot-git >/dev/null 2>&1; then tip="$(git rev-list -1 --parents HEAD)"
GIT_CMD=$(command -v chroot-git)
elif command -v git >/dev/null 2>&1; then
GIT_CMD=$(command -v git)
fi
tip="$($GIT_CMD rev-list -1 --parents HEAD)"
case "$tip" in case "$tip" in
# This is a merge commit, pick last parent
*" "*" "*) tip="${tip##* }" ;; *" "*" "*) tip="${tip##* }" ;;
# This is a non-merge commit, pick itself
*) tip="${tip%% *}" ;; *) tip="${tip%% *}" ;;
esac esac
base="$($GIT_CMD merge-base FETCH_HEAD "$tip")" || { base="$(git merge-base FETCH_HEAD "$tip")" || {
echo "Your branches is based on too old copy." echo "Your branches is based on too old copy."
echo "Please rebase to newest copy." echo "Please rebase to newest copy."
exit 1 exit 1
@ -23,7 +19,7 @@ base="$($GIT_CMD merge-base FETCH_HEAD "$tip")" || {
echo "$base $tip" >/tmp/revisions echo "$base $tip" >/tmp/revisions
/bin/echo -e '\x1b[32mChanged packages:\x1b[0m' /bin/echo -e '\x1b[32mChanged packages:\x1b[0m'
$GIT_CMD diff-tree -r --no-renames --name-only --diff-filter=AM \ git diff-tree -r --no-renames --name-only --diff-filter=AM \
"$base" "$tip" \ "$base" "$tip" \
-- 'srcpkgs/*/template' | -- 'srcpkgs/*/template' |
cut -d/ -f 2 | cut -d/ -f 2 |

View file

@ -7,7 +7,7 @@ TAR=tar
command -v bsdtar >/dev/null && TAR=bsdtar command -v bsdtar >/dev/null && TAR=bsdtar
ARCH=$(uname -m)-musl ARCH=$(uname -m)-musl
VERSION=0.59_5 VERSION=0.59_5
URL="https://alpha.de.repo.voidlinux.org/static/xbps-static-static-${VERSION}.${ARCH}.tar.xz" URL="https://repo-ci.voidlinux.org/static/xbps-static-static-${VERSION}.${ARCH}.tar.xz"
FILE=${URL##*/} FILE=${URL##*/}
mkdir -p /tmp/bin mkdir -p /tmp/bin

View file

@ -2,11 +2,8 @@
# #
# changed_templates.sh # changed_templates.sh
if command -v chroot-git >/dev/null 2>&1; then # required by git 2.35.2+
GIT_CMD=$(command -v chroot-git) git config --global --add safe.directory "$PWD"
elif command -v git >/dev/null 2>&1; then
GIT_CMD=$(command -v git)
fi
/bin/echo -e '\x1b[32mFetching upstream...\x1b[0m' /bin/echo -e '\x1b[32mFetching upstream...\x1b[0m'
$GIT_CMD fetch --depth 200 https://github.com/void-linux/void-packages.git master git fetch --depth 200 https://github.com/void-linux/void-packages.git master

View file

@ -31,6 +31,7 @@ Apache-1.0
Apache-1.1 Apache-1.1
Apache-2.0 Apache-2.0
App-s2p App-s2p
Arphic-1999
Artistic-1.0-Perl Artistic-1.0-Perl
Artistic-1.0-cl8 Artistic-1.0-cl8
Artistic-1.0 Artistic-1.0
@ -58,12 +59,14 @@ BSD-Protection
BSD-Source-Code BSD-Source-Code
BSL-1.0 BSL-1.0
BUSL-1.1 BUSL-1.1
Baekmuk
Bahyph Bahyph
Barr Barr
Beerware Beerware
Bison-exception-2.2 Bison-exception-2.2
BitTorrent-1.0 BitTorrent-1.0
BitTorrent-1.1 BitTorrent-1.1
Bitstream-Vera
BlueOak-1.0.0 BlueOak-1.0.0
Bootloader-exception Bootloader-exception
Borceux Borceux
@ -77,6 +80,7 @@ CC-BY-2.5-AU
CC-BY-2.5 CC-BY-2.5
CC-BY-3.0-AT CC-BY-3.0-AT
CC-BY-3.0-DE CC-BY-3.0-DE
CC-BY-3.0-IGO
CC-BY-3.0-NL CC-BY-3.0-NL
CC-BY-3.0-US CC-BY-3.0-US
CC-BY-3.0 CC-BY-3.0
@ -220,6 +224,8 @@ GPL-3.0-linking-source-exception
GPL-3.0-only GPL-3.0-only
GPL-3.0-or-later GPL-3.0-or-later
GPL-CC-1.0 GPL-CC-1.0
GStreamer-exception-2005
GStreamer-exception-2008
Giftware Giftware
Glide Glide
Glulxe Glulxe
@ -244,6 +250,7 @@ JPNIC
JSON JSON
Jam Jam
JasPer-2.0 JasPer-2.0
KiCad-libraries-exception
LAL-1.2 LAL-1.2
LAL-1.3 LAL-1.3
LGPL-2.0-only LGPL-2.0-only
@ -262,6 +269,8 @@ LPPL-1.1
LPPL-1.2 LPPL-1.2
LPPL-1.3a LPPL-1.3a
LPPL-1.3c LPPL-1.3c
LZMA-SDK-9.11-to-9.20
LZMA-SDK-9.22
LZMA-exception LZMA-exception
Latex2e Latex2e
Leptonica Leptonica
@ -286,10 +295,12 @@ MPL-1.0
MPL-1.1 MPL-1.1
MPL-2.0-no-copyleft-exception MPL-2.0-no-copyleft-exception
MPL-2.0 MPL-2.0
MS-LPL
MS-PL MS-PL
MS-RL MS-RL
MTLL MTLL
MakeIndex MakeIndex
Minpack
MirOS MirOS
Motosoto Motosoto
MulanPSL-1.0 MulanPSL-1.0
@ -302,6 +313,7 @@ NBPL-1.0
NCGL-UK-2.0 NCGL-UK-2.0
NCSA NCSA
NGPL NGPL
NICTA-1.0
NIST-PD-fallback NIST-PD-fallback
NIST-PD NIST-PD
NLOD-1.0 NLOD-1.0
@ -379,6 +391,7 @@ Plexus
PolyForm-Noncommercial-1.0.0 PolyForm-Noncommercial-1.0.0
PolyForm-Small-Business-1.0.0 PolyForm-Small-Business-1.0.0
PostgreSQL PostgreSQL
Python-2.0.1
Python-2.0 Python-2.0
QPL-1.0 QPL-1.0
Qhull Qhull
@ -515,7 +528,9 @@ libpng-2.0
libselinux-1.0 libselinux-1.0
libtiff libtiff
mif-exception mif-exception
mpi-permissive
mpich2 mpich2
mplus
openvpn-openssl-exception openvpn-openssl-exception
psfrag psfrag
psutils psutils

View file

@ -1,15 +1,8 @@
#!/bin/sh #!/bin/sh
TRAVIS_PROTO=http TRAVIS_MIRROR=repo-ci.voidlinux.org
TRAVIS_MIRROR=repo-us.voidlinux.org
for _i in etc/xbps.d/repos-remote*.conf ; do for _i in etc/xbps.d/repos-remote*.conf ; do
/bin/echo -e "\x1b[32mUpdating $_i...\x1b[0m" /bin/echo -e "\x1b[32mUpdating $_i...\x1b[0m"
# First fix the proto, ideally we'd serve everything with HTTPS, sed -i "s:repo-default\.voidlinux\.org:$TRAVIS_MIRROR:g" $_i
# but key management and rotation is a pain, and things are signed
# so we can afford to be a little lazy at times.
sed -i "s:https:$TRAVIS_PROTO:g" $_i
# Now set the mirror
sed -i "s:alpha\.de\.repo\.voidlinux\.org:$TRAVIS_MIRROR:g" $_i
done done

View file

@ -11,7 +11,8 @@ common/scripts/lint-commits $base $tip || EXITCODE=$?
for t in $(awk '{ print "srcpkgs/" $0 "/template" }' /tmp/templates); do for t in $(awk '{ print "srcpkgs/" $0 "/template" }' /tmp/templates); do
/bin/echo -e "\x1b[32mLinting $t...\x1b[0m" /bin/echo -e "\x1b[32mLinting $t...\x1b[0m"
xlint "$t" || EXITCODE=$? xlint "$t" > /tmp/xlint_out || EXITCODE=$?
common/scripts/lint-version-change "$t" $base $tip || EXITCODE=$? common/scripts/lint-version-change "$t" $base $tip > /tmp/vlint_out || EXITCODE=$?
awk -f common/scripts/lint2annotations.awk /tmp/xlint_out /tmp/vlint_out
done done
exit $EXITCODE exit $EXITCODE

25
common/travis/xpkgdiff.sh Executable file
View file

@ -0,0 +1,25 @@
#!/bin/sh
#
# xpkgdiff.sh
export XBPS_DISTDIR=/hostrepo XBPS_HOSTDIR="$HOME/hostdir"
export DIFF='diff --unified=0 --report-identical-files --suppress-common-lines
--color=always --label REPO --label BUILT'
ARGS="-a $2 -R https://repo-ci.voidlinux.org/current"
while read -r pkg; do
for subpkg in $(xsubpkg $pkg); do
if xbps-query --repository=$HOME/hostdir/binpkgs \
--repository=$HOME/hostdir/binpkgs/nonfree \
-i "$subpkg" >&/dev/null; then
/bin/echo -e "\x1b[34mFile Diff of $subpkg:\x1b[0m"
xpkgdiff $ARGS -f $subpkg
/bin/echo -e "\x1b[34mMetadata Diff of $subpkg:\x1b[0m"
xpkgdiff $ARGS -S $subpkg
/bin/echo -e "\x1b[34mDependency Diff of $subpkg:\x1b[0m"
xpkgdiff $ARGS -x $subpkg
else
/bin/echo -e "\x1b[33m$subpkg wasn't found\x1b[0m"
fi
done
done < /tmp/templates

View file

@ -20,6 +20,13 @@ done
setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD setup_pkg "$PKGNAME" $XBPS_CROSS_BUILD
if [ -n "$disable_parallel_check" ]; then
XBPS_MAKEJOBS=1
else
XBPS_MAKEJOBS="$XBPS_ORIG_MAKEJOBS"
fi
makejobs="-j$XBPS_MAKEJOBS"
XBPS_CHECK_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_check_done" XBPS_CHECK_DONE="${XBPS_STATEDIR}/${sourcepkg}_${XBPS_CROSS_BUILD}_check_done"
if [ -n "$XBPS_CROSS_BUILD" ]; then if [ -n "$XBPS_CROSS_BUILD" ]; then

View file

@ -25,9 +25,9 @@ setup_pkg_depends() {
_pkgname=$(xbps-uhelper getpkgname $_depname 2>/dev/null) _pkgname=$(xbps-uhelper getpkgname $_depname 2>/dev/null)
[ -z "$_pkgname" ] && _pkgname="$_depname" [ -z "$_pkgname" ] && _pkgname="$_depname"
if [ -s ${XBPS_DISTDIR}/etc/virtual ]; then if [ -s ${XBPS_DISTDIR}/etc/virtual ]; then
foo=$(egrep "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/virtual|cut -d ' ' -f2) foo=$(grep -E "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/virtual|cut -d ' ' -f2)
elif [ -s ${XBPS_DISTDIR}/etc/defaults.virtual ]; then elif [ -s ${XBPS_DISTDIR}/etc/defaults.virtual ]; then
foo=$(egrep "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/defaults.virtual|cut -d ' ' -f2) foo=$(grep -E "^${_pkgname}[[:blank:]]" ${XBPS_DISTDIR}/etc/defaults.virtual|cut -d ' ' -f2)
fi fi
if [ -z "$foo" ]; then if [ -z "$foo" ]; then
msg_error "$pkgver: failed to resolve virtual dependency for '$j' (missing from etc/virtual)\n" msg_error "$pkgver: failed to resolve virtual dependency for '$j' (missing from etc/virtual)\n"

View file

@ -54,7 +54,7 @@ bulk_sortdeps() {
} }
bulk_build() { bulk_build() {
local sys="$1" local bulk_build_cmd="$1"
local NPROCS=$(($(nproc)*2)) local NPROCS=$(($(nproc)*2))
local NRUNNING=0 local NRUNNING=0
@ -67,10 +67,17 @@ bulk_build() {
fi fi
# Compare installed pkg versions vs srcpkgs # Compare installed pkg versions vs srcpkgs
if [[ $sys ]]; then case "$bulk_build_cmd" in
xbps-checkvers -f '%n' -I -D $XBPS_DISTDIR installed)
bulk_sortdeps $(xbps-checkvers -f '%n' -I -D "$XBPS_DISTDIR")
return $? return $?
fi ;;
local)
bulk_sortdeps $(xbps-checkvers -f '%n' -i -R "${XBPS_REPOSITORY}" -R "${XBPS_REPOSITORY}/nonfree" -D "$XBPS_DISTDIR")
return $?
;;
esac
# compare repo pkg versions vs srcpkgs # compare repo pkg versions vs srcpkgs
for f in $(xbps-checkvers -f '%n' -D $XBPS_DISTDIR); do for f in $(xbps-checkvers -f '%n' -D $XBPS_DISTDIR); do
if [ $NRUNNING -eq $NPROCS ]; then if [ $NRUNNING -eq $NPROCS ]; then
@ -90,9 +97,9 @@ bulk_build() {
} }
bulk_update() { bulk_update() {
local args="$1" pkgs f rval local bulk_update_cmd="$1" pkgs f rval
pkgs="$(bulk_build ${args})" pkgs="$(bulk_build "${bulk_update_cmd}")"
[[ -z $pkgs ]] && return 0 [[ -z $pkgs ]] && return 0
msg_normal "xbps-src: the following packages must be rebuilt and updated:\n" msg_normal "xbps-src: the following packages must be rebuilt and updated:\n"
@ -112,7 +119,7 @@ bulk_update() {
msg_error "xbps-src: failed to build $pkgver pkg!\n" msg_error "xbps-src: failed to build $pkgver pkg!\n"
fi fi
done done
if [ -n "$pkgs" -a -n "$args" ]; then if [ -n "$pkgs" -a "$bulk_update_cmd" == installed ]; then
echo echo
msg_normal "xbps-src: updating your system, confirm to proceed...\n" msg_normal "xbps-src: updating your system, confirm to proceed...\n"
${XBPS_SUCMD} "xbps-install --repository=$XBPS_REPOSITORY --repository=$XBPS_REPOSITORY/nonfree -u ${pkgs//[$'\n']/ }" || return 1 ${XBPS_SUCMD} "xbps-install --repository=$XBPS_REPOSITORY --repository=$XBPS_REPOSITORY/nonfree -u ${pkgs//[$'\n']/ }" || return 1

View file

@ -19,8 +19,8 @@ install_base_chroot() {
msg_error "xbps-src: failed to install base-chroot-cereus!\n" msg_error "xbps-src: failed to install base-chroot-cereus!\n"
fi fi
# Reconfigure base-files to create dirs/symlinks. # Reconfigure base-files to create dirs/symlinks.
if xbps-query -r $XBPS_MASTERDIR base-files>=2022.07.03 &>/dev/null; then if xbps-query -r $XBPS_MASTERDIR base-files &>/dev/null; then
XBPS_ARCH=$XBPS_TARGET_PKG xbps-reconfigure -r $XBPS_MASTERDIR -f base-files>=2022.07.03 &>/dev/null XBPS_ARCH=$XBPS_TARGET_PKG xbps-reconfigure -r $XBPS_MASTERDIR -f base-files &>/dev/null
fi fi
msg_normal "xbps-src: installed base-chroot-cereus successfully!\n" msg_normal "xbps-src: installed base-chroot-cereus successfully!\n"
@ -115,14 +115,14 @@ chroot_prepare() {
[ ! -d $XBPS_MASTERDIR/$f ] && mkdir -p $XBPS_MASTERDIR/$f [ ! -d $XBPS_MASTERDIR/$f ] && mkdir -p $XBPS_MASTERDIR/$f
done done
# Copy /etc/passwd and /etc/group from base-files # Copy /etc/passwd and /etc/group from base-files.
cp -f $XBPS_SRCPKGDIR/base-files/files/passwd $XBPS_MASTERDIR/etc cp -f $XBPS_SRCPKGDIR/base-files/files/passwd $XBPS_MASTERDIR/etc
echo "$(whoami):x:$(id -u):$(id -g):$(whoami) user:/tmp:/bin/xbps-shell" \ echo "$(whoami):x:$(id -u):$(id -g):$(whoami) user:/tmp:/bin/xbps-shell" \
>> $XBPS_MASTERDIR/etc/passwd >> $XBPS_MASTERDIR/etc/passwd
cp -f $XBPS_SRCPKGDIR/base-files/files/group $XBPS_MASTERDIR/etc cp -f $XBPS_SRCPKGDIR/base-files/files/group $XBPS_MASTERDIR/etc
echo "$(whoami):x:$(id -g):" >> $XBPS_MASTERDIR/etc/group echo "$(whoami):x:$(id -g):" >> $XBPS_MASTERDIR/etc/group
# Copy /etc/hosts from base-files # Copy /etc/hosts from base-files.
cp -f $XBPS_SRCPKGDIR/base-files/files/hosts $XBPS_MASTERDIR/etc cp -f $XBPS_SRCPKGDIR/base-files/files/hosts $XBPS_MASTERDIR/etc
# Prepare default locale: en_US.UTF-8. # Prepare default locale: en_US.UTF-8.

View file

@ -147,6 +147,23 @@ msg_normal() {
fi fi
} }
report_broken() {
if [ "$show_problems" = "ignore-problems" ]; then
return
fi
if [ -z "$XBPS_IGNORE_BROKENNESS" ]; then
for line in "$@"; do
msg_red "$line"
done
exit 2
elif [ "$XBPS_IGNORE_BROKENNESS" != reported ]; then
for line in "$@"; do
msg_warn "$line"
done
XBPS_IGNORE_BROKENNESS=reported
fi
}
msg_normal_append() { msg_normal_append() {
[ -n "$NOCOLORS" ] || printf "\033[1m" [ -n "$NOCOLORS" ] || printf "\033[1m"
printf "$@" printf "$@"
@ -472,7 +489,15 @@ setup_pkg() {
fi fi
makejobs="-j$XBPS_MAKEJOBS" makejobs="-j$XBPS_MAKEJOBS"
if [ -n "$XBPS_BINPKG_EXISTS" ]; then if [ -n "$XBPS_BINPKG_EXISTS" ]; then
local _binpkgver="$($XBPS_QUERY_XCMD -R -ppkgver $pkgver 2>/dev/null)" local extraflags=""
if [ -n "$XBPS_SKIP_REMOTEREPOS" ]; then
extraflags="-i"
# filter out remote repositories
for repo in $(xbps-query -L | awk '{ print $2 }' | grep '^/host/'); do
extraflags+=" --repository=$repo"
done
fi
local _binpkgver="$($XBPS_QUERY_XCMD -R -ppkgver $pkgver $extraflags 2>/dev/null)"
if [ "$_binpkgver" = "$pkgver" ]; then if [ "$_binpkgver" = "$pkgver" ]; then
if [ -z "$XBPS_DEPENDENCY" ]; then if [ -z "$XBPS_DEPENDENCY" ]; then
local _repo="$($XBPS_QUERY_XCMD -R -prepository $pkgver 2>/dev/null)" local _repo="$($XBPS_QUERY_XCMD -R -prepository $pkgver 2>/dev/null)"
@ -630,20 +655,16 @@ setup_pkg() {
fi fi
# Setup some specific package vars. # Setup some specific package vars.
if [ -z "$wrksrc" ]; then wrksrc="$XBPS_BUILDDIR/${sourcepkg}-${version}"
wrksrc="$XBPS_BUILDDIR/${sourcepkg}-${version}"
else
wrksrc="$XBPS_BUILDDIR/$wrksrc"
fi
if [ "$cross" -a "$nocross" -a "$show_problems" != "ignore-problems" ]; then if [ "$cross" -a "$nocross" ]; then
msg_red "$pkgver: cannot be cross compiled, exiting...\n" report_broken \
msg_red "$pkgver: $nocross\n" "$pkgver: cannot be cross compiled...\n" \
exit 2 "$pkgver: $nocross\n"
elif [ "$broken" -a "$show_problems" != "ignore-problems" ]; then elif [ "$broken" ]; then
msg_red "$pkgver: cannot be built, it's currently broken; see the build log:\n" report_broken \
msg_red "$pkgver: $broken\n" "$pkgver: cannot be built, it's currently broken; see the build log:\n" \
exit 2 "$pkgver: $broken\n"
fi fi
if [ -n "$restricted" -a -z "$XBPS_ALLOW_RESTRICTED" -a "$show_problems" != "ignore-problems" ]; then if [ -n "$restricted" -a -z "$XBPS_ALLOW_RESTRICTED" -a "$show_problems" != "ignore-problems" ]; then

View file

@ -72,7 +72,7 @@ prepare_cross_sysroot() {
fi fi
rm -f $errlog rm -f $errlog
# Create top level symlinks in sysroot. # Create top level symlinks in sysroot.
XBPS_ARCH=$XBPS_TARGET_MACHINE xbps-reconfigure -r $XBPS_CROSS_BASE -f base-files-cereus>=2022.07.03 &>/dev/null XBPS_ARCH=$XBPS_TARGET_MACHINE xbps-reconfigure -r $XBPS_CROSS_BASE -f base-files &>/dev/null
# Create a sysroot/include and sysroot/lib symlink just in case. # Create a sysroot/include and sysroot/lib symlink just in case.
ln -s usr/include ${XBPS_CROSS_BASE}/include ln -s usr/include ${XBPS_CROSS_BASE}/include
ln -s usr/lib ${XBPS_CROSS_BASE}/lib ln -s usr/lib ${XBPS_CROSS_BASE}/lib

View file

@ -34,8 +34,7 @@ check_pkg_arch() {
esac esac
done done
if [ -z "$nonegation" -a -n "$match" ] || [ -n "$nonegation" -a -z "$match" ]; then if [ -z "$nonegation" -a -n "$match" ] || [ -n "$nonegation" -a -z "$match" ]; then
msg_red "${pkgname}-${version}_${revision}: this package cannot be built for ${_arch}.\n" report_broken "${pkgname}-${version}_${revision}: this package cannot be built for ${_arch}.\n"
exit 2
fi fi
fi fi
} }

View file

@ -4,6 +4,7 @@ update_check() {
local i p url pkgurlname rx found_version consider local i p url pkgurlname rx found_version consider
local update_override=$XBPS_SRCPKGDIR/$XBPS_TARGET_PKG/update local update_override=$XBPS_SRCPKGDIR/$XBPS_TARGET_PKG/update
local original_pkgname=$pkgname local original_pkgname=$pkgname
local pkgname=$sourcepkg
local urlpfx urlsfx local urlpfx urlsfx
local -A fetchedurls local -A fetchedurls
@ -23,8 +24,9 @@ update_check() {
if [ -z "$site" ]; then if [ -z "$site" ]; then
case "$distfiles" in case "$distfiles" in
# only consider versions those exist in ftp.gnome.org # special case those sites provide better source elsewhere
*ftp.gnome.org*) ;; *ftp.gnome.org*|*download.gnome.org*) ;;
*archive.xfce.org*) ;;
*) *)
printf '%s\n' "$homepage" ;; printf '%s\n' "$homepage" ;;
esac esac
@ -56,7 +58,8 @@ update_check() {
*github.com*|\ *github.com*|\
*//gitlab.*|\ *//gitlab.*|\
*bitbucket.org*|\ *bitbucket.org*|\
*ftp.gnome.org*|\ *ftp.gnome.org*|*download.gnome.org*|\
*archive.xfce.org*|\
*kernel.org/pub/linux/kernel/*|\ *kernel.org/pub/linux/kernel/*|\
*cran.r-project.org/src/contrib*|\ *cran.r-project.org/src/contrib*|\
*rubygems.org*|\ *rubygems.org*|\
@ -122,8 +125,11 @@ update_check() {
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)" pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
url="https://github.com/$pkgurlname/tags" url="https://github.com/$pkgurlname/tags"
rx='/archive/refs/tags/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz")';; rx='/archive/refs/tags/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz")';;
*//gitlab.*) *//gitlab.*|*code.videolan.org*)
pkgurlname="$(printf %s "$url" | cut -d/ -f1-5)" case "$url" in
*/-/*) pkgurlname="$(printf %s "$url" | sed -e 's%/-/.*%%g; s%/$%%')";;
*) pkgurlname="$(printf %s "$url" | cut -d / -f 1-5)";;
esac
url="$pkgurlname/tags" url="$pkgurlname/tags"
rx='/archive/[^/]+/\Q'"$pkgname"'\E-v?\K[\d.]+(?=\.tar\.gz")';; rx='/archive/[^/]+/\Q'"$pkgname"'\E-v?\K[\d.]+(?=\.tar\.gz")';;
*bitbucket.org*) *bitbucket.org*)
@ -131,8 +137,11 @@ update_check() {
url="https://bitbucket.org/$pkgurlname/downloads" url="https://bitbucket.org/$pkgurlname/downloads"
rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar)';; rx='/(get|downloads)/(v?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar)';;
*ftp.gnome.org*|*download.gnome.org*) *ftp.gnome.org*|*download.gnome.org*)
: ${pattern="\Q$pkgname\E-\K(0|[13]\.[0-9]*[02468]|[4-9][0-9]+)\.[0-9.]*[0-9](?=)"} : ${pattern="\Q$pkgname\E-\K(0|[13]\.[0-9]*[02468]|[4-9][0-9]+)\.[0-9.]*[0-9](?=.tar)"}
url="https://download.gnome.org/sources/$pkgname/cache.json";; url="https://download.gnome.org/sources/$pkgname/cache.json";;
*archive.xfce.org*)
: ${pattern="\Q$pkgname\E-\K((([4-9]|([1-9][0-9]+))\.[0-9]*[02468]\.[0-9.]*[0-9])|([0-3]\.[0-9.]*))(?=.tar)"}
url="https://archive.xfce.org/feeds/project/$pkgname" ;;
*kernel.org/pub/linux/kernel/*) *kernel.org/pub/linux/kernel/*)
rx=linux-'\K'${version%.*}'[\d.]+(?=\.tar\.xz)';; rx=linux-'\K'${version%.*}'[\d.]+(?=\.tar\.xz)';;
*cran.r-project.org/src/contrib*) *cran.r-project.org/src/contrib*)
@ -145,8 +154,8 @@ update_check() {
rx='/crates/'${pkgname#rust-}'/\K[0-9.]*(?=/download)' ;; rx='/crates/'${pkgname#rust-}'/\K[0-9.]*(?=/download)' ;;
*codeberg.org*) *codeberg.org*)
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)" pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
url="https://codeberg.org/$pkgurlname/releases" url="https://codeberg.org/$pkgurlname/tags"
rx='/archive/\K[\d.]+(?=\.tar\.gz)' ;; rx='/archive/(v-?|\Q'"$pkgname"'\E-)?\K[\d.]+(?=\.tar\.gz)' ;;
*hg.sr.ht*) *hg.sr.ht*)
pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)" pkgurlname="$(printf %s "$url" | cut -d/ -f4,5)"
url="https://hg.sr.ht/$pkgurlname/tags" url="https://hg.sr.ht/$pkgurlname/tags"

View file

@ -1,7 +1,8 @@
# voidlinux remote repositories (musl) # voidlinux remote repositories (musl)
repository=https://mirrors.servercentral.com/voidlinux/current/musl repository=https://repo-default.voidlinux.org/current/musl
repository=https://mirrors.servercentral.com/voidlinux/current/musl/nonfree repository=https://repo-default.voidlinux.org/current/musl/bootstrap
repository=https://mirrors.servercentral.com/voidlinux/current/musl/debug repository=https://repo-default.voidlinux.org/current/musl/nonfree
repository=https://repo-default.voidlinux.org/current/musl/debug
# Cereus Linux remote repositories (musl) # Cereus Linux remote repositories (musl)
repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/x86_64-musl repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/x86_64-musl

View file

@ -1,7 +1,8 @@
# voidlinux remote repositories (glibc) # voidlinux remote repositories (glibc)
repository=https://mirrors.servercentral.com/voidlinux/current repository=https://repo-default.voidlinux.org/current
repository=https://mirrors.servercentral.com/voidlinux/current/nonfree repository=https://repo-default.voidlinux.org/current/nonfree
repository=https://mirrors.servercentral.com/voidlinux/current/debug repository=https://repo-default.voidlinux.org/current/debug
repository=https://repo-default.voidlinux.org/current/bootstrap
# Cereus Linux remote repositories (glibc) # Cereus Linux remote repositories (glibc)
repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/x86_64 repository=https://sourceforge.net/projects/cereus-linux/files/repos/cereus-core/x86_64

83
pkglist
View file

@ -1,83 +0,0 @@
These are the packages we are maintaining in both Core and Extra repositories.
The rest of them are from Void team.
Graphite-color-schemes
Graphite-color-schemes-black
Graphite-color-schemes-dark
Graphite-color-schemes-light
Graphite-color-schemes-nord-dark
Graphite-color-schemes-nord-light
Graphite-gtk-theme
Graphite-gtk-theme-black
Graphite-gtk-theme-black-compact
Graphite-gtk-theme-compact
Graphite-gtk-theme-dark
Graphite-gtk-theme-dark-compact
Graphite-gtk-theme-light
Graphite-gtk-theme-light-compact
Graphite-gtk-theme-nord-dark
Graphite-gtk-theme-nord-dark-compact
Graphite-gtk-theme-nord-light
Graphite-gtk-theme-nord-light-compact
Graphite-kvantum-theme
Graphite-kvantum-theme-Nord-dark
Graphite-kvantum-theme-Nord-light
Graphite-kvantum-theme-black
Graphite-kvantum-theme-dark
Graphite-kvantum-theme-light
Mint-Ice-Y-Dark
Sierra-Dark-Fluxbox
base-cereus
base-chroot-cereus
base-files-cereus
blesh
blesh-git
brave-bin
budgie-extras
calamares
calamares-cereus
calamares-modules-cereus
calmsky-icon-theme
cereus-neofetch
cereus-repo-core
cereus-repo-extra
cereus-wallpapers
flat-remix-icewm-theme
flat-remix-icon-theme-black
flat-remix-icon-theme-blue
flat-remix-icon-theme-brown
flat-remix-icon-theme-cyan
flat-remix-icon-theme-green
flat-remix-icon-theme-grey
flat-remix-icon-theme-magenta
flat-remix-icon-theme-orange
flat-remix-icon-theme-red
flat-remix-icon-theme-teal
flat-remix-icon-theme-violet
flat-remix-icon-theme-yellow
graphite-kvantum-theme
jetbrains-mono-font
librewolf-bin
musl-locales
nerd-fonts-symbols
octoxbps-git
picom-ibhagwan
picom-jonaburg
pixelitos-icon-theme
plasma-fluxbox
plasma-i3
runit-cereus
runit-cereus-apparmor
vibrancy-icon-theme
vibrancy-icon-theme-colors
vibrancy-icon-theme-dark
vibrancy-icon-theme-full-dark
vibrancy-icon-theme-light
vibrancy-icon-theme-nonmono-dark
vibrancy-icon-theme-nonmono-light
whatsdesk-bin
whatsdesk-bin-i686
whatsdesk-git
xed-xapps
xed-xapps-devel
xidlehook

View file

@ -1,6 +1,6 @@
# Template file for 'Graphite-color-schemes' # Template file for 'Graphite-color-schemes'
pkgname=Graphite-color-schemes pkgname=Graphite-color-schemes
version=2022.02.21 version=2023.01.16
revision=1 revision=1
build_style=meta build_style=meta
nostrip=yes nostrip=yes
@ -16,8 +16,6 @@ short_desc="Custom additional color schemes of Graphite theme for KDE Plasma des
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <https://github.com/KF-Art>"
license="GPL-3.0" license="GPL-3.0"
homepage="https://github.com/KF-Art/Graphite-color-schemes" homepage="https://github.com/KF-Art/Graphite-color-schemes"
# distfiles="${homepage}/archive/v${version}.tar.gz"
# checksum=
do_fetch() { do_fetch() {
git clone https://github.com/KF-Art/Graphite-color-schemes ${wrksrc} git clone https://github.com/KF-Art/Graphite-color-schemes ${wrksrc}

View file

@ -1 +0,0 @@
Graphite-gtk-theme

View file

@ -0,0 +1,35 @@
diff --git a/src/sass/gtk/apps/_xfce.scss b/src/sass/gtk/apps/_xfce.scss
index f2f219f..91b2c2f 100644
--- a/src/sass/gtk/apps/_xfce.scss
+++ b/src/sass/gtk/apps/_xfce.scss
@@ -18,15 +18,21 @@
color: on($panel, secondary);
font-weight: 500;
- button {
- @extend %button-flat;
- @extend %button-on-dark;
-
- min-height: 16px;
- min-width: 16px;
- padding: 0;
- border-radius: 0;
- }
+.xfce4-panel button {
+ border: 0;
+ border-radius: 0;
+ box-shadow: none;
+ text-shadow: none;
+ background: transparent;
+ color: white;
+ -gtk-icon-shadow: none; }
+
+ button:not(#whiskermenu-button):active {
+ box-shadow: inset 0 4px 0 rgba(0, 0, 0, 0.2);;
+ background: rgba(0, 0, 0, 0.2);
+ color: white; }
+ .xfce4-panel.vertical button:not(#whiskermenu-button):checked, .xfce4-panel.vertical button:not(#whiskermenu-button):active {
+ box-shadow: inset 4px 0 0 rgba(0, 0, 0, 0.2);; }
.tasklist button {
border-image: image(transparent) 0 0 2 / 0 0 2px;

View file

@ -1,7 +1,7 @@
# Template file for 'Graphite-gtk-theme' # Template file for 'Graphite-gtk-theme'
pkgname=Graphite-gtk-theme pkgname=Graphite-gtk-theme
version=2022.09.02 version=2023.05.17
date=2022-09-02 date=${version//./-}
revision=1 revision=1
repository="cereus-extra" repository="cereus-extra"
wrksrc=Graphite-gtk-theme-${date} wrksrc=Graphite-gtk-theme-${date}
@ -25,11 +25,11 @@ ${pkgname}-nord-light
${pkgname}-nord-light-compact" ${pkgname}-nord-light-compact"
short_desc="Material design inspired GTK theme with light and dark variants" short_desc="Material design inspired GTK theme with light and dark variants"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="GPL-3.0" license="GPL-3.0"
homepage="https://github.com/vinceliuice/Graphite-gtk-theme" homepage="https://github.com/vinceliuice/Graphite-gtk-theme"
distfiles="${homepage}/archive/refs/tags/${date}.tar.gz" distfiles="${homepage}/archive/refs/tags/${date}.tar.gz"
checksum=af03e9e5ae29a5b8ee4b10a8e2ca95396bc300e35e939f21dedbc9568aefcd60 checksum=aa212d71ba70cfbc3038fc0f850b1265a9d85a3a87ae1a9da024127e25f53903
Graphite-gtk-theme-black_package() { Graphite-gtk-theme-black_package() {
nostrip=yes nostrip=yes

View file

@ -1,22 +1,23 @@
# Template file for 'Graphite-kvantum-theme' # Template file for 'Graphite-kvantum-theme'
pkgname=Graphite-kvantum-theme pkgname=Graphite-kvantum-theme
version=1.0 version=1.1.1
revision=4 revision=1
build_style=meta build_style=meta
repository=cereus-extra repository=cereus-extra
depends="${pkgname}-black \ depends="${pkgname}-black
${pkgname}-Nord-dark \ ${pkgname}-Nord-dark
${pkgname}-Nord-light \ ${pkgname}-Nord-light
${pkgname}-dark \ ${pkgname}-dark
${pkgname}-light" ${pkgname}-light"
nostrip=yes nostrip=yes
wrksrc=Graphite-kvantum-colors-${version} wrksrc=Graphite-kvantum-colors-${version}
short_desc="Material design inspired Kvantum theme" short_desc="Material design inspired Kvantum theme"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="GPL-3.0" license="GPL-3.0"
homepage="https://github.com/KF-Art/Graphite-kvantum-colors" homepage="https://github.com/KF-Art/Graphite-kvantum-colors"
changelog="${homepage}/releases/tag/${version}"
distfiles="${homepage}/archive/refs/tags/${version}.tar.gz" distfiles="${homepage}/archive/refs/tags/${version}.tar.gz"
checksum=01be2c306de4e4b3ca6788d02e49206688aae207ccf0252957bece02eb1b1e1c checksum=af603cbd5b1e323ca775a8a724e94bddf9534a0961db6d5a4771bcb6d9a02fbc
Graphite-kvantum-theme-black_package() { Graphite-kvantum-theme-black_package() {
color=black color=black

View file

@ -1,7 +1,7 @@
# Template file for 'Tela-icon-theme' # Template file for 'Tela-icon-theme'
pkgname=Tela-icon-theme pkgname=Tela-icon-theme
date=2022-08-28 version=2023.02.03
version=2022.08.28 date=${version//./-}
revision=1 revision=1
build_style=meta build_style=meta
repository=cereus-extra repository=cereus-extra
@ -16,10 +16,8 @@ depends="${pkgname}-standard \
${pkgname}-red \ ${pkgname}-red \
${pkgname}-yellow \ ${pkgname}-yellow \
${pkgname}-manjaro ${pkgname}-manjaro
${pkgname}-ubuntu" ${pkgname}-ubuntu
${pkgname}-nord"
# Keep nord variant until it integrates to future release (currently is only in git branch)
# ${pkgname}-nord"
nostrip=yes nostrip=yes
icondir=usr/share/icons icondir=usr/share/icons
@ -30,7 +28,7 @@ maintainer="Kevin F. <https://github.com/KF-Art>"
license="GPL-3.0" license="GPL-3.0"
homepage="https://github.com/vinceliuice/Tela-icon-theme" homepage="https://github.com/vinceliuice/Tela-icon-theme"
distfiles="${homepage}/archive/refs/tags/${date}.tar.gz" distfiles="${homepage}/archive/refs/tags/${date}.tar.gz"
checksum=09be82313a0ccfab4e3390de6dd1bd0ace115ba5990aae42e327777642ee7ff4 checksum=ab6bf283875a8d777d1a3c8b5969c78a0d329409a4561f4c0f22d36d69171e5d
Tela-icon-theme-standard_package() { Tela-icon-theme-standard_package() {
color=standard color=standard

View file

@ -1,7 +1,7 @@
# Template file for 'alttab-git' # Template file for 'alttab-git'
pkgname=alttab-git pkgname=alttab-git
version=2022.05.28 version=2023.03.19
revision=2 revision=1
build_style=gnu-configure build_style=gnu-configure
hostmakedepends="pkg-config git" hostmakedepends="pkg-config git"
repository="cereus-extra" repository="cereus-extra"
@ -9,7 +9,7 @@ makedepends="libX11-devel libXft-devel libXmu-devel libXrandr-devel
libXrender-devel libpng-devel libXpm-devel uthash automake" libXrender-devel libpng-devel libXpm-devel uthash automake"
checkdepends="procps-ng xvfb-run xeyes xprop" checkdepends="procps-ng xvfb-run xeyes xprop"
short_desc="Task switcher for minimalistic window managers - git branch" short_desc="Task switcher for minimalistic window managers - git branch"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="GPL-3.0-or-later" license="GPL-3.0-or-later"
homepage="https://github.com/sagb/alttab" homepage="https://github.com/sagb/alttab"
changelog="https://github.com/sagb/alttab/raw/master/ChangeLog" changelog="https://github.com/sagb/alttab/raw/master/ChangeLog"

View file

@ -1,11 +1,11 @@
# Template file for 'base-cereus' # Template file for 'base-cereus'
pkgname=base-cereus pkgname=base-cereus
version=0.114 version=2023.02.14
revision=4 revision=1
build_style=meta build_style=meta
repository=cereus-core repository=cereus-core
short_desc="Cereus Linux base system meta package" short_desc="Cereus Linux base system meta package"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="Public Domain" license="Public Domain"
conflicts="base-system" conflicts="base-system"
homepage="https://cereuslinuxproject.github.io" homepage="https://cereuslinuxproject.github.io"
@ -16,7 +16,8 @@ depends="
mdocml>=1.13.3 shadow e2fsprogs btrfs-progs xfsprogs f2fs-tools dosfstools mdocml>=1.13.3 shadow e2fsprogs btrfs-progs xfsprogs f2fs-tools dosfstools
procps-ng tzdata pciutils usbutils iana-etc openssh dhcpcd cereus-repo-core procps-ng tzdata pciutils usbutils iana-etc openssh dhcpcd cereus-repo-core
cereus-repo-extra kbd iproute2 iputils iw wpa_supplicant xbps nvi wifi-firmware cereus-repo-extra kbd iproute2 iputils iw wpa_supplicant xbps nvi wifi-firmware
cereus-artwork traceroute ethtool kmod acpid eudev runit-cereus removed-packages" cereus-artwork traceroute ethtool kmod acpid eudev runit-cereus removed-packages
xrankmirrors"
case "$XBPS_TARGET_MACHINE" in case "$XBPS_TARGET_MACHINE" in
*-musl) depends+=" musl musl-locales";; *-musl) depends+=" musl musl-locales";;
@ -24,5 +25,5 @@ case "$XBPS_TARGET_MACHINE" in
esac esac
case "$XBPS_TARGET_MACHINE" in case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*|ppc*) depends+=" linux-base linux5.15 linux5.15-headers";; i686*|x86_64*|ppc*) depends+=" linux-default-cereus";;
esac esac

View file

@ -4,4 +4,3 @@
[[ $- != *i* ]] && return [[ $- != *i* ]] && return
alias ls='ls --color=auto' alias ls='ls --color=auto'
PS1='[\u@\h \W]\$ '

View file

@ -5,7 +5,7 @@
version="1.0" version="1.0"
distributor_id="Cereus" distributor_id="Cereus"
description="Cereus Linux" description="Cereus Linux"
release="Rolling" release="Beta"
codename="cereus" codename="cereus"
options="" options=""
short=0 short=0

View file

@ -1,12 +1,12 @@
# Template file for 'base-files' # Template file for 'base-files'
pkgname=base-files pkgname=base-files
version=2022.07.03 version=2023.01.30
revision=11 revision=1
bootstrap=yes bootstrap=yes
repository=cereus-core repository=cereus-core
depends="xbps-triggers" depends="xbps-triggers"
short_desc="Cereus Linux base system files" short_desc="Cereus Linux base system files"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="Public Domain" license="Public Domain"
homepage="https://cereus-linux.sourceforge.io" homepage="https://cereus-linux.sourceforge.io"
conflicts="base-files>=0.77" conflicts="base-files>=0.77"

View file

@ -0,0 +1,20 @@
# Template file for 'betterlockscreen-gui'
pkgname=betterlockscreen-gui
version=2023.01.28
revision=1
repository="cereus-extra"
hostmakedepends="git"
depends="python3-psutil betterlockscreen python3-gobject pygtk resolution-hooks bc"
short_desc="Betterlockscreen GUI configuration tool"
maintainer="Kevin F. <kevinfigueroart@protonmail.com>"
license="GPL-3.0-or-later"
homepage="https://github.com/CereusLinuxProject/betterlockscreen-gui"
changelog="${homepage}/commits/master"
do_fetch() {
git clone ${homepage} ${wrksrc}
}
do_install() {
vcopy usr ./
}

View file

@ -1,13 +1,13 @@
# Template file for 'blesh-git' # Template file for 'blesh-git'
pkgname=blesh-git pkgname=blesh-git
version=2022.11.12 version=2023.04.18
revision=1 revision=1
makedepends="gawk git" makedepends="gawk git"
depends="bash git" depends="bash git"
build_style="gnu-makefile" build_style="gnu-makefile"
repository=cereus-extra repository=cereus-extra
short_desc="A replacement for bash's line editor with advanced features" short_desc="A replacement for bash's line editor with advanced features - git nightly branch"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="BSD-3-Clause" license="BSD-3-Clause"
conflicts="blesh" conflicts="blesh"
homepage="https://github.com/akinomyoga/ble.sh" homepage="https://github.com/akinomyoga/ble.sh"

View file

@ -1,17 +1,17 @@
# Template file for 'blesh' # Template file for 'blesh'
pkgname=blesh pkgname=blesh
version=0.3.3 version=0.3.4
revision=4 revision=1
depends="bash" depends="bash"
repository=cereus-extra repository=cereus-extra
wrksrc="ble-${version}" wrksrc="ble-${version}"
short_desc="A replacement for bash's line editor with advanced features" short_desc="A replacement for bash's line editor with advanced features"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="BSD-3-Clause" license="BSD-3-Clause"
conflicts="blesh-git" conflicts="blesh-git"
homepage="https://github.com/akinomyoga/ble.sh" homepage="https://github.com/akinomyoga/ble.sh"
distfiles="${homepage}/releases/download/v0.3.3/ble-${version}.tar.xz" distfiles="${homepage}/releases/download/v${version}/ble-${version}.tar.xz"
checksum=a7e66383bd828584e82133ee08ab0bd8074ef0a739eacb835ff0970c3853f33a checksum=e543a43d211fef8f52b96b2e7935e892581421f759cda4ae87563854ebc60573
do_install() { do_install() {
vmkdir usr/share/blesh vmkdir usr/share/blesh

View file

@ -1,16 +1,16 @@
# Template file for 'brave-bin' # Template file for 'brave-bin'
pkgname=brave-bin pkgname=brave-bin
version=1.45.125 version=1.50.121
revision=1 revision=1
archs="x86_64" archs="x86_64"
repository="cereus-extra" repository="cereus-extra"
short_desc="Secure, fast and private web browser with ad blocker" short_desc="Secure, fast and private web browser with ad blocker"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
hostmakedepends="tar xz awk" hostmakedepends="tar xz awk"
license="Mozilla Public License Version 2.0" license="MPL-2.0"
homepage="https://brave.com" homepage="https://brave.com"
distfiles="https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb" distfiles="https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"
checksum=8cef0647d7bd726b347ed27a6efac847d1fb620023a211e090035f9db94febe9 checksum=b15edc10d04240bb3c569253d7507bd488ee18e95ec5de66fd696fffdbeab561
do_extract() { do_extract() {
mkdir -p ${DESTDIR} mkdir -p ${DESTDIR}

View file

@ -1,18 +1,18 @@
# Template file for 'budgie-extras' # Template file for 'budgie-extras'
pkgname=budgie-extras pkgname=budgie-extras
version=1.5.0 version=1.6.0
revision=1 revision=1
repository=cereus-extra repository=cereus-extra
build_style=meson build_style=meson
hostmakedepends="pkg-config glib" hostmakedepends="pkg-config glib awk"
makedepends="budgie-desktop-devel pam-devel pkg-config glib-devel glib cmake libgee08-devel intltool granite-devel libsoup-devel AppStream-devel zeitgeist-devel libhandy-devel libkeybinder3-devel libnma-devel" makedepends="budgie-desktop-devel pam-devel pkg-config glib-devel glib cmake libgee08-devel intltool granite-devel libsoup-devel AppStream-devel zeitgeist-devel libhandy-devel libkeybinder3-devel libnma-devel"
short_desc="Additional Budgie desktop applets to enhance user experience" short_desc="Additional Budgie desktop applets to enhance user experience"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="GPL-3.0" license="GPL-3.0-or-later"
homepage="https://github.com/UbuntuBudgie/budgie-extras" homepage="https://github.com/UbuntuBudgie/budgie-extras"
changelog="${homepage}/releases/tag/v${version}" changelog="${homepage}/releases/tag/v${version}"
distfiles="${homepage}/releases/download/v${version}/${pkgname}-${version}.tar.xz" distfiles="${homepage}/releases/download/v${version}/${pkgname}-${version}.tar.xz"
checksum=10d14a1f6c90d5fa8106077094f83030a5ac26cf81e9820e9c34566b182a844a checksum=450e801a187290a00b7fb3e7922ea91159d7ecc8ae6592f375ca7a0874a0f674
post_install() { post_install() {
vlicense LICENSE vlicense LICENSE

View file

@ -1,12 +1,12 @@
# Template file for 'calamares-branding' # Template file for 'calamares-branding'
pkgname=calamares-branding pkgname=calamares-branding
version=2022.06.09 version=2023.01.30
revision=1 revision=2
hostmakedepends="git" hostmakedepends="git"
_brandingdir="etc/calamares/branding/cereus" _brandingdir="etc/calamares/branding/cereus"
repository="cereus-core" repository="cereus-core"
short_desc="Calamares branding for Cereus Linux" short_desc="Calamares branding for Cereus Linux"
maintainer="KF-Art <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="CC-BY-SA-4.0" license="CC-BY-SA-4.0"
homepage="https://github.com/CereusLinuxProject/Cereus-Artwork/tree/main/calamares-branding" homepage="https://github.com/CereusLinuxProject/Cereus-Artwork/tree/main/calamares-branding"
@ -17,8 +17,9 @@ do_fetch() {
do_install() { do_install() {
vmkdir ${_brandingdir} vmkdir ${_brandingdir}
vcopy ${pkgname}/*.png ${_brandingdir} vcopy ${pkgname}/*.png ${_brandingdir}
cp branding/cereus-logo-512x512.png branding/logo.png vinstall ${pkgname}/show.qml 0644 ${_brandingdir}
vinstall branding/logo.png 0644 ${_brandingdir} cp Branding/cereus-logo-512x512.png Branding/logo.png
vinstall Branding/logo.png 0644 ${_brandingdir}
vinstall ${pkgname}/branding.desc 0644 ${_brandingdir} vinstall ${pkgname}/branding.desc 0644 ${_brandingdir}
vlicense LICENSE vlicense LICENSE
} }

View file

@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View file

@ -1,107 +0,0 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# === This file is part of Calamares - <http://github.com/calamares> ===
#
# Copyright 2014 - 2019, Philip Müller <philm@manjaro.org>
# Copyright 2016, Artoo <artoo@manjaro.org>
#
# Calamares is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Calamares is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
import libcalamares
import subprocess
from shutil import copy2
from distutils.dir_util import copy_tree
from os.path import join, exists
from libcalamares.utils import target_env_call
class ConfigController:
def __init__(self):
self.__root = libcalamares.globalstorage.value("rootMountPoint")
@property
def root(self):
return self.__root
def terminate(self, proc):
target_env_call(['killall', '-9', proc])
def copy_file(self, file):
if exists("/" + file):
copy2("/" + file, join(self.root, file))
def copy_folder(self, source, target):
if exists("/" + source):
copy_tree("/" + source, join(self.root, target))
def remove_pkg(self, pkg):
target_env_call(['xbps-remove', '-Ry', pkg])
def umount(self, mp):
subprocess.call(["umount", "-l", join(self.root, mp)])
def mount(self, mp):
subprocess.call(["mount", "-B", "/" + mp, join(self.root, mp)])
def rmdir(self, dir):
subprocess.call(["rm", "-Rf", join(self.root, dir)])
def mkdir(self, dir):
subprocess.call(["mkdir", "-p", join(self.root, dir)])
def run(self):
if exists(join(self.root, "usr/sbin/void-installer")):
target_env_call(["rm", "-f", "usr/sbin/void-installer"])
if exists(join(self.root, "usr/sbin/cereus-installer")):
target_env_call(["rm", "-f", "usr/sbin/cereus-installer"])
# Initialize package manager databases
if libcalamares.globalstorage.value("hasInternet"):
target_env_call(["xbps-install", "-Syy"])
# Remove calamares
self.remove_pkg("calamares-cereus")
if exists(join(self.root, "usr/share/applications/calamares.desktop")):
target_env_call(["rm", "-f", "usr/share/applications/calamares.desktop"])
# Copy skel to root
self.copy_folder('etc/skel', 'root')
# Update grub.cfg
if exists(join(self.root, "usr/bin/update-grub")):
target_env_call(["update-grub"])
# Enable 'menu_auto_hide' when supported in grubenv
if exists(join(self.root, "usr/bin/grub-set-bootflag")):
target_env_call(["grub-editenv", "-", "set", "menu_auto_hide=1", "boot_success=1"])
# Enable plymouth
target_env_call(["plymouth-set-default-theme", "-R", "cereus_simply"])
# Replace /etc/issue msg from live
if exists(join(self.root, "etc/issue.new")):
target_env_call(["mv", "etc/issue.new", "etc/issue"])
# Reconfigure all target packages to ensure everything is ok
target_env_call(["xbps-reconfigure", "-fa"])
def run():
""" Misc postinstall configurations """
config = ConfigController()
return config.run()

View file

@ -1,6 +0,0 @@
# Syntax is YAML 1.2
---
type: "job"
name: "postcfg"
interface: "python"
script: "main.py" #assumed relative to the current directory

View file

@ -1,16 +1,21 @@
# Template file for 'calamares-modules-cereus' # Template file for 'calamares-modules-cereus'
pkgname=calamares-modules-cereus pkgname=calamares-modules-cereus
version=2022.09.22 version=2023.02.14
revision=1 revision=2
modules_dir="usr/lib/calamares/modules/" hostmakedepends="git"
_modules_dir="usr/lib/calamares/modules/"
repository="cereus-core" repository="cereus-core"
short_desc="Additional Cereus modules for Calamares installer" short_desc="Additional Cereus Linux modules for Calamares installer"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="GPL-3.0" license="GPL-2.0"
homepage="https://cereuslinuxproject.github.io" homepage="https://github.com/CereusLinuxProject/calamares-modules"
do_fetch() {
git clone ${homepage} ${wrksrc}
}
do_install() { do_install() {
vmkdir ${modules_dir} vmkdir ${_modules_dir}
vcopy ${FILESDIR}/modules/* ${modules_dir} vcopy modules/* ${_modules_dir}
vlicense ${FILESDIR}/LICENSE vlicense LICENSE
} }

View file

@ -1,7 +1,7 @@
# Template file for 'calamares' # Template file for 'calamares'
pkgname=calamares pkgname=calamares
version=3.2.61 version=3.2.62
revision=2 revision=1
build_style=cmake build_style=cmake
repository=cereus-extra repository=cereus-extra
configure_args="-DCMAKE_BUILD_TYPE=Release configure_args="-DCMAKE_BUILD_TYPE=Release
@ -13,19 +13,19 @@ configure_args="-DCMAKE_BUILD_TYPE=Release
-DBoost_NO_BOOST_CMAKE=ON -DBoost_NO_BOOST_CMAKE=ON
-DSKIP_MODULES='webview;interactiveterminal;services-systemd;dummyprocess;dummypython;dummycpp;dummypythonqt'" -DSKIP_MODULES='webview;interactiveterminal;services-systemd;dummyprocess;dummypython;dummycpp;dummypythonqt'"
hostmakedepends="git extra-cmake-modules pkg-config gettext hostmakedepends="git extra-cmake-modules pkg-config gettext
ckbcomp kcoreaddons kdelibs4support python3-yaml awk" ckbcomp kcoreaddons kdelibs4support python3-yaml awk clang"
makedepends="python3-devel python3-jsonschema yaml-cpp-devel boost-devel qt5-devel python3-devel kpmcore-devel makedepends="python3-devel python3-jsonschema yaml-cpp-devel boost-devel qt5-devel python3-devel kpmcore-devel
qt5-tools qt5-translations boost boost-python3-1.80 python3-QtPy qt5-svg-devel qt5-tools qt5-translations boost boost-python3 python3-QtPy qt5-svg-devel
libpwquality AppStream-qt plasma-framework-devel qt5-webengine" libpwquality AppStream-qt plasma-framework-devel qt5-webengine"
depends="kconfig kcoreaddons kiconthemes ki18n kio ksolid yaml-cpp kpmcore boost ckbcomp depends="kconfig kcoreaddons kiconthemes ki18n kio ksolid yaml-cpp kpmcore boost ckbcomp
hardinfo qt5-svg polkit-qt5 gtk-update-icon-cache plasma-framework qt5-xmlpatterns hardinfo qt5-svg polkit-qt5 gtk-update-icon-cache plasma-framework qt5-xmlpatterns
squashfs-tools libpwquality AppStream-qt icu" squashfs-tools libpwquality AppStream-qt icu"
short_desc="Distribution-independent installer framework" short_desc="Distribution-independent installer framework"
maintainer="Kevin F. <https://github.com/KF-Art>" maintainer="Kevin F. <kevinfigueroart@proton.me>"
license="GPL" license="GPL"
homepage="https://calamares.io" homepage="https://calamares.io"
distfiles="https://github.com/${pkgname}/${pkgname}/releases/download/v${version}/${pkgname}-${version}.tar.gz" distfiles="https://github.com/${pkgname}/${pkgname}/releases/download/v${version}/${pkgname}-${version}.tar.gz"
checksum=7591b9b60738bdba7b9de2b8da5462ab21006db06a006f0dd21ac5b832711dd2 checksum=a0fbcec2a438693753fc174220356119ad7adb8a2b19c317518aa1cb025d6dd0
case ${XBPS_TARGET_MACHINE} in case ${XBPS_TARGET_MACHINE} in
*-musl) *-musl)
@ -45,4 +45,6 @@ post_install() {
for license in BSD-2-Clause CC-BY-4.0 CC0-1.0 GPL-3.0-or-later LGPL-2.0-only LGPL-2.1-only LGPL-3.0-or-later MIT; do for license in BSD-2-Clause CC-BY-4.0 CC0-1.0 GPL-3.0-or-later LGPL-2.0-only LGPL-2.1-only LGPL-3.0-or-later MIT; do
vlicense LICENSES/${license}.txt vlicense LICENSES/${license}.txt
done done
vbin build/loadmodule
} }

View file

@ -1,6 +1,6 @@
# Template file for 'cereus-artwork' # Template file for 'cereus-artwork'
pkgname=cereus-artwork pkgname=cereus-artwork
version=2022.06.14 version=2023.01.30
revision=1 revision=1
hostmakedepends="git" hostmakedepends="git"
_wallpaperdir="usr/share/backgrounds" _wallpaperdir="usr/share/backgrounds"
@ -17,7 +17,7 @@ do_fetch() {
} }
do_install() { do_install() {
# Create directories in fake root # Create directories in targetdir
for dir in ${_wallpaperdir} ${_icondir} ${_logodir} for dir in ${_wallpaperdir} ${_icondir} ${_logodir}
do vmkdir ${dir} do vmkdir ${dir}
done done
@ -41,16 +41,29 @@ do_install() {
# Install icons # Install icons
vinstall branding/cereus-logo-512x512.svg 0644 \
${_icondir}/scalable/apps cereus-logo.svg for logo in cereus-logo{,-dark,-light}; do
vinstall Branding/${logo}-512x512.svg 0644 \
${_icondir}/scalable/apps ${logo}.svg
done
for res in 16 22 32 48 64 128 256 512 for res in 16 22 32 48 64 128 256 512
do vinstall branding/cereus-logo-${res}x${res}.png 0644 \ do vinstall Branding/cereus-logo-${res}x${res}.png 0644 \
${_icondir}/${res}x${res}/apps/ cereus-logo.png ${_icondir}/${res}x${res}/apps/ cereus-logo.png
done done
for res in 16 22 32 48 64 128 256 512
do vinstall Branding/cereus-logo-light-${res}x${res}.png 0644 \
${_icondir}/${res}x${res}/apps/ cereus-logo-light.png
done
for res in 16 22 32 48 64 128 256 512
do vinstall Branding/cereus-logo-dark-${res}x${res}.png 0644 \
${_icondir}/${res}x${res}/apps/ cereus-logo-dark.png
done
# Install logos # Install logos
vcopy branding/* ${_logodir} vcopy Branding/* ${_logodir}
# Install license # Install license
vlicense LICENSE vlicense LICENSE

View file

@ -0,0 +1,5 @@
# INSTALL
case "$ACTION" in
post)
plymouth-set-default-theme -R cereus_simply ;;
esac

View file

@ -0,0 +1,36 @@
# Template file for 'cereus-global-presets'
pkgname=cereus-global-presets
version=2023.01.28
revision=1
repository="cereus-core"
conf_files="
/etc/pipewire/pipewire.conf
/etc/skel/.profile
/etc/xdg/autostart/*.desktop
/etc/bash/bashrc.d/*.sh"
hostmakedepends="git"
depends="cereus-themes-presets bluez gst-libav libva-utils gst-plugins-base1 gst-plugins-good1 libcups-filters python3-cups python3-cupshelpers system-config-printer system-config-printer-udev vpm vsv numlockx xdg-user-dirs octoxbps-git touchegg plymouth cereus-plymouth-theme sof-firmware libspa-bluetooth NetworkManager chrony elogind alsa-pipewire pipewire gstreamer1-pipewire wireplumber pulseaudio-utils"
short_desc="Cereus Linux global default configurations"
maintainer="Kevin F. <kevinfigueroart@protonmail.com>"
license="GPL-3.0-or-later"
homepage="https://github.com/CereusLinuxProject/presets"
changelog="${homepage}/commits/main/global"
do_fetch() {
git clone ${homepage} ${wrksrc}
}
do_install() {
cd global/etc
vinstall pipewire/pipewire.conf 0644 /etc/pipewire/
vinstall skel/.profile 0644 /etc/skel/
for f in octoxbps-notifier pipewire touchegg; do
vinstall xdg/autostart/${f}.desktop 0644 /etc/xdg/autostart/
done
cd bash/bashrc.d
for f in 99-ble 10-cereus-prompt; do
vinstall ${f}.sh 0644 /etc/bash/bashrc.d/
done
}

View file

@ -0,0 +1,22 @@
# Template file for 'cereus-lightdm-presets'
pkgname=cereus-lightdm-presets
version=2023.01.20
revision=1
repository="cereus-core"
conf_files="
/etc/lightdm/lightdm.conf.d/*.conf"
hostmakedepends="git"
short_desc="Cereus Linux default configurations for LightDM"
maintainer="Kevin F. <kevinfigueroart@protonmail.com>"
license="GPL-3.0-or-later"
homepage="https://github.com/CereusLinuxProject/presets"
changelog="${homepage}/commits/main/global/etc/lightdm"
do_fetch() {
git clone ${homepage} ${wrksrc}
}
do_install() {
cd global/etc/lightdm/lightdm.conf.d
vinstall 10-numlock.conf 0644 etc/lightdm/lightdm.conf.d/
}

View file

@ -0,0 +1,33 @@
# Template file for 'cereus-lxqt-presets'
pkgname=cereus-lxqt-presets
version=2023.02.10
revision=1
repository="cereus-core"
conf_files="
/etc/lxqt/*.conf
/etc/pcmanfm-qt/*/*.conf
/etc/qterminal.org/qterminal.ini
/etc/xdg/featherpad/*.conf
/etc/skel/.config/kdeglobals
/etc/skel/.config/lockscreen-bg.conf
/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
/etc/skel/.config/featherpad/*.conf
/etc/xdg/autostart/ksuperkey.desktop"
hostmakedepends="git"
depends="lxqt-cereus cereus-global-presets cereus-lightdm-presets udisks2 gvfs-afc gvfs-mtp
gvfs-smb blueman flameshot pasystray-git ksuperkey network-manager-applet pavucontrol-qt"
short_desc="Cereus Linux default configurations for LXQt edition"
maintainer="Kevin F. <kevinfigueroart@protonmail.com>"
license="GPL-3.0-or-later"
homepage="https://github.com/CereusLinuxProject/presets"
changelog="${homepage}/commits/main/lxqt"
do_fetch() {
git clone ${homepage} ${wrksrc}
}
do_install() {
vcopy lxqt/* ./
vinstall global/etc/skel/.config/lockscreen-bg.conf 0644 etc/skel/.config/
}

View file

@ -0,0 +1,18 @@
# Template file for 'cereus-lxqt-themes'
pkgname=cereus-lxqt-themes
version=2023.01.30
revision=1
repository="cereus-extra"
_theme_dir="usr/share/lxqt/themes"
short_desc="Cereus Linux custom themes for LXQt desktop"
maintainer="Kevin F. <kevinfigueroart@protonmail.com>"
license="GPL-3.0-or-later"
homepage="https://github.com/CereusLinuxProject/cereus-lxqt-themes"
changelog="${homepage}/commits/main"
distfiles="${homepage}/archive/refs/heads/main.zip"
checksum=73f325b870b2e39b8b15d61faf18a73c84e641dc8710f6d42ad8161e6db2673d
do_install() {
vmkdir ${_theme_dir}
vcopy Cereus* ${_theme_dir}/
}

Some files were not shown because too many files have changed in this diff Show more