From bea18c7a6f0f709251d6e7670eed5d3d9ef1b02b Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 17 Apr 2023 22:17:06 +0200 Subject: [PATCH 1/2] Release 2.1.1 - Adjust dependency versions - Add release tests - Add a quick installation script - Add small utility scripts - Add note on review and developer certificate of origin (DCO) - Add note on accessibility --- .gitignore | 2 + Hashes.md | 20 ++ README.md | 249 ++++++++++++++---- man/cagebreak-config.5.md | 2 +- man/cagebreak-socket.7.md | 2 +- man/cagebreak.1.md | 2 +- meson.build | 38 ++- meson_options.txt | 2 + release-non-auto-checks/Bugs.md | 2 + release-non-auto-checks/FAQ.md | 2 + release-non-auto-checks/SECURITY.md | 2 + release-non-auto-checks/WLR_XDG_VERSION | 2 + release-non-auto-checks/changelog-major-minor | 2 + release-non-auto-checks/internal-wiki | 2 + release-non-auto-checks/meson-epoch | 2 + release-non-auto-checks/release-note | 2 + .../reproducibility-checked | 2 + .../security-to-man-page-info-transfer | 2 + scripts/adjust-epoch | 13 + scripts/create-release-artefacts | 40 +++ scripts/create-signatures | 37 +++ scripts/fuzz | 17 ++ scripts/git-tag | 8 + scripts/install-development-environment | 13 + scripts/output-hashes | 50 ++++ scripts/set-version | 20 ++ signatures/2.1.0-cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/2.1.0-cagebreak-socket.7.sig | Bin 0 -> 566 bytes signatures/2.1.0-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/2.1.0-cagebreak.sig | Bin 0 -> 566 bytes signatures/cagebreak-config.5.sig | Bin 566 -> 566 bytes signatures/cagebreak-socket.7.sig | Bin 566 -> 566 bytes signatures/cagebreak.1.sig | Bin 566 -> 566 bytes signatures/cagebreak.sig | Bin 566 -> 566 bytes test/check-artefacts | 27 ++ test/copyright-license | 4 +- test/git-tag | 16 ++ test/gpg-signatures | 43 +++ test/gpg-validity | 46 ++++ test/hashes-md | 53 ++++ test/non-auto-tests | 25 ++ test/shellcheck | 6 +- 42 files changed, 688 insertions(+), 67 deletions(-) create mode 100644 release-non-auto-checks/Bugs.md create mode 100644 release-non-auto-checks/FAQ.md create mode 100644 release-non-auto-checks/SECURITY.md create mode 100644 release-non-auto-checks/WLR_XDG_VERSION create mode 100644 release-non-auto-checks/changelog-major-minor create mode 100644 release-non-auto-checks/internal-wiki create mode 100644 release-non-auto-checks/meson-epoch create mode 100644 release-non-auto-checks/release-note create mode 100644 release-non-auto-checks/reproducibility-checked create mode 100644 release-non-auto-checks/security-to-man-page-info-transfer create mode 100755 scripts/adjust-epoch create mode 100755 scripts/create-release-artefacts create mode 100755 scripts/create-signatures create mode 100755 scripts/fuzz create mode 100755 scripts/git-tag create mode 100755 scripts/install-development-environment create mode 100755 scripts/output-hashes create mode 100755 scripts/set-version create mode 100644 signatures/2.1.0-cagebreak-config.5.sig create mode 100644 signatures/2.1.0-cagebreak-socket.7.sig create mode 100644 signatures/2.1.0-cagebreak.1.sig create mode 100644 signatures/2.1.0-cagebreak.sig create mode 100644 test/check-artefacts create mode 100644 test/git-tag create mode 100644 test/gpg-signatures create mode 100644 test/gpg-validity create mode 100644 test/hashes-md create mode 100644 test/non-auto-tests diff --git a/.gitignore b/.gitignore index 378eac2..a91faf5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ build +fuzz_corpus +fuzzing-directory diff --git a/Hashes.md b/Hashes.md index 4e28e1e..e5da651 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,25 @@ # Hashes +2.1.1 cagebreak + + * sha 256: 8632e7e49637e5a3e7ab425a05fbd63d71cf6025143c89d196f309dbf4efdd57 + * sha 512: ca853aca80bde974f00e4cfcb21a77159d2f9f639342e92d049a0c5290a57094a1b2b1f28ac76ebdf89cf76384bb1caca45813d25ba5ef8ba8996e8c10e51e7a + +2.1.1 cagebreak.1 + + * sha 256: 1d56762bcbe4ba5b9015dda3c19ab1d628d08c7a7c731042643c9f2e59cf3a7c + * sha 512: e421da32e8d6f9eec4559c53614427900fd7ae5c17bf9b9fdfa90764017d5d90c08e10e737aacbe46ed97966dbc4c76944b54bce367925fd9899ff8e41fa7947 + +2.1.1 cagebreak-config.5 + + * sha 256: f4405bd650d4cab29e536651f0d45443ebe51628c4dfef75576923ec903d781e + * sha 512: 451c85c7a02f724824499a43929ef6f05eee4d4c666186f766163c01e36503a36b7f6bbf2d5cb632cbd2cd0740b0b3becc2d8c388e914cb0bacfe6134a6ada92 + +2.1.1 cagebreak-socket.7 + + * sha 256: cd67c9de727d6f8727269bc06a80aa77ede26b5652eb4ab35c898939711ae429 + * sha 512: a572710972b19a3872269fd2c52f1afd09a11dd621b4108f6ec3cde383c088c52782d5a240b001328257a66143a045fbf967d327b434e2ca32c2ffafc3b18b7f + 2.1.0 cagebreak * sha 256: 0c90ba529ffc916306a1ca04d4c56a800c62a98d184d3cfcc2ce67dcdffad324 diff --git a/README.md b/README.md index f933980..aca03a6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cagebreak: A Wayland Tiling Compositor -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.1.0)](https://repology.org/project/cagebreak/versions) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.1.1)](https://repology.org/project/cagebreak/versions) ## Quick Introduction @@ -260,6 +260,156 @@ need to ask for the distribution the user was having the issue on.)). You should use Arch Linux if you want to modify Cagebreak for yourself. +### Review Requirements + +Project-repo will review your proposal before your implementation for feasibility +and desirability. After your pull request, the code will be reviewed in conjunction +with all other changes before the release as per the release procedure. + +All reviews performed by project-repo are verified by at least two people internally. + +### Developer Certificate of Origin (DCO) + +On any pull requests please include a + +``` +signed-off-by: YOUR IDENTIFIER OR NAME +``` + +DCO statement. + +By doing this you claim that you are legally allowed to contribute the +code and agree to let project-repo publish it under the MIT License. + +#### Development Environment + +CAVEAT: This script works exclusively on Arch Linux, which, as outlined above, +is the development distribution of Cagebreak. + +Cloning the Cagebreak repository and building it is sufficient as a starting point. + +All other dependencies can be installed by invoking + +``` +meson compile devel-install -C build +``` + +if meson is already available or + +``` +./scripts/install-development-environment +``` + +otherwise. + +#### Scripts + +Cagebreak provides a few convenience tools to facilitate development. + +##### Fuzzing + +If your fuzzing corpus is located in the directory `fuzz_corpus` you can +just call: + +``` +meson compile fuzz -C build +``` + +If you want to use a different directory, configure cagebreak with +`-Dcorpus=OTHERDIRECTORY` or call `./scripts/fuzz OTHERDIRECTORY`. + +##### Adjusting Epoch + +To facilitate the creation of reproducible man pages an arbitrary release +time has to be set in `meson.build`: + +``` +meson compile adjust-epoch -C build +``` + +or + +``` +./scripts/adjust-epoch +``` + +##### Git tag + +If you are on the master branch, everything is ready and you want to create +a release tag you can call: + +``` +meson compile git-tag -C build +``` + +If you want to use another signing key than the prespecified one, configure +Cagebreak with `-Dgpg_id=GPGID`. + +``` +./scripts/git-tag GPGID CBVERSION +``` + +can be used alternatively. + +##### Output Hashes + +Hashes of release versions of all binaries can be output to `local-hashes.txt` +via: + +``` +meson compile output-hashes -C build +``` + +Or + +``` +./scripts/output-hashes VERSION +``` + +if meson is unavailable. + +##### Create Signatures + +Creation of signatures for releases can be achieved through: + +``` +meson compile create-sigs -C build +``` + +Configure Cagebreak with `-Dgpg_id=GPGID` for a different gpg signing +key. + +Without meson use: + +``` +./scripts/create-signatures GPGID +``` + +##### Set Version Number + +Once the version number is set within meson.build, you can use + +``` +meson compile set-ver -C build +``` + +to set the version number in the man pages and README repology minversion. + +Use of the script without meson is discouraged because meson.build is +not touched by the script. + +##### Create Release Artefacts + +The following command generates the release artefacts which must be created +once a release is completely ready to be published (the commit is tagged with +the version of the master branch, etc.): + +``` +meson compile create-artefacts -C build +``` + +Use of the script version is discouraged. + ### GCC and -fanalyzer Cagebreak should compile with any reasonably new gcc or clang. Consider @@ -312,6 +462,11 @@ There are four test suites: * Note that this is only expected to pass just before a release. This checks mostly administrative things to check that a release is ready. + * Note that non-auto tests are files in `release-non-auto-checks` + and have to contain the release version and current date in + YYYY-mm-dd format on seperate lines. This is our imperfect attempt + to guarantee some hard-to-automate checks are carried out before + a release is undertaken. Every commit should pass at least the basic and devel suites. @@ -359,7 +514,7 @@ find bugs in other areas of the code. #### Caveat Currently, there are memory leaks which do not seem to stem from our code but rather -the code of wl-roots or some other library we depend on. We are working on the problem. +the code of wlroots or some other library we depend on. We are working on the problem. In the meantime, add `-Db_detect-leaks=0` to the meson command to exclude memory leaks. ### Reproducible Builds @@ -456,53 +611,47 @@ The release procedure outlines the process for a release to occur. * [ ] `git checkout development` * [ ] `git pull origin development` * [ ] `git push origin development` - * [ ] New semantic version number determined - * [ ] Adjust version number - * [ ] meson.build - * [ ] git tag - * [ ] Relevant Documentation completed + * [ ] Arch Build System is up to date + * [ ] `meson test -C build/` just to get an overview + * [ ] Update internal wiki + * [ ] Adjust version number in meson.build + * [ ] `meson compile set-ver -C build` + * [ ] Add new files to meson.build or hardcoded testing variable + * [ ] Commit changes + * [ ] `git push origin development` + * [ ] Complete relevant documentation * [ ] New features + * [ ] tests added and old test scripts adjusted * [ ] man pages * [ ] cagebreak * [ ] cagebreak-config * [ ] cagebreak-socket * [ ] example config - * [ ] Set EPOCH to release day in man generation in meson.build * [ ] FAQ.md * [ ] Changelog.md for major and minor releases but not patches - * [ ] Check features for SECURITY.md relevance (changes to socket scope - for example) + * [ ] Check changes for SECURITY.md relevance (changes to socket scope for example) * [ ] Synchronize any socket changes to cagebreak-socket man page - * [ ] Updated internal wiki - * [ ] Added new files to meson.build or hardcoded testing variable - * [ ] Fixed bugs documented in Bugs.md + * [ ] Document fixed bugs in Bugs.md * [ ] Include issue discussion from github, where applicable + * [ ] Commit changes + * [ ] `git push origin development` * [ ] Testing * [ ] Manual testing - * [ ] Libfuzzer testing - * [ ] Arch Build System is up to date - * [ ] wlr_xdg_shell version check - * [ ] Cagebreak is reproducible on multiple machines - * [ ] Documented reproducible build artefacts - * [ ] Hashes of the artefacts in Hashes.md - * [ ] Renamed previous signatures - * [ ] Created gpg signature of the artefacts - * [ ] `gpg --detach-sign -u keyid cagebreak` - * [ ] `gpg --detach-sign -u keyid cagebreak.1` - * [ ] `gpg --detach-sign -u keyid cagebreak-config.5` - * [ ] `gpg --detach-sign -u keyid cagebreak-socket.7` - * [ ] `meson test -C build` + * [ ] `meson compile fuzz -C build` for at least one hour + * [ ] Complete release-non-auto-checks + * [ ] Use `meson compile output-hashes -C build` to add Hashes or aid in repro check + * [ ] `meson compile create-signatures -C build` + * [ ] Commit and push signatures, hashes and non-auto-check files + * [ ] `meson test -C build` passes everything except some release tests * [ ] `git add` relevant files * [ ] `git commit` * [ ] `git push origin development` - * [ ] Determined commit and tag message (Start with "Release version_number\n\n") - * [ ] Mentioned fixed Bugs.md issues ("Fixed Issue n") - * [ ] Mentioned other important changes * [ ] `git checkout master` * [ ] `git merge --squash development` * [ ] `git commit` and insert message - * [ ] `git tag -u keyid version HEAD` and insert message - * [ ] `git tag -v version` and check output + * [ ] `meson compile git-tag -C build` + * [ ] `meson compile create-artefacts -C build` + * [ ] `meson test -C build` THIS MUST PASS WITHOUT ANY FAILURES WHATSOEVER * [ ] `git push --tags origin master` * [ ] `git checkout development` (merge to development depends on whether release was a hotfix) * [ ] `git merge master` @@ -510,33 +659,8 @@ The release procedure outlines the process for a release to occur. * [ ] `git checkout hotfix` (hotfix is to be kept current with master after releases) * [ ] `git merge master` * [ ] `git push --tags origin hotfix` - * [ ] `git archive --prefix=cagebreak/ -o release_version.tar.gz tags/version .` - * [ ] Create release-artefacts_version.tar.gz - * [ ] `mkdir release-artefacts_version` - * [ ] `cp build/cagebreak release-artefacts_version/` - * [ ] `cp build/cagebreak.sig release-artefacts_version/` - * [ ] `cp build/cagebreak.1 release-artefacts_version/` - * [ ] `cp build/cagebreak.1.sig release-artefacts_version/` - * [ ] `cp build/cagebreak-config.5 release-artefacts_version/` - * [ ] `cp build/cagebreak-config.5.sig release-artefacts_version/` - * [ ] `cp build/cagebreak-socket.7 release-artefacts_version/` - * [ ] `cp build/cagebreak-socket.7.sig release-artefacts_version/` - * [ ] `cp LICENSE release-artefacts_version/` - * [ ] `cp README.md release-artefacts_version/` - * [ ] `cp SECURITY.md release-artefacts_version/` - * [ ] `cp FAQ.md release-artefacts_version/` - * [ ] `export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) ; tar --sort=name --mtime= --owner=0 --group=0 --numeric-owner -czf release-artefacts_version.tar.gz release-artefacts_version` - * [ ] Checked archive - * [ ] tar -xvf release_version.tar.gz - * [ ] cd cagebreak - * [ ] meson setup build -Dxwayland=true -Dman-pages=true --buildtype=release - * [ ] ninja -C build - * [ ] gpg --verify ../signatures/cagebreak.sig build/cagebreak - * [ ] cd .. - * [ ] rm -rf cagebreak - * [ ] `gpg --detach-sign -u keyid release_version.tar.gz` - * [ ] `gpg --detach-sign -u keyid release-artefacts_version.tar.gz` * [ ] Upload archives and signatures as release assets + * [ ] Manage package release ## Roadmap @@ -600,6 +724,17 @@ independent of github, in case this service is unavailable. For other means of contacting the Cagebreak authors and for security issues see [SECURITY.md](SECURITY.md). +## Accessibility + + * We use text input/output to interact with the user whenever possible. For + example, sending text-based commands to the cagebreak sockets allows + one to change every configurable feature of cagebreak. + * Color is displayed but never a vital part to operating cagebreak. + * Text size can be increased and background color adjusted using text commands. + * There is no screen reader support per se but using a screen reader on socket output + would work and cagebreak does not preclude the use of a screen reader + for any software run with it. + ## Contributors * Aisha Tammy diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index 1c65b78..bb04547 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "Version 2.1.0" "Cagebreak Manual" +cagebreak-config(5) "VERSION 2.1.1" "Cagebreak Manual" # NAME diff --git a/man/cagebreak-socket.7.md b/man/cagebreak-socket.7.md index b8e8d9c..19b7370 100644 --- a/man/cagebreak-socket.7.md +++ b/man/cagebreak-socket.7.md @@ -1,4 +1,4 @@ -cagebreak-socket(7) "Version 2.1.0" "Cagebreak Manual" +cagebreak-socket(7) "VERSION 2.1.1" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index b3fd209..fdc2da1 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "Version 2.1.0" "Cagebreak Manual" +cagebreak(1) "VERSION 2.1.1" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index f9708e7..26b0746 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'cagebreak', 'c', -version : '2.1.0', +version : '2.1.1', license : 'MIT', default_options : ['c_std=c11', 'warning_level=3'] ) @@ -202,8 +202,8 @@ cagebreak_dependencies_dict = { reproducible_build_versions = { 'server_protos': '-1', 'wayland_server': '1.19.0', - 'wayland_client': '1.21.0', - 'wayland_cursor': '1.21.0', + 'wayland_client': '1.22.0', + 'wayland_cursor': '1.22.0', 'wlroots': '0.16.2', 'xkbcommon': '1.5.0', 'fontconfig': '2.14.2', @@ -260,7 +260,7 @@ install_data('LICENSE', install_dir : '/usr/share/licenses/' + meson.project_nam if get_option('man-pages') scdoc = find_program('scdoc') - secssinceepoch = 1680540192 + secssinceepoch = 1681758922 shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path()) sh = find_program('sh') mandir1 = join_paths(get_option('mandir'), 'man1') @@ -344,6 +344,30 @@ summary = [ ] message('\n'.join(summary)) +run_target('devel-install', + command : ['scripts/install-development-environment']) + +run_target('fuzz', + command : ['scripts/fuzz', get_option('corpus')]) + +run_target('adjust-epoch', + command : ['scripts/adjust-epoch']) + +run_target('git-tag', + command : ['scripts/git-tag', get_option('gpg_id'), meson.project_version()]) + +run_target('output-hashes', + command : ['scripts/output-hashes', meson.project_version()]) + +run_target('create-sigs', + command : ['scripts/create-signatures', get_option('gpg_id')]) + +run_target('set-ver', + command : ['scripts/set-version', meson.project_version()]) + +run_target('create-artefacts', + command : ['scripts/create-release-artefacts', get_option('gpg_id'), meson.project_version()]) + # Test Suite test('Build without warnings', find_program('test/build-w-o-warnings'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel') @@ -351,7 +375,13 @@ test('Build without xwayland', find_program('test/build-w-o-xwayland'), env : [ test('Copyright and LICENSE', find_program('test/copyright-license'), args : [ cagebreak_main_file + cagebreak_source_strings + cagebreak_header_strings + fuzz_sources + fuzz_headers + fuzz_override_lib ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()), ''.join('MESONLICENSE=', meson.project_license())], suite: 'devel' ) test('Clang-format (formatting check)', find_program('test/clang-format'), args : [ cagebreak_main_file + cagebreak_source_strings + cagebreak_header_strings + fuzz_sources + fuzz_headers + fuzz_override_lib ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel') test('Shellcheck (script linting)', find_program('test/shellcheck'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel') +test('GPG key validity', find_program('test/gpg-validity'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel') test('Scan-build (static analysis)', find_program('test/scan-build'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'devel-long') test('Arguments', find_program('test/arguments'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'basic') test('Environment Variables', find_program('test/environment-variables'), env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'basic') test('Semantic versioning', find_program('test/versions'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'release') +test('Signature validity', find_program('test/gpg-signatures'), suite: 'release') +test('Hashes.md', find_program('test/hashes-md'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'release') +test('Non-auto tests', find_program('test/non-auto-tests'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'release') +test('Git tag', find_program('test/git-tag'), args : [ meson.project_version() ], suite: 'release') +test('Release-artefacts', find_program('test/check-artefacts'), args : [ meson.project_version() ], env : [ ''.join('MESONCURRENTCONFIGDIR=', meson.current_source_dir()) ], suite: 'release') diff --git a/meson_options.txt b/meson_options.txt index b7fc956..eba2f60 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -4,3 +4,5 @@ option('xwayland', type: 'boolean', value: 'false', description: 'Enable support option('man-pages', type: 'boolean', value: 'false', description: 'Build man pages (requires pandoc)') option('fuzz', type: 'boolean', value: 'false', description: 'Enable building fuzzer targets') option('version_override', type: 'string', description: 'Set the project version to the string specified. Used for creating hashes for reproducible builds.') +option('corpus', type: 'string', value: 'fuzz_corpus', description: 'Set fuzzing corpus directory') +option('gpg_id', type: 'string', value: '4E82C72C6B3E58A7BC4FF8554909F84CA83BB867', description: 'Set gpg signing key for cagebreak') diff --git a/release-non-auto-checks/Bugs.md b/release-non-auto-checks/Bugs.md new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/Bugs.md @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/FAQ.md b/release-non-auto-checks/FAQ.md new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/FAQ.md @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/SECURITY.md b/release-non-auto-checks/SECURITY.md new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/SECURITY.md @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/WLR_XDG_VERSION b/release-non-auto-checks/WLR_XDG_VERSION new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/WLR_XDG_VERSION @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/changelog-major-minor b/release-non-auto-checks/changelog-major-minor new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/changelog-major-minor @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/internal-wiki b/release-non-auto-checks/internal-wiki new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/internal-wiki @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/meson-epoch b/release-non-auto-checks/meson-epoch new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/meson-epoch @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/release-note b/release-non-auto-checks/release-note new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/release-note @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/reproducibility-checked b/release-non-auto-checks/reproducibility-checked new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/reproducibility-checked @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/release-non-auto-checks/security-to-man-page-info-transfer b/release-non-auto-checks/security-to-man-page-info-transfer new file mode 100644 index 0000000..aa7d21e --- /dev/null +++ b/release-non-auto-checks/security-to-man-page-info-transfer @@ -0,0 +1,2 @@ +2.1.1 +2023-04-17 diff --git a/scripts/adjust-epoch b/scripts/adjust-epoch new file mode 100755 index 0000000..362c840 --- /dev/null +++ b/scripts/adjust-epoch @@ -0,0 +1,13 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +# shellcheck disable=2034 +ssepoch=$(date +%s) +sed -i -e "/secssinceepoch \=/s/[0-9]*$/$ssepoch/" meson.build diff --git a/scripts/create-release-artefacts b/scripts/create-release-artefacts new file mode 100755 index 0000000..4b16167 --- /dev/null +++ b/scripts/create-release-artefacts @@ -0,0 +1,40 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +readonly gpg_id="${1}" +readonly version="${2}" + +git archive --prefix=cagebreak/ -o "release_${version}.tar.gz" "tags/${version}" . + +rm -rf "release-artefacts_${version}" +mkdir "release-artefacts_${version}" + +rm -rf temp-rel-artefacts +meson setup temp-rel-artefacts -Dxwayland=true -Dman-pages=true --buildtype=release +ninja -C temp-rel-artefacts + +cp LICENSE "release-artefacts_${version}" +cp SECURITY.md "release-artefacts_${version}" +cp FAQ.md "release-artefacts_${version}" +cp README.md "release-artefacts_${version}" +cp temp-rel-artefacts/cagebreak "release-artefacts_${version}" +cp temp-rel-artefacts/cagebreak.1 "release-artefacts_${version}" +cp temp-rel-artefacts/cagebreak-config.5 "release-artefacts_${version}" +cp temp-rel-artefacts/cagebreak-socket.7 "release-artefacts_${version}" +cp signatures/cagebreak*.sig "release-artefacts_${version}" + +# shellcheck disable=2155 +export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) ; tar --sort=name --mtime= --owner=0 --group=0 --numeric-owner -czf "release-artefacts_${version}.tar.gz" "release-artefacts_${version}" + +gpg -u "${gpg_id}" --detach-sign "release-artefacts_${version}.tar.gz" +gpg -u "${gpg_id}" --detach-sign "release_${version}.tar.gz" + + +rm -rf temp-rel-artefacts diff --git a/scripts/create-signatures b/scripts/create-signatures new file mode 100755 index 0000000..3292374 --- /dev/null +++ b/scripts/create-signatures @@ -0,0 +1,37 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +readonly gpg_id="${1}" +# shellcheck disable=2155 +readonly old_tags=$(git tag| tail -1) + +mv signatures/cagebreak.sig "signatures/${old_tags}-cagebreak.sig" +mv signatures/cagebreak.1.sig "signatures/${old_tags}-cagebreak.1.sig" +mv signatures/cagebreak-config.5.sig "signatures/${old_tags}-cagebreak-config.5.sig" +mv signatures/cagebreak-socket.7.sig "signatures/${old_tags}-cagebreak-socket.7.sig" + +git add "signatures/${old_tags}-cagebreak.sig" +git add "signatures/${old_tags}-cagebreak.1.sig" +git add "signatures/${old_tags}-cagebreak-config.5.sig" +git add "signatures/${old_tags}-cagebreak-socket.7.sig" + +rm -rf temp-sigs +meson setup temp-sigs -Dxwayland=true -Dman-pages=true --buildtype=release +ninja -C temp-sigs + +gpg -u "${gpg_id}" --detach-sign temp-sigs/cagebreak +gpg -u "${gpg_id}" --detach-sign temp-sigs/cagebreak.1 +gpg -u "${gpg_id}" --detach-sign temp-sigs/cagebreak-config.5 +gpg -u "${gpg_id}" --detach-sign temp-sigs/cagebreak-socket.7 + +cp temp-sigs/*.sig signatures/ + + +rm -rf temp-sigs diff --git a/scripts/fuzz b/scripts/fuzz new file mode 100755 index 0000000..7f227ec --- /dev/null +++ b/scripts/fuzz @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +readonly fuzzing_corpus="${1}" + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +rm -rf fuzzing-directory +CC=clang meson setup fuzzing-directory -Dfuzz=true -Db_sanitize=address,undefined -Db_lundef=false -Db_detect-leaks=0 +ninja -C fuzzing-directory/ +WLR_BACKENDS=headless ./fuzzing-directory/fuzz-parse -jobs=12 -max_len=50000 -close_fd_mask=3 "${fuzzing_corpus}" +rm -rf fuzzing-directory diff --git a/scripts/git-tag b/scripts/git-tag new file mode 100755 index 0000000..bd8e541 --- /dev/null +++ b/scripts/git-tag @@ -0,0 +1,8 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +readonly gpg_id="${1}" +readonly version="${2}" + +git tag -u "${gpg_id}" "${version}" HEAD diff --git a/scripts/install-development-environment b/scripts/install-development-environment new file mode 100755 index 0000000..d1b9793 --- /dev/null +++ b/scripts/install-development-environment @@ -0,0 +1,13 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +sudo pacman -Syu --noconfirm git grep sed xev meson ninja clang gcc shellcheck jq openbsd-netcat gnupg binutils alacritty wlroots wayland libxkbcommon cairo pango fontconfig libinput libevdev systemd-libs # systemd-libs is included because of libudev + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +gpg --import keys/* diff --git a/scripts/output-hashes b/scripts/output-hashes new file mode 100755 index 0000000..cf7cacf --- /dev/null +++ b/scripts/output-hashes @@ -0,0 +1,50 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +readonly version="${1}" + +rm -rf hashes +meson setup hashes -Dxwayland=true -Dman-pages=true --buildtype=release +ninja -C hashes + +cb256=$(sha256sum hashes/cagebreak | cut -d " " -f1) +cb512=$(sha512sum hashes/cagebreak | cut -d " " -f1) + +cb1man256=$(sha256sum hashes/cagebreak.1 | cut -d " " -f1) +cb1man512=$(sha512sum hashes/cagebreak.1 | cut -d " " -f1) + +cb5man256=$(sha256sum hashes/cagebreak-config.5 | cut -d " " -f1) +cb5man512=$(sha512sum hashes/cagebreak-config.5 | cut -d " " -f1) + +cb7man256=$(sha256sum hashes/cagebreak-socket.7 | cut -d " " -f1) +cb7man512=$(sha512sum hashes/cagebreak-socket.7 | cut -d " " -f1) + +echo "${version} cagebreak + + * sha 256: ${cb256} + * sha 512: ${cb512} + +${version} cagebreak.1 + + * sha 256: ${cb1man256} + * sha 512: ${cb1man512} + +${version} cagebreak-config.5 + + * sha 256: ${cb5man256} + * sha 512: ${cb5man512} + +${version} cagebreak-socket.7 + + * sha 256: ${cb7man256} + * sha 512: ${cb7man512} +" > local-hashes.txt + +rm -rf hashes diff --git a/scripts/set-version b/scripts/set-version new file mode 100755 index 0000000..c4506cb --- /dev/null +++ b/scripts/set-version @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +# TODO man pages + +if [[ -n ${MESON_SOURCE_ROOT} ]] +then + # shellcheck disable=2164 + cd "${MESON_SOURCE_ROOT}" +fi + +# shellcheck disable=2034 +version="${1}" +sed -i -e "s/minversion\=[0-9]*\.[0-9]*.[0-9]*/minversion=$version/" README.md + + +sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/VERSION $version/" man/cagebreak.1.md +sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/VERSION $version/" man/cagebreak-config.5.md +sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/VERSION $version/" man/cagebreak-socket.7.md diff --git a/signatures/2.1.0-cagebreak-config.5.sig b/signatures/2.1.0-cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..25072cbc7ec479dc03f8b0e58fb181f393b6019f GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%R-@H2?|;5J?I6 zOsG4!XTI7G{wRJJEi`J}KeQfb1JU@66Z3T<6NTy#--hMh*c8j3d2~hbi^ZX=-TrKn ztD7j~V&53Q9i%4h8U#_7hK7oj`CIlD=;Mc4GwQ>a)J-YmdG`Vl;8s)}69L&?L5d~& z$20iJNFBNWK|tDpKg-~|d82IW#CC`j7nDWB&(z58T;2M2wvtE4dP=d?zp?WD0=p9* zUPU`tsJ{U-0GdW{DSNRrlKUGFVqhO3@k!$cL3*Qp6odwyB-0xQnq)@N!PVe$1`L>|k=$CLVHK?O+TkwoVUh!Xj=V&t>{#C*0%ot(iIdi&^gyH8KlU zhBT+I4>=Rc$+O;JZ!`T~Bm7w_#GKcp?kq#s$P0|Y^(i`zme%V+VSapC^`l@oRL1{@BcO}re zf)i0-Wdr6R<0JhvON1>o?yPvCFw8vYk{DbTrXy>~v!h&yhCb5?O?zZ$sp$kzmLK)j EGK$X>3IG5A literal 0 HcmV?d00001 diff --git a/signatures/2.1.0-cagebreak-socket.7.sig b/signatures/2.1.0-cagebreak-socket.7.sig new file mode 100644 index 0000000000000000000000000000000000000000..67c2e166279805704204ef4ba7843177146a8340 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%R-@I{*p^5J?I6 zOsG4!XJ?rY{wb7ikpWvUjL5LXPboA72(rh}Um;IL{Hr(?cZ{Hcdvsw7)6JwNk7BnM zayXykj0YkR+Jh2Hwq|Y^A zPu`ugLAlCp?L0U!>F;Zuu;aVM2bI~8Xj333 zsC7lgX`xb^ETu!?Bw8FNyQ$U4&W>=On~*_~z-WZIC6s*H>m*Fo>YN z3NqSep3ktdUAbS8m_Vjw$@OzLcpWk*swcy9j=(Zt11%qsS1}G4A(U&PU%nG0<@*JgP<=etYs$Pl@IShl2ReE?BjM En*g&E-T(jq literal 0 HcmV?d00001 diff --git a/signatures/2.1.0-cagebreak.1.sig b/signatures/2.1.0-cagebreak.1.sig new file mode 100644 index 0000000000000000000000000000000000000000..b0c8dc15ac8fae31e58867f0a45a09b3ed2d1486 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%R-@FaQb(5J?I6 zOsG4!XQ9Rq`v;-NQB9`itOy7w8l=VA36V8d$O+C8V4siElG)?+-d>(fZ&kfv`E=xo zinXUoT!}dOjO)=zs&(12$gG=(A+U zCuHOF=LWtU(1Dednc%h`JboeK64+cz8-y0Yk7+1^yM3lwplgw@i?XqZjEFM^_-h0Z z@*BzMK7ViM?i+E-b1U5=bh>3>h#N%FkvtOpAiTrt%rBrS4;{wW z#YEh;zE>EsLm_eFyq|IMThIw)Ro#1BO`vWh!8CFn|>I$Jm(P9-y7 z!he0ilG@?m)J zJ{eq<2(d=d+Cpi7$j%0c)kbInMA%wt<+aJ-)*bD#_1BbxZ)|xCbL@ctO6~R@_Yax; ztz>7&y$BT!7q(-3!{XjbzOdope4li@9B$gEPsc6ep)BMU=j$b*W(L=2xx4%aHp6O( z7~7&h?CgJ;Y7fxOYMx`k^J-@2HA?d{Nqqb-Nx|}M5-;vQBp9R!+q}?FrR-=x3L{11 zX969$BPXz2{2CKuBWFU)jUhbLXVmrPv>nUqh3+4CF$V;Jk3r<2*J+2=tj2xT%|&ZHd?OR?L2P;|Rb_ANCh zPF{g+^Ao3WzoSl#rc9|q`MH>0@plcedJVZl=KE%i5jp}Oii=6Ioj%WE$eO}I?`J)d z0v84f93fy1zigPkk+j$?-pb1~hneUMuYKNRY_)GY8L#g!H@eW3r_OiO(=HN>$zcI9 EDjqQqh5!Hn literal 0 HcmV?d00001 diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig index 25072cbc7ec479dc03f8b0e58fb181f393b6019f..e25e49c74428afbac6d7bd0466d556b92405bdfe 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(xBv>V!tzCAjipv zwL*&XWDQ+NgCa63^5xd6*rRB5_M7Ys7zgiT1s~-o2YJ1 z);#uxIl2+qI$*0rlI_<5p|vN80hPq{9%)NYButb7%J%%KnV z2q1c)eISEOG|o0!{YFv#IK8B;M~-^UR+TC;oHi$U-&sQxB_Yrv&!_Me-|GPK$CZbO E66|6O`Tzg` literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%R-@H2?|;5J?I6 zOsG4!XTI7G{wRJJEi`J}KeQfb1JU@66Z3T<6NTy#--hMh*c8j3d2~hbi^ZX=-TrKn ztD7j~V&53Q9i%4h8U#_7hK7oj`CIlD=;Mc4GwQ>a)J-YmdG`Vl;8s)}69L&?L5d~& z$20iJNFBNWK|tDpKg-~|d82IW#CC`j7nDWB&(z58T;2M2wvtE4dP=d?zp?WD0=p9* zUPU`tsJ{U-0GdW{DSNRrlKUGFVqhO3@k!$cL3*Qp6odwyB-0xQnq)@N!PVe$1`L>|k=$CLVHK?O+TkwoVUh!Xj=V&t>{#C*0%ot(iIdi&^gyH8KlU zhBT+I4>=Rc$+O;JZ!`T~Bm7w_#GKcp?kq#s$P0|Y^(i`zme%V+VSapC^`l@oRL1{@BcO}re zf)i0-Wdr6R<0JhvON1>o?yPvCFw8vYk{DbTrXy>~v!h&yhCb5?O?zZ$sp$kzmLK)j EGK$X>3IG5A diff --git a/signatures/cagebreak-socket.7.sig b/signatures/cagebreak-socket.7.sig index 67c2e166279805704204ef4ba7843177146a8340..6b1a6a53bea5fd958f39e4e1a3b2630bc6bcfdd0 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(xBv<1}Fi}wvC0q8gc5j<2D--xgVi`D}qC? zVas)^fv%k{3!i4=+1r}fNLnDFBz&I`+q}yv?MCPXEhv(V#gT*E1@Ms!jzt)>6e6+| zX-u`yGyy-#sngzXi1tX8NCm+~i~>#s;PTeX{a!7a)AGH=S63U0u!;hLXdA$#rdSc0 z6YA!rPx9cY;iCCLmvPHMB{^o!+s?Nfmnp>f(39do*$Ir=a042`w^^;rkBk4a&zP(I zU}8wkO#P-KAM&EkhPF(rf9_C}R_T`%KR{cI)*$4uPZiJS2XunIn^uGgXo>%`hPIXv z`D{%Sh{dJ2P+)I$w3HP7lho0qk)zWVu*`U7``v1rG;;X^I`?&U`=Am_vS{j<0lMUE zmuvJ^o-(sqCPjoa+y8hZxkM`*=hB4tB^ zh_^{u14_Mg3N{t3Qi;moRnhiUR}1deAKy`A zPu`ugLAlCp?L0U!>F;Zuu;aVM2bI~8Xj333 zsC7lgX`xb^ETu!?Bw8FNyQ$U4&W>=On~*_~z-WZIC6s*H>m*Fo>YN z3NqSep3ktdUAbS8m_Vjw$@OzLcpWk*swcy9j=(Zt11%qsS1}G4A(U&PU%nG0<@*JgP<=etYs$Pl@IShl2ReE?BjM En*g&E-T(jq diff --git a/signatures/cagebreak.1.sig b/signatures/cagebreak.1.sig index b0c8dc15ac8fae31e58867f0a45a09b3ed2d1486..7674f52c5525457b35e37630f7e174105cdf97d9 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(w*U$W5ZnyN z8{h{0g$BP5|3+rAM~!0w2)qQtiHJcD&$F7&*Ws<|G9b8d%A9w%?95_vvKr+J)dzRT z7}Dgl#lO}{Xei>jJAKVPK7g8_Z;E9f2&>0R>{6hPo?`&kqf!UMp}tJ)Wsq+ISEiLc z7wO~hJp|Wc#X+~)`n?40XtTbraBHqbm7O6V;i}>0UJV#W;2C%VvTX#0btuAYjR6kK zV(WyW@T$+>F)0eIA#}TV0@9hAJJUyyy&M9IU|`_8J@ED)2L9y07q1&UNkZha0OUV- zzD8CJ_LtymJoE9Y+goAv*mFh$G!(CRd$NaiJ?a@9zGQOd|U9!Q9j1Hs(lb?99V8jsaHPjFUYU2Vou z5{B+uG9q~#=4~+u)zU8ZH5&c03;JsLZ`OT_OK~VtnV*H%Og}fPQLGtIKz<&l7hNw zXd}6GH50ZJcJ$7*KqSJ+o=(V*_Xs82+|+zDk=Tdh5m^n@F2~G0VK#2!Pg{B!-)gN& zw6%KZzQ%6kJxHm(P0kSI51z_n58^m{ogDeO4T6{-y(@0Q;GhiJ+aP^ E*P|>Ivj6}9 literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%R-@FaQb(5J?I6 zOsG4!XQ9Rq`v;-NQB9`itOy7w8l=VA36V8d$O+C8V4siElG)?+-d>(fZ&kfv`E=xo zinXUoT!}dOjO)=zs&(12$gG=(A+U zCuHOF=LWtU(1Dednc%h`JboeK64+cz8-y0Yk7+1^yM3lwplgw@i?XqZjEFM^_-h0Z z@*BzMK7ViM?i+E-b1U5=bh>3>h#N%FkvtOpAiTrt%rBrS4;{wW z#YEh;zE>EsLm_eFyq|IMThIw)Ro#1BO`vWh!8CFn|>I$Jm(P9-y7 z!he0ilG@?l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(w*U$W5ZnyN z8{h{0g|O`p|93+h`>T39v=djZ0&wOd*$K{aopV$L6nt}hx`hB&5Pf-?SaHqLIQKWAKFY)eQIZhM_TsTyth9BBvr?NCuIW4avXTAIt@Y<2T&n7p3kNrY! zqSc2?p^pZ(*T>#NcFb>weL^n7E3W>$GC?NFrG23dM+(TyWnpJ0Gx3H;|>bN zb4u`nR4`|f>GZAb=#_=PzeB?U&iWE&nPq(yXa9ud%8?4xOz%Omilkz`{YlRd^H~E3 zx98;1k+8JlLoJbo6%@FZ`jLoSn_zx{I`)X*_k9X&K-^K)Hd7Cd7R^550PG4Oeg4-m<1JL!W$2>2kLobN-?OLq z|LzkmP}4FyS|(AAzV-Ft1r%Nw+tRy1fEVK9fRa<;&NO>1m_X=8F<`g0s%*;X%p-IT zK#Fz}rdXasS2uaDJFVCNrH64xK49yEpCUp8p|%F? E)OoZP+yDRo literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%R-@EdUA$5J?I6 zOsG4!XUo$N0E5~0P~h*DH~*A2hTro%z;sAA=WxosF)hl-_!M(1uj5Le+}S87X>m)J zJ{eq<2(d=d+Cpi7$j%0c)kbInMA%wt<+aJ-)*bD#_1BbxZ)|xCbL@ctO6~R@_Yax; ztz>7&y$BT!7q(-3!{XjbzOdope4li@9B$gEPsc6ep)BMU=j$b*W(L=2xx4%aHp6O( z7~7&h?CgJ;Y7fxOYMx`k^J-@2HA?d{Nqqb-Nx|}M5-;vQBp9R!+q}?FrR-=x3L{11 zX969$BPXz2{2CKuBWFU)jUhbLXVmrPv>nUqh3+4CF$V;Jk3r<2*J+2=tj2xT%|&ZHd?OR?L2P;|Rb_ANCh zPF{g+^Ao3WzoSl#rc9|q`MH>0@plcedJVZl=KE%i5jp}Oii=6Ioj%WE$eO}I?`J)d z0v84f93fy1zigPkk+j$?-pb1~hneUMuYKNRY_)GY8L#g!H@eW3r_OiO(=HN>$zcI9 EDjqQqh5!Hn diff --git a/test/check-artefacts b/test/check-artefacts new file mode 100644 index 0000000..9e62bb5 --- /dev/null +++ b/test/check-artefacts @@ -0,0 +1,27 @@ +#! /bin/sh +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +RESULT=0 + +readonly version="${1}" + +# shellcheck disable=SC2164 +cd "${MESONCURRENTCONFIGDIR}" + +gpg --verify "release_${version}.tar.gz.sig" || RESULT=1 +gpg --verify "release-artefacts_${version}.tar.gz.sig" || RESULT=1 + +tar -xvf "release_${version}.tar.gz" +cd cagebreak || exit 1 +meson setup build -Dxwayland=true -Dman-pages=true --buildtype=release +ninja -C build +gpg --verify ../signatures/cagebreak.sig build/cagebreak || RESULT=1 +gpg --verify ../signatures/cagebreak.1.sig build/cagebreak.1 || RESULT=1 +gpg --verify ../signatures/cagebreak-config.5.sig build/cagebreak-config.5 || RESULT=1 +gpg --verify ../signatures/cagebreak-socket.7.sig build/cagebreak-socket.7 || RESULT=1 +# shellcheck disable=2103 +cd .. +rm -rf cagebreak + +exit "${RESULT}" diff --git a/test/copyright-license b/test/copyright-license index 4fe517f..630f843 100644 --- a/test/copyright-license +++ b/test/copyright-license @@ -10,7 +10,9 @@ readonly test_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep test/ readonly examples_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep examples/) # shellcheck disable=2155,2164,2046 readonly example_scripts_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep example_scripts/) -readonly deps="${declared_deps} ${hardcoded_deps} ${test_deps} ${examples_deps} ${example_scripts_deps}" +# shellcheck disable=2155,2164,2046 +readonly scripts_deps=$(cd "${MESONCURRENTCONFIGDIR}" ; find . -type f | grep scripts/) +readonly deps="${declared_deps} ${hardcoded_deps} ${test_deps} ${examples_deps} ${example_scripts_deps} ${scripts_deps}" # shellcheck disable=2046,2155 readonly curryear=$(date +%Y) diff --git a/test/git-tag b/test/git-tag new file mode 100644 index 0000000..f080060 --- /dev/null +++ b/test/git-tag @@ -0,0 +1,16 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +VERSION=$1 +RESULT=0 + +if git tag -v "${VERSION}" +then + echo "[x] git tag" +else + RESULT=1 + echo "[ ] git tag" +fi + +exit "${RESULT}" diff --git a/test/gpg-signatures b/test/gpg-signatures new file mode 100644 index 0000000..c5d63fd --- /dev/null +++ b/test/gpg-signatures @@ -0,0 +1,43 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +RESULT=0 + +# cagebreak +if gpg --verify ../signatures/cagebreak.sig cagebreak +then + echo "[x] cagebreak binary" +else + RESULT=1 + echo "[ ] cagebreak binary" +fi + +# cagebreak-man +if gpg --verify ../signatures/cagebreak.1.sig cagebreak.1 +then + echo "[x] cagebreak.1 man" +else + RESULT=1 + echo "[ ] cagebreak.1 man" +fi + +# cagebreak-config man +if gpg --verify ../signatures/cagebreak-config.5.sig cagebreak-config.5 +then + echo "[x] cagebreak-config.5 man" +else + RESULT=1 + echo "[ ] cagebreak-config.5 man" +fi + +# cagebreak-socket man +if gpg --verify ../signatures/cagebreak-socket.7.sig cagebreak-socket.7 +then + echo "[x] cagebreak-socket.7 man" +else + RESULT=1 + echo "[ ] cagebreak-socket.7 man" +fi + +exit "${RESULT}" diff --git a/test/gpg-validity b/test/gpg-validity new file mode 100644 index 0000000..6340105 --- /dev/null +++ b/test/gpg-validity @@ -0,0 +1,46 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +RESULT=0 + +# shellcheck disable=2164 +cd "${MESONCURRENTCONFIGDIR}/keys" +stoday=$(date +%s) +signingmargin=90 + +# shellcheck disable=2046 +skey11exptime=$(date --date=$(gpg --show-keys cagebreak_signing_key_11\@project-repo.co.pub | tail -2 | head -1 | cut -d " " -f 8 | rev | cut -c2- | rev) '+%s') +# shellcheck disable=2046 +skey12exptime=$(date --date=$(gpg --show-keys cagebreak_signing_key_12\@project-repo.co.pub | tail -2 | head -1 | cut -d " " -f 8 | rev | cut -c2- | rev) '+%s') +# shellcheck disable=2046 +mailexptime=$(date --date=$(gpg --show-keys cagebreak\@project-repo.co.pub | tail -2 | head -1 | cut -d " " -f 8 | rev | cut -c2- | rev) '+%s') + +# signing keys +## signing key 11 +if [[ $(( (stoday - skey11exptime) / 86400 )) -lt $signingmargin ]] +then + echo "[x] signign key 11" +else + RESULT=1 + echo "[ ] signing key 11" +fi +## signing key 12 +if [[ $(( (stoday - skey12exptime) / 86400 )) -lt $signingmargin ]] +then + echo "[x] signign key 12" +else + RESULT=1 + echo "[ ] signing key 12" +fi + +# email key +if [[ $(( (stoday - mailexptime) / 86400 )) -lt $signingmargin ]] +then + echo "[x] mail key" +else + RESULT=1 + echo "[ ] mail key" +fi + +exit "${RESULT}" diff --git a/test/hashes-md b/test/hashes-md new file mode 100644 index 0000000..30a5529 --- /dev/null +++ b/test/hashes-md @@ -0,0 +1,53 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +VERSION=$1 +RESULT=0 + +# shellcheck disable=2164 +cd "${MESONCURRENTCONFIGDIR}" + +cb256=$(sha256sum build/cagebreak | cut -d " " -f1 ) +cb256man1=$(sha256sum build/cagebreak.1 | cut -d " " -f1 ) +cb256man5=$(sha256sum build/cagebreak-config.5 | cut -d " " -f1 ) +cb256man7=$(sha256sum build/cagebreak-socket.7 | cut -d " " -f1 ) +cb512=$(sha512sum build/cagebreak | cut -d " " -f1 ) +cb512man1=$(sha512sum build/cagebreak.1 | cut -d " " -f1 ) +cb512man5=$(sha512sum build/cagebreak-config.5 | cut -d " " -f1 ) +cb512man7=$(sha512sum build/cagebreak-socket.7 | cut -d " " -f1 ) + +hashesdoc=$(head -21 Hashes.md) + +testdoc="# Hashes + +$VERSION cagebreak + + * sha 256: ${cb256} + * sha 512: ${cb512} + +$VERSION cagebreak.1 + + * sha 256: ${cb256man1} + * sha 512: ${cb512man1} + +$VERSION cagebreak-config.5 + + * sha 256: ${cb256man5} + * sha 512: ${cb512man5} + +$VERSION cagebreak-socket.7 + + * sha 256: ${cb256man7} + * sha 512: ${cb512man7}" + +# email key +if [[ "${hashesdoc}" = "${testdoc}" ]] +then + echo "[x] Hashes.md" +else + RESULT=1 + echo "[ ] Hashes.md" +fi + +exit "${RESULT}" diff --git a/test/non-auto-tests b/test/non-auto-tests new file mode 100644 index 0000000..470d494 --- /dev/null +++ b/test/non-auto-tests @@ -0,0 +1,25 @@ +#!/bin/bash +# Copyright 2023, project-repo and the cagebreak contributors +# SPDX-License-Identifier: MIT + +VERSION=$1 +RESULT=0 + +# shellcheck disable=2164 +cd "${MESONCURRENTCONFIGDIR}/release-non-auto-checks" + +filevar="$VERSION +$(date +%Y-%m-%d)" + +for check in ./* +do + if [[ $(cat "$check") = "${filevar}" ]] + then + echo "[x] ${check}" + else + RESULT=1 + echo "[ ] ${check}" + fi +done + +exit "${RESULT}" diff --git a/test/shellcheck b/test/shellcheck index 0727178..8fa5f4e 100644 --- a/test/shellcheck +++ b/test/shellcheck @@ -4,13 +4,15 @@ RESULT=0 -set -x # shellcheck disable=2164 cd "${MESONCURRENTCONFIGDIR}/test" # shellcheck disable=2046 shellcheck --source-path=../example_scripts/ $(ls -Itesting-configurations) || RESULT=1 cd "${MESONCURRENTCONFIGDIR}/example_scripts/" || RESULT=1 -shellcheck ./* +shellcheck ./* || RESULT=1 + +cd "${MESONCURRENTCONFIGDIR}/scripts/" || RESULT=1 +shellcheck ./* || RESULT=1 exit "${RESULT}" From 9a4c07d8154f993ed9ca92a3fee1792e536bcccb Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 24 Apr 2023 22:57:42 +0200 Subject: [PATCH 2/2] Release 2.1.2 - Adjust release procedure - Fix Issue 60 in Bugs.md (Thanks to Tom Greig) - Fix Issue 61 in Bugs.md --- Bugs.md | 17 +++++++++++++ Hashes.md | 20 +++++++++++++++ README.md | 12 ++++++--- example_scripts/focus_follows_cursor.sh | 23 ------------------ man/cagebreak-config.5.md | 2 +- man/cagebreak-socket.7.md | 2 +- man/cagebreak.1.md | 2 +- meson.build | 4 +-- output.c | 2 +- release-non-auto-checks/Bugs.md | 4 +-- release-non-auto-checks/FAQ.md | 4 +-- release-non-auto-checks/SECURITY.md | 4 +-- release-non-auto-checks/WLR_XDG_VERSION | 4 +-- release-non-auto-checks/changelog-major-minor | 4 +-- release-non-auto-checks/internal-wiki | 4 +-- release-non-auto-checks/meson-epoch | 2 -- release-non-auto-checks/release-note | 4 +-- .../reproducibility-checked | 4 +-- .../security-to-man-page-info-transfer | 4 +-- scripts/install-development-environment | 2 +- scripts/set-version | 6 ++--- signatures/2.1.1-cagebreak-config.5.sig | Bin 0 -> 566 bytes signatures/2.1.1-cagebreak-socket.7.sig | Bin 0 -> 566 bytes signatures/2.1.1-cagebreak.1.sig | Bin 0 -> 566 bytes signatures/2.1.1-cagebreak.sig | Bin 0 -> 566 bytes signatures/cagebreak-config.5.sig | Bin 566 -> 566 bytes signatures/cagebreak-socket.7.sig | Bin 566 -> 566 bytes signatures/cagebreak.1.sig | Bin 566 -> 566 bytes signatures/cagebreak.sig | Bin 566 -> 566 bytes 29 files changed, 74 insertions(+), 56 deletions(-) delete mode 100644 example_scripts/focus_follows_cursor.sh delete mode 100644 release-non-auto-checks/meson-epoch mode change 100755 => 100644 scripts/install-development-environment create mode 100644 signatures/2.1.1-cagebreak-config.5.sig create mode 100644 signatures/2.1.1-cagebreak-socket.7.sig create mode 100644 signatures/2.1.1-cagebreak.1.sig create mode 100644 signatures/2.1.1-cagebreak.sig diff --git a/Bugs.md b/Bugs.md index d8a33a1..4075383 100644 --- a/Bugs.md +++ b/Bugs.md @@ -1170,3 +1170,20 @@ leading to a termination of cagebreak. * Fixed: 2.1.0 Prior to release 2.1.0 `meson install` did not work perfectly. + +## Issue 60 + + * github issue number: N/A + * Fixed: 2.1.2 + +In the `merge_output_configs` function, when copying the properties of +one config to another, the `angles` element of an input structure was +being copied to the `status` element of the resultant structure. + +## Issue 61 + + * github issue number: N/A + * Fixed: 2.1.2 + +The script introduced with 2.1.1 `scripts/install-development-environment` had some +missing dependencies. This has been resolved and tested with bare arch containers. diff --git a/Hashes.md b/Hashes.md index e5da651..a6ceae1 100644 --- a/Hashes.md +++ b/Hashes.md @@ -1,5 +1,25 @@ # Hashes +2.1.2 cagebreak + + * sha 256: 7d07864a837ee577a52b2727bfbfe8834fe599712144f0685f458d508717e451 + * sha 512: 9429bace89affdd9f7e83f48168c1e119d1531a5eb9a320299924e469c0e43052e93580aee6ba5f4c2b878e5b85ec5fc4cf172940cb4c1d950329c175898b647 + +2.1.2 cagebreak.1 + + * sha 256: aec69b06cc8dd4328027a04a12847c91b6a176537cce7a6c2d68a4f004cdd47c + * sha 512: 1d6e882a1fa8bec84df189cd32a1ac8953fb61d0241b04296ecb8caadfc55733947037b3810ba28b73e2a32bc30dfd68794dd173220e1f8af8ba9d3d02abe19e + +2.1.2 cagebreak-config.5 + + * sha 256: 36e11b9d4437485a9671e72b3f6cc5669fb6a5b67b60198ee310efd6f3f3b093 + * sha 512: 8378924d81c2c35ddfeace15debafb0407fbbe76513f7a488815a1421ff1c49d7aa7f21812573043004a8fd4e481242fd6970be270fac8007771623ed8d92208 + +2.1.2 cagebreak-socket.7 + + * sha 256: 346f8e203210a1542ca31980628095dbfb267764e3c2228457dc5b0b43850fda + * sha 512: 84e40072c71a38449ec6a5409445458405009010ee47d3e26ba13f6fd13f0291e1c3b38f5e84ba5521b14955bd97ab6d1c636b72a093b6322d0879f98218ab7f + 2.1.1 cagebreak * sha 256: 8632e7e49637e5a3e7ab425a05fbd63d71cf6025143c89d196f309dbf4efdd57 diff --git a/README.md b/README.md index aca03a6..004239a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cagebreak: A Wayland Tiling Compositor -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.1.1)](https://repology.org/project/cagebreak/versions) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6532/badge)](https://bestpractices.coreinfrastructure.org/projects/6532) [![Packaging status](https://repology.org/badge/tiny-repos/cagebreak.svg)](https://repology.org/project/cagebreak/versions) [![AUR package](https://repology.org/badge/version-for-repo/aur/cagebreak.svg?minversion=2.1.2)](https://repology.org/project/cagebreak/versions) ## Quick Introduction @@ -633,14 +633,17 @@ The release procedure outlines the process for a release to occur. * [ ] Synchronize any socket changes to cagebreak-socket man page * [ ] Document fixed bugs in Bugs.md * [ ] Include issue discussion from github, where applicable + * [ ] `meson compile adjust-epoch -C build` * [ ] Commit changes * [ ] `git push origin development` * [ ] Testing * [ ] Manual testing * [ ] `meson compile fuzz -C build` for at least one hour + * [ ] Adjust Hashes.md - Use `meson compile output-hashes -C build` to add Hashes or aid in repro check + * [ ] Commit changes + * [ ] `git push origin development` * [ ] Complete release-non-auto-checks - * [ ] Use `meson compile output-hashes -C build` to add Hashes or aid in repro check - * [ ] `meson compile create-signatures -C build` + * [ ] `meson compile create-sigs -C build` * [ ] Commit and push signatures, hashes and non-auto-check files * [ ] `meson test -C build` passes everything except some release tests * [ ] `git add` relevant files @@ -660,6 +663,7 @@ The release procedure outlines the process for a release to occur. * [ ] `git merge master` * [ ] `git push --tags origin hotfix` * [ ] Upload archives and signatures as release assets + * [ ] Delete feature branches if appropriate * [ ] Manage package release ## Roadmap @@ -743,6 +747,8 @@ see [SECURITY.md](SECURITY.md). * Oliver Friedmann * [Add output scaling](https://github.com/project-repo/cagebreak/pull/34), released in 2.0.0 with slight modifications + * Tom Greig + * Fix bug in merge_output_configs in 2.1.2 ## License diff --git a/example_scripts/focus_follows_cursor.sh b/example_scripts/focus_follows_cursor.sh deleted file mode 100644 index e47bf88..0000000 --- a/example_scripts/focus_follows_cursor.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# Copyright 2023, project-repo and the cagebreak contributors -# SPDX-License-Identifier: MIT - -# This script uses the cagebreak socket to modify the compositor's behaviour in -# such a way that the currently focussed tile follows the cursor, i.e. that the -# currently focussed tile is always the one within which the cursor is located. - -# Start up the ipc link -source "$(dirname "${BASH_SOURCE[0]}")/cb_script_header.sh" - -while IFS= read -r -d $'\0' event -do - # Remove the cg-ipc header - event="${event:6}" - if [[ "$(echo "${event}" | jq ".event_name")" = "\"cursor_switch_tile\"" ]] - then - new_tile="$(echo "${event}"|jq -r ".new_tile")" - new_output_id="$(echo "${event}"|jq -r ".new_output_id")" - # Send the new tile to focus to cagebreak - echo -e "screen ${new_output_id}\nfocus_tile ${new_tile}" >&3 - fi -done <&4 diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index bb04547..b9632dd 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -cagebreak-config(5) "VERSION 2.1.1" "Cagebreak Manual" +cagebreak-config(5) "Version 2.1.2" "Cagebreak Manual" # NAME diff --git a/man/cagebreak-socket.7.md b/man/cagebreak-socket.7.md index 19b7370..4c1a31a 100644 --- a/man/cagebreak-socket.7.md +++ b/man/cagebreak-socket.7.md @@ -1,4 +1,4 @@ -cagebreak-socket(7) "VERSION 2.1.1" "Cagebreak Manual" +cagebreak-socket(7) "Version 2.1.2" "Cagebreak Manual" # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index fdc2da1..c8fc85e 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -cagebreak(1) "VERSION 2.1.1" "Cagebreak Manual" +cagebreak(1) "Version 2.1.2" "Cagebreak Manual" # NAME diff --git a/meson.build b/meson.build index 26b0746..777c8d3 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project( 'cagebreak', 'c', -version : '2.1.1', +version : '2.1.2', license : 'MIT', default_options : ['c_std=c11', 'warning_level=3'] ) @@ -260,7 +260,7 @@ install_data('LICENSE', install_dir : '/usr/share/licenses/' + meson.project_nam if get_option('man-pages') scdoc = find_program('scdoc') - secssinceepoch = 1681758922 + secssinceepoch = 1682363199 shcommand = 'export SOURCE_DATE_EPOCH=' + secssinceepoch.to_string() + ' ; @0@ < @INPUT@'.format(scdoc.path()) sh = find_program('sh') mandir1 = join_paths(get_option('mandir'), 'man1') diff --git a/output.c b/output.c index b8fc627..506f5bd 100644 --- a/output.c +++ b/output.c @@ -399,7 +399,7 @@ merge_output_configs(struct cg_output_config *cfg1, out_cfg->scale = cfg1->scale; } if(cfg1->angle == out_cfg->angle) { - out_cfg->status = cfg2->angle; + out_cfg->angle = cfg2->angle; } else { out_cfg->angle = cfg1->angle; } diff --git a/release-non-auto-checks/Bugs.md b/release-non-auto-checks/Bugs.md index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/Bugs.md +++ b/release-non-auto-checks/Bugs.md @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/FAQ.md b/release-non-auto-checks/FAQ.md index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/FAQ.md +++ b/release-non-auto-checks/FAQ.md @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/SECURITY.md b/release-non-auto-checks/SECURITY.md index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/SECURITY.md +++ b/release-non-auto-checks/SECURITY.md @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/WLR_XDG_VERSION b/release-non-auto-checks/WLR_XDG_VERSION index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/WLR_XDG_VERSION +++ b/release-non-auto-checks/WLR_XDG_VERSION @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/changelog-major-minor b/release-non-auto-checks/changelog-major-minor index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/changelog-major-minor +++ b/release-non-auto-checks/changelog-major-minor @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/internal-wiki b/release-non-auto-checks/internal-wiki index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/internal-wiki +++ b/release-non-auto-checks/internal-wiki @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/meson-epoch b/release-non-auto-checks/meson-epoch deleted file mode 100644 index aa7d21e..0000000 --- a/release-non-auto-checks/meson-epoch +++ /dev/null @@ -1,2 +0,0 @@ -2.1.1 -2023-04-17 diff --git a/release-non-auto-checks/release-note b/release-non-auto-checks/release-note index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/release-note +++ b/release-non-auto-checks/release-note @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/reproducibility-checked b/release-non-auto-checks/reproducibility-checked index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/reproducibility-checked +++ b/release-non-auto-checks/reproducibility-checked @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/release-non-auto-checks/security-to-man-page-info-transfer b/release-non-auto-checks/security-to-man-page-info-transfer index aa7d21e..5f93ac2 100644 --- a/release-non-auto-checks/security-to-man-page-info-transfer +++ b/release-non-auto-checks/security-to-man-page-info-transfer @@ -1,2 +1,2 @@ -2.1.1 -2023-04-17 +2.1.2 +2023-04-24 diff --git a/scripts/install-development-environment b/scripts/install-development-environment old mode 100755 new mode 100644 index d1b9793..1b71ce5 --- a/scripts/install-development-environment +++ b/scripts/install-development-environment @@ -2,7 +2,7 @@ # Copyright 2023, project-repo and the cagebreak contributors # SPDX-License-Identifier: MIT -sudo pacman -Syu --noconfirm git grep sed xev meson ninja clang gcc shellcheck jq openbsd-netcat gnupg binutils alacritty wlroots wayland libxkbcommon cairo pango fontconfig libinput libevdev systemd-libs # systemd-libs is included because of libudev +sudo pacman -Syu --noconfirm git grep sed xorg-xev meson ninja clang gcc shellcheck jq openbsd-netcat gnupg binutils alacritty wlroots wayland wayland-protocols libxkbcommon cairo pango fontconfig libinput libevdev pkgconf scdoc systemd-libs # systemd-libs is included because of libudev if [[ -n ${MESON_SOURCE_ROOT} ]] then diff --git a/scripts/set-version b/scripts/set-version index c4506cb..3ee035c 100755 --- a/scripts/set-version +++ b/scripts/set-version @@ -15,6 +15,6 @@ version="${1}" sed -i -e "s/minversion\=[0-9]*\.[0-9]*.[0-9]*/minversion=$version/" README.md -sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/VERSION $version/" man/cagebreak.1.md -sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/VERSION $version/" man/cagebreak-config.5.md -sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/VERSION $version/" man/cagebreak-socket.7.md +sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/Version $version/" man/cagebreak.1.md +sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/Version $version/" man/cagebreak-config.5.md +sed -i -e "s/Version [0-9]*\.[0-9]*.[0-9]*/Version $version/" man/cagebreak-socket.7.md diff --git a/signatures/2.1.1-cagebreak-config.5.sig b/signatures/2.1.1-cagebreak-config.5.sig new file mode 100644 index 0000000000000000000000000000000000000000..e25e49c74428afbac6d7bd0466d556b92405bdfe GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(xBv>V!tzCAjipv zwL*&XWDQ+NgCa63^5xd6*rRB5_M7Ys7zgiT1s~-o2YJ1 z);#uxIl2+qI$*0rlI_<5p|vN80hPq{9%)NYButb7%J%%KnV z2q1c)eISEOG|o0!{YFv#IK8B;M~-^UR+TC;oHi$U-&sQxB_Yrv&!_Me-|GPK$CZbO E66|6O`Tzg` literal 0 HcmV?d00001 diff --git a/signatures/2.1.1-cagebreak-socket.7.sig b/signatures/2.1.1-cagebreak-socket.7.sig new file mode 100644 index 0000000000000000000000000000000000000000..6b1a6a53bea5fd958f39e4e1a3b2630bc6bcfdd0 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(xBv<1}Fi}wvC0q8gc5j<2D--xgVi`D}qC? zVas)^fv%k{3!i4=+1r}fNLnDFBz&I`+q}yv?MCPXEhv(V#gT*E1@Ms!jzt)>6e6+| zX-u`yGyy-#sngzXi1tX8NCm+~i~>#s;PTeX{a!7a)AGH=S63U0u!;hLXdA$#rdSc0 z6YA!rPx9cY;iCCLmvPHMB{^o!+s?Nfmnp>f(39do*$Ir=a042`w^^;rkBk4a&zP(I zU}8wkO#P-KAM&EkhPF(rf9_C}R_T`%KR{cI)*$4uPZiJS2XunIn^uGgXo>%`hPIXv z`D{%Sh{dJ2P+)I$w3HP7lho0qk)zWVu*`U7``v1rG;;X^I`?&U`=Am_vS{j<0lMUE zmuvJ^o-(sqCPjoa+y8hZxkM`*=hB4tB^ zh_^{u14_Mg3N{t3Qi;moRnhiUR}1deAKy`l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(w*U$W5ZnyN z8{h{0g$BP5|3+rAM~!0w2)qQtiHJcD&$F7&*Ws<|G9b8d%A9w%?95_vvKr+J)dzRT z7}Dgl#lO}{Xei>jJAKVPK7g8_Z;E9f2&>0R>{6hPo?`&kqf!UMp}tJ)Wsq+ISEiLc z7wO~hJp|Wc#X+~)`n?40XtTbraBHqbm7O6V;i}>0UJV#W;2C%VvTX#0btuAYjR6kK zV(WyW@T$+>F)0eIA#}TV0@9hAJJUyyy&M9IU|`_8J@ED)2L9y07q1&UNkZha0OUV- zzD8CJ_LtymJoE9Y+goAv*mFh$G!(CRd$NaiJ?a@9zGQOd|U9!Q9j1Hs(lb?99V8jsaHPjFUYU2Vou z5{B+uG9q~#=4~+u)zU8ZH5&c03;JsLZ`OT_OK~VtnV*H%Og}fPQLGtIKz<&l7hNw zXd}6GH50ZJcJ$7*KqSJ+o=(V*_Xs82+|+zDk=Tdh5m^n@F2~G0VK#2!Pg{B!-)gN& zw6%KZzQ%6kJxHm(P0kSI51z_n58^m{ogDeO4T6{-y(@0Q;GhiJ+aP^ E*P|>Ivj6}9 literal 0 HcmV?d00001 diff --git a/signatures/2.1.1-cagebreak.sig b/signatures/2.1.1-cagebreak.sig new file mode 100644 index 0000000000000000000000000000000000000000..c71037ff63b412c8e4ee197d5ed9267706168b0c GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(w*U$W5ZnyN z8{h{0g|O`p|93+h`>T39v=djZ0&wOd*$K{aopV$L6nt}hx`hB&5Pf-?SaHqLIQKWAKFY)eQIZhM_TsTyth9BBvr?NCuIW4avXTAIt@Y<2T&n7p3kNrY! zqSc2?p^pZ(*T>#NcFb>weL^n7E3W>$GC?NFrG23dM+(TyWnpJ0Gx3H;|>bN zb4u`nR4`|f>GZAb=#_=PzeB?U&iWE&nPq(yXa9ud%8?4xOz%Omilkz`{YlRd^H~E3 zx98;1k+8JlLoJbo6%@FZ`jLoSn_zx{I`)X*_k9X&K-^K)Hd7Cd7R^550PG4Oeg4-m<1JL!W$2>2kLobN-?OLq z|LzkmP}4FyS|(AAzV-Ft1r%Nw+tRy1fEVK9fRa<;&NO>1m_X=8F<`g0s%*;X%p-IT zK#Fz}rdXasS2uaDJFVCNrH64xK49yEpCUp8p|%F? E)OoZP+yDRo literal 0 HcmV?d00001 diff --git a/signatures/cagebreak-config.5.sig b/signatures/cagebreak-config.5.sig index e25e49c74428afbac6d7bd0466d556b92405bdfe..f96713d95f03f5db4cb5d9f359f5a07efe261263 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XN%(x{vno|Sj7x0L`Rsk` zzccF>sPdtgaU4+77ayFBN zL^y190up?k#V_WR^AIUpXARKF?>7Pi;N+0Lad*>|^}Rjv`Ht-`WO^?`ltx=!!sIC# z^G!&A7B+INK_M#jzyF%$+1LiW?U!5%MOQc26B8*GTlnd%8Gs-0Cgn}~T}@eGpvtkc z2|6({wHX<0T{+EhR2>^Qu3-&A%G>TykPPs0n75m>G5w!naEvg1&=TW;)NzxOQ)H;- zdyPhRslELoykhP2>JIQlaFf_qf;3A&`kRqsX?xGRY_m;^0Ssze;3I25@-&3jv{%LO zlt`NJBEZ0hE4D+0HmHM!j!XPoad8u>E$czw*o&rfvIjyILMlzJA%PU^WO29|T4_{) Ey-4Q{fB*mh literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(xBv>V!tzCAjipv zwL*&XWDQ+NgCa63^5xd6*rRB5_M7Ys7zgiT1s~-o2YJ1 z);#uxIl2+qI$*0rlI_<5p|vN80hPq{9%)NYButb7%J%%KnV z2q1c)eISEOG|o0!{YFv#IK8B;M~-^UR+TC;oHi$U-&sQxB_Yrv&!_Me-|GPK$CZbO E66|6O`Tzg` diff --git a/signatures/cagebreak-socket.7.sig b/signatures/cagebreak-socket.7.sig index 6b1a6a53bea5fd958f39e4e1a3b2630bc6bcfdd0..fec631f4783791825b37c8b15a6c4e24cca58d55 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XVo?CTq)#T*vDA8Uv0yd-^z|q<4hqC}C^c;56vGqqV62Z0uy0F_8W35NU8g;5AHC59BNy2{Q?7)R%MQUM`Tb zFv4dkl&*4`9`fA59G5+%c*$F><(@z?}Q_4rlof-K!}(ISCRNGVfw7&vuT$iT2Q zVWn@xp0K@o{>#Qo+54}2Gv&Ie*M@P$Fihu;Z>%`5l1R$1bJq$PcKxs!7vH1l$HSYy z25=-=ZZAhjUn)CT;B~FWgS_E>2VF|gB&V2gstyT9sHUEzMrDT}x+H8X_i7%_B&~SG zc$EpgnHN}f*FPwKB3N6xv*{nsJ0o4zyNLx7Q!ncY^a{fXJ@Esa@=vK;a4I z8_RhqV5KRy4RQ$`<*%w7xi{-nI3^0@?6iLUl|JA7`dsicN7B8sb~X01qEI9okTQ%W zOWuS5w!uKv3cn0ID(_u`!SgLEqIz;TBZrJ^#!ZwIg`kVr$r|}OTS~AVgz`8TEF)`r EcpuIZNB{r; literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(xBv<1}Fi}wvC0q8gc5j<2D--xgVi`D}qC? zVas)^fv%k{3!i4=+1r}fNLnDFBz&I`+q}yv?MCPXEhv(V#gT*E1@Ms!jzt)>6e6+| zX-u`yGyy-#sngzXi1tX8NCm+~i~>#s;PTeX{a!7a)AGH=S63U0u!;hLXdA$#rdSc0 z6YA!rPx9cY;iCCLmvPHMB{^o!+s?Nfmnp>f(39do*$Ir=a042`w^^;rkBk4a&zP(I zU}8wkO#P-KAM&EkhPF(rf9_C}R_T`%KR{cI)*$4uPZiJS2XunIn^uGgXo>%`hPIXv z`D{%Sh{dJ2P+)I$w3HP7lho0qk)zWVu*`U7``v1rG;;X^I`?&U`=Am_vS{j<0lMUE zmuvJ^o-(sqCPjoa+y8hZxkM`*=hB4tB^ zh_^{u14_Mg3N{t3Qi;moRnhiUR}1deAKy`Bqcp_iBViwa^f(K{t0D?!V5CHZzL!ufR3! zyz?2YNBfCc<;3OqzTnrq{)>k(%&BnGYt+-axf3=(G}sl{lLQQd(H2-Q%@ZLau4>nu zNMW7d^VsREfMH!M$9$HYlEBM>|6kD35+1uI%UqIEo2^622DgP@O$tLHx$d*980Rch ze9j2`VDBw4m!f8}?pnyop;R#sbL;w(!;6n5Q?|ipbaVSgEArB?h2ZQ}bVO~HGhQ=o6v9P|u z4KR14ets86#>W%0L2u|GAFv`=<-QLkl{NUmeWNO1Vw-$QfZ}r)Hs?S_0^171zHVVB>-%pE z07BOgiY;zQt~Kpeg>xNLwD5d%byVna<{5cccreqy9i7=oUEYXECZ!VLI^CN@X*@eG zU?NWI*A_8U$?YU!z6ZQcoerhjMX#**W=jaACCetS+A0|TLm+B$cQw6#d+cxf&3K`i z&;|;4sZvB}Z)+zA)inhQsBVnI#q}>R5-8vgEvg!Ji!S;QKh1bCMttvf>C%l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(w*U$W5ZnyN z8{h{0g$BP5|3+rAM~!0w2)qQtiHJcD&$F7&*Ws<|G9b8d%A9w%?95_vvKr+J)dzRT z7}Dgl#lO}{Xei>jJAKVPK7g8_Z;E9f2&>0R>{6hPo?`&kqf!UMp}tJ)Wsq+ISEiLc z7wO~hJp|Wc#X+~)`n?40XtTbraBHqbm7O6V;i}>0UJV#W;2C%VvTX#0btuAYjR6kK zV(WyW@T$+>F)0eIA#}TV0@9hAJJUyyy&M9IU|`_8J@ED)2L9y07q1&UNkZha0OUV- zzD8CJ_LtymJoE9Y+goAv*mFh$G!(CRd$NaiJ?a@9zGQOd|U9!Q9j1Hs(lb?99V8jsaHPjFUYU2Vou z5{B+uG9q~#=4~+u)zU8ZH5&c03;JsLZ`OT_OK~VtnV*H%Og}fPQLGtIKz<&l7hNw zXd}6GH50ZJcJ$7*KqSJ+o=(V*_Xs82+|+zDk=Tdh5m^n@F2~G0VK#2!Pg{B!-)gN& zw6%KZzQ%6kJxHm(P0kSI51z_n58^m{ogDeO4T6{-y(@0Q;GhiJ+aP^ E*P|>Ivj6}9 diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig index c71037ff63b412c8e4ee197d5ed9267706168b0c..d729d108fda99f3c4a6433ce5ae228ab14dbf810 100644 GIT binary patch literal 566 zcmV-60?GY}0y6{v0SEvc79j*qg2yatK3J!`Pxw_y3HVH?JGf^B0%S()fdC2#5J?I6 zOsG4!XMW!h0Eh!1R%k=hodX8nwACP9sFdtasp)hWtSn%_UH1!yDPCD!X4Y8UDKIVE zO)nk@R>7}qq(Zv6isAH)uV$hx9h5EgW5)k0pHgaa?dreFtjJ}VC2HAS-!2_VVT~S7 z{6U*9Cu|k%{*PikV04S2?Ev8Oci;@xz!x?3$)2s|Xnqk7b7QnkI#t zwVyvLx{CzDTgBJ=F-iyjBYM!{JQ7H>j-8}ugRvkD*P1CwehD6+%k@xn6=fU1iJcOP z&OPIBV2HPFk|h;oGCr3gcKN#{4kx=nwsf`+AGhtUxUKN!MgI{OMcn4rLlI(M1Sj@; z7)v089Y#=;RHKo#K7OLOaju2N%v`I5un~nncJ&)3Xj1aOM_>hO2=NC4mNQ|iPqwc_ zDhgzB^dL%&*>I#sE6mXceGoq4mDE?q?b)-QO|O%%;f{s|N_YXrue;sbY!zvg1b7RQ zTmJ>+R^LUI)KuX?eP6-c2T6~+4?iE{P_Xfq1rYPs=$%Cn$f6IjlvLn&z+Bfk%Ii{h zkG#@S4^bmNRX?m9@a>;|?+(*As=n+zcd%;jIbNcCB9o6ldd(5EnY|x{j51y6R4jC$ E=0t7`+5i9m literal 566 zcmV-60?GY}0y6{v0SEvc79j*$>l!Yw(LZP72CP}!49FYc2K|Kv0%Sd(w*U$W5ZnyN z8{h{0g|O`p|93+h`>T39v=djZ0&wOd*$K{aopV$L6nt}hx`hB&5Pf-?SaHqLIQKWAKFY)eQIZhM_TsTyth9BBvr?NCuIW4avXTAIt@Y<2T&n7p3kNrY! zqSc2?p^pZ(*T>#NcFb>weL^n7E3W>$GC?NFrG23dM+(TyWnpJ0Gx3H;|>bN zb4u`nR4`|f>GZAb=#_=PzeB?U&iWE&nPq(yXa9ud%8?4xOz%Omilkz`{YlRd^H~E3 zx98;1k+8JlLoJbo6%@FZ`jLoSn_zx{I`)X*_k9X&K-^K)Hd7Cd7R^550PG4Oeg4-m<1JL!W$2>2kLobN-?OLq z|LzkmP}4FyS|(AAzV-Ft1r%Nw+tRy1fEVK9fRa<;&NO>1m_X=8F<`g0s%*;X%p-IT zK#Fz}rdXasS2uaDJFVCNrH64xK49yEpCUp8p|%F? E)OoZP+yDRo