commit 6cb3f7d952e12686d55ae8e56b3defaaa0d7efb5 Author: tim holloway Date: Sun Aug 23 11:07:35 2026 -0400 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..3605e7d --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# TaskWarrior for Almalinux 9 + +This project contains ready-to-install TaskWarrior RPMs as well as the +resources to build TaskWarrior from scratch. \ No newline at end of file diff --git a/builders/README.md b/builders/README.md new file mode 100644 index 0000000..8eb65cf --- /dev/null +++ b/builders/README.md @@ -0,0 +1,30 @@ +# Building TaskWarrior on AlmaLinux 9 and similar RHEL-style OS's + +This directory contains 2 different ways to build and install TaskWarrior. + +These builders were designed to run on a basic AlmaLinux 9 VM. I downloaded the "boot" ISO, spawned a VM using it as the install media and everything else is +provided by the builder. + +Note that TaskWarrior has two special requirements to build: + +1. The Fish shell must be installed. It is not one of the standard shells, but +can be installed from the EPEL repository. +1. The Rust language system provided with AlmaLinux 9 is too old to build. If +you have the stock Rust RPM installed, uninstall it and use the ``rustup`` +process to get the latest one. + +Both of these issues are resolved in the brute_build script. + +The "brute_build" file is a shell script that builds and installs by brute +force. If you have trouble building the RPM, use it. Note that the RPM uses +an explicit file list and rpmbuild will complain if you build a release that +adds or removes files from this list. In that case, just edit the ``%files`` +section of the RPM spec file. + +The ``makebuilder`` script witll setup for rpmbuild. It downloads the source +code to the rpmbuild SOURCES directory and creates a custom spec file in the +SPECS directory. Select the version of TaskWarrior you want to build by +editng the version variable in ``makebuilder``. By default the RPM will build +your $HOME/rpmbuild directory, but you can change that in the makebuilder. +All necessary directories will be created automatically, including the +rpmbuild directory. diff --git a/builders/brute_build.sh b/builders/brute_build.sh new file mode 100644 index 0000000..7a2559f --- /dev/null +++ b/builders/brute_build.sh @@ -0,0 +1,26 @@ +#!/bin/sh +# Brute-force builder fot Taskwarrior +# 2026-98-22, Tim Holloway +# +sudo dnf -y iinstalll git +git clone https://github.com/GothenburgBitFactory/taskwarrior.git +cd taskwarrior +# +# NOTE: do a "git checkout" if you want to build a specific version by tag_id +# +sudo dnf -y install epel-release +sudo dnf -y install fish + +sudo dnf -y groupinstall "Development Tools" +sudo dnf -y install cmake gnutls-devel libuuid-devel + + +#curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -y +# Hit Enter, above (-y) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh && . /tmp/rustup.sh -y +. "$HOME/.cargo/env" +#source "$HOME/.cargo/env" + +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build +sudo cmake --install build diff --git a/builders/makebuilder b/builders/makebuilder new file mode 100755 index 0000000..10cb3e9 --- /dev/null +++ b/builders/makebuilder @@ -0,0 +1,224 @@ +#!/bin/sh +# Setup RPM build for TaskWarrior. +# +# 2026-08-22 Tim Holloway +# +# NOTE: the %files list may add/remove entries between releases. Adjust as needed. +# +rpmbuild=$HOME/rpmbuild +version=3.5.0 +# create build base if it doesn't exist +mkdir -p $rpmbuild +cd $rpmbuild +# +# Pull source +# +git clone https://github.com/GothenburgBitFactory/taskwarrior.git +# +# Build version archive +# +mkdir -p SOURCES SPECS +cd taskwarrior +git archive --format=tgz -o ${rpmbuild}/SOURCES/taskwarrior-${version}.tgz --prefix=taskwarrior-${version} v${version} +# +# customize specfile +# +cd ${rpmbuild} +rm -rf taskwarrior + +sed -e "s/@@VERSION@@/${version}/" >${rpmbuild}/SPECS/taskwarrior.spec < +Requires: git epel-release fish cmake gnutls-devel libuuid-devel +%description +A CLI-based manager for tasks and to-dos with scheduling. + +%prep + +%setup +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh && . /tmp/rustup.sh -y +. "$HOME/.cargo/env" + +%build +%cmake -DCMAKE_BUILD_TYPE=Release +%cmake_build + +%install +%cmake_install + +%files +/usr/bin/task +/usr/lib/debug/usr/bin/task-@@VERSION@@-0.x86_64.debug +/usr/share/bash-completion/completions/task +/usr/share/doc/task/AUTHORS +/usr/share/doc/task/ChangeLog +/usr/share/doc/task/INSTALL +/usr/share/doc/task/LICENSE +/usr/share/doc/task/README.md +/usr/share/doc/task/rc/bubblegum-256.theme +/usr/share/doc/task/rc/dark-16.theme +/usr/share/doc/task/rc/dark-256.theme +/usr/share/doc/task/rc/dark-blue-256.theme +/usr/share/doc/task/rc/dark-gray-256.theme +/usr/share/doc/task/rc/dark-gray-blue-256.theme +/usr/share/doc/task/rc/dark-green-256.theme +/usr/share/doc/task/rc/dark-red-256.theme +/usr/share/doc/task/rc/dark-violets-256.theme +/usr/share/doc/task/rc/dark-yellow-green.theme +/usr/share/doc/task/rc/default.theme +/usr/share/doc/task/rc/holidays.cs-CZ.rc +/usr/share/doc/task/rc/holidays.da-DK.rc +/usr/share/doc/task/rc/holidays.de-AT.rc +/usr/share/doc/task/rc/holidays.de-BE.rc +/usr/share/doc/task/rc/holidays.de-CH.rc +/usr/share/doc/task/rc/holidays.de-DE.rc +/usr/share/doc/task/rc/holidays.el-GR.rc +/usr/share/doc/task/rc/holidays.en-CA.rc +/usr/share/doc/task/rc/holidays.en-GB.rc +/usr/share/doc/task/rc/holidays.en-NZ.rc +/usr/share/doc/task/rc/holidays.en-US.rc +/usr/share/doc/task/rc/holidays.es-CO.rc +/usr/share/doc/task/rc/holidays.es-ES.rc +/usr/share/doc/task/rc/holidays.es-US.rc +/usr/share/doc/task/rc/holidays.fi-FI.rc +/usr/share/doc/task/rc/holidays.fr-BE.rc +/usr/share/doc/task/rc/holidays.fr-CA.rc +/usr/share/doc/task/rc/holidays.fr-FR.rc +/usr/share/doc/task/rc/holidays.hr-HR.rc +/usr/share/doc/task/rc/holidays.hu-HU.rc +/usr/share/doc/task/rc/holidays.is-IS.rc +/usr/share/doc/task/rc/holidays.it-IT.rc +/usr/share/doc/task/rc/holidays.nb-NO.rc +/usr/share/doc/task/rc/holidays.nl-BE.rc +/usr/share/doc/task/rc/holidays.nl-NL.rc +/usr/share/doc/task/rc/holidays.pl-PL.rc +/usr/share/doc/task/rc/holidays.por-PRT.rc +/usr/share/doc/task/rc/holidays.pt-BR.rc +/usr/share/doc/task/rc/holidays.pt-PT.rc +/usr/share/doc/task/rc/holidays.ru-RU.rc +/usr/share/doc/task/rc/holidays.sk-SK.rc +/usr/share/doc/task/rc/holidays.sv-FI.rc +/usr/share/doc/task/rc/holidays.sv-SE.rc +/usr/share/doc/task/rc/holidays.tr-TR.rc +/usr/share/doc/task/rc/light-16.theme +/usr/share/doc/task/rc/light-256.theme +/usr/share/doc/task/rc/no-color.theme +/usr/share/doc/task/rc/refresh +/usr/share/doc/task/rc/solarized-dark-256.theme +/usr/share/doc/task/rc/solarized-light-256.theme +/usr/share/doc/task/scripts/add-ons/README +/usr/share/doc/task/scripts/add-ons/update-holidays.pl +/usr/share/doc/task/scripts/hooks/README +/usr/share/doc/task/scripts/hooks/on-add +/usr/share/doc/task/scripts/hooks/on-add.the +/usr/share/doc/task/scripts/hooks/on-exit +/usr/share/doc/task/scripts/hooks/on-exit.shadow-file +/usr/share/doc/task/scripts/hooks/on-launch +/usr/share/doc/task/scripts/hooks/on-modify +/usr/share/doc/task/scripts/vim/README +/usr/share/doc/task/scripts/vim/ftdetect/task.vim +/usr/share/doc/task/scripts/vim/syntax/taskdata.vim +/usr/share/doc/task/scripts/vim/syntax/taskedit.vim +/usr/share/doc/task/scripts/vim/syntax/taskrc.vim +/usr/share/doc/task/task-ref.pdf +/usr/share/fish/vendor_completions.d/task.fish +/usr/share/man/man1/task.1.gz +/usr/share/man/man5/task-color.5.gz +/usr/share/man/man5/task-sync.5.gz +/usr/share/man/man5/taskrc.5.gz +/usr/share/zsh/site-functions/_task +/usr/bin/task +/usr/lib/debug/usr/bin/task-@@VERSION@@-0.x86_64.debug +/usr/share/bash-completion/completions/task +/usr/share/doc/task/AUTHORS +/usr/share/doc/task/ChangeLog +/usr/share/doc/task/INSTALL +/usr/share/doc/task/LICENSE +/usr/share/doc/task/README.md +/usr/share/doc/task/rc/bubblegum-256.theme +/usr/share/doc/task/rc/dark-16.theme +/usr/share/doc/task/rc/dark-256.theme +/usr/share/doc/task/rc/dark-blue-256.theme +/usr/share/doc/task/rc/dark-gray-256.theme +/usr/share/doc/task/rc/dark-gray-blue-256.theme +/usr/share/doc/task/rc/dark-green-256.theme +/usr/share/doc/task/rc/dark-red-256.theme +/usr/share/doc/task/rc/dark-violets-256.theme +/usr/share/doc/task/rc/dark-yellow-green.theme +/usr/share/doc/task/rc/default.theme +/usr/share/doc/task/rc/holidays.cs-CZ.rc +/usr/share/doc/task/rc/holidays.da-DK.rc +/usr/share/doc/task/rc/holidays.de-AT.rc +/usr/share/doc/task/rc/holidays.de-BE.rc +/usr/share/doc/task/rc/holidays.de-CH.rc +/usr/share/doc/task/rc/holidays.de-DE.rc +/usr/share/doc/task/rc/holidays.el-GR.rc +/usr/share/doc/task/rc/holidays.en-CA.rc +/usr/share/doc/task/rc/holidays.en-GB.rc +/usr/share/doc/task/rc/holidays.en-NZ.rc +/usr/share/doc/task/rc/holidays.en-US.rc +/usr/share/doc/task/rc/holidays.es-CO.rc +/usr/share/doc/task/rc/holidays.es-ES.rc +/usr/share/doc/task/rc/holidays.es-US.rc +/usr/share/doc/task/rc/holidays.fi-FI.rc +/usr/share/doc/task/rc/holidays.fr-BE.rc +/usr/share/doc/task/rc/holidays.fr-CA.rc +/usr/share/doc/task/rc/holidays.fr-FR.rc +/usr/share/doc/task/rc/holidays.hr-HR.rc +/usr/share/doc/task/rc/holidays.hu-HU.rc +/usr/share/doc/task/rc/holidays.is-IS.rc +/usr/share/doc/task/rc/holidays.it-IT.rc +/usr/share/doc/task/rc/holidays.nb-NO.rc +/usr/share/doc/task/rc/holidays.nl-BE.rc +/usr/share/doc/task/rc/holidays.nl-NL.rc +/usr/share/doc/task/rc/holidays.pl-PL.rc +/usr/share/doc/task/rc/holidays.por-PRT.rc +/usr/share/doc/task/rc/holidays.pt-BR.rc +/usr/share/doc/task/rc/holidays.pt-PT.rc +/usr/share/doc/task/rc/holidays.ru-RU.rc +/usr/share/doc/task/rc/holidays.sk-SK.rc +/usr/share/doc/task/rc/holidays.sv-FI.rc +/usr/share/doc/task/rc/holidays.sv-SE.rc +/usr/share/doc/task/rc/holidays.tr-TR.rc +/usr/share/doc/task/rc/light-16.theme +/usr/share/doc/task/rc/light-256.theme +/usr/share/doc/task/rc/no-color.theme +/usr/share/doc/task/rc/refresh +/usr/share/doc/task/rc/solarized-dark-256.theme +/usr/share/doc/task/rc/solarized-light-256.theme +/usr/share/doc/task/scripts/add-ons/README +/usr/share/doc/task/scripts/add-ons/update-holidays.pl +/usr/share/doc/task/scripts/hooks/README +/usr/share/doc/task/scripts/hooks/on-add +/usr/share/doc/task/scripts/hooks/on-add.the +/usr/share/doc/task/scripts/hooks/on-exit +/usr/share/doc/task/scripts/hooks/on-exit.shadow-file +/usr/share/doc/task/scripts/hooks/on-launch +/usr/share/doc/task/scripts/hooks/on-modify +/usr/share/doc/task/scripts/vim/README +/usr/share/doc/task/scripts/vim/ftdetect/task.vim +/usr/share/doc/task/scripts/vim/syntax/taskdata.vim +/usr/share/doc/task/scripts/vim/syntax/taskedit.vim +/usr/share/doc/task/scripts/vim/syntax/taskrc.vim +/usr/share/doc/task/task-ref.pdf +/usr/share/fish/vendor_completions.d/task.fish +/usr/share/man/man1/task.1.gz +/usr/share/man/man5/task-color.5.gz +/usr/share/man/man5/task-sync.5.gz +/usr/share/man/man5/taskrc.5.gz +/usr/share/zsh/site-functions/_task +EOF