initial commit

This commit is contained in:
tim holloway 2026-08-23 11:07:35 -04:00
commit 6cb3f7d952
4 changed files with 284 additions and 0 deletions

4
README.md Normal file
View File

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

30
builders/README.md Normal file
View File

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

26
builders/brute_build.sh Normal file
View File

@ -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

224
builders/makebuilder Executable file
View File

@ -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 <<EOF
#
# spec file for Taskwarrior app...
#
Summary: CLI-based todo/reminders
Name: taskwarrior
Version: @@VERSION@@
Release: 0
License: GPL
Group: Applications/Utilities
Source: taskwarrior-@@VERSION@@.tgz
# https://github.com/GothenburgBitFactory/taskwarrior/archive/refs/heads/develop.zip
#https://github.com/GothenburgBitFactory/taskwarrior
URL: http://www.taskwarrior.org
Distribution: CentOS 9
#Vendor: Tim Holloway
Packager: Tim Holloway <timh@mousetech.com>
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