automate/020_swayfx.sh

251 lines
7.8 KiB
Bash

#!/usr/bin/env bash
set -x
# https://github.com/WillPower3309/swayfx/
# https://github.com/WillPower3309/swayfx/blob/master/INSTALL-deb.md
sudo apt install \
meson \
wayland-protocols \
wayland \
libpcre2-dev \
libjson-c-dev \
libpango-1.0-0 \
libcairo2-dev \
wget
conf_print_debian_control() {
cat <<EOF
Source: swayfx
Section: x11
Priority: optional
Maintainer: root <root@devuan>
Rules-Requires-Root: no
Build-Depends:
debhelper-compat (= 13),
Standards-Version: 4.7.0
Homepage: https://github.com/WillPower3309/swayfx/
#Vcs-Browser: https://github.com/WillPower3309/swayfx/
#Vcs-Git: https://github.com/WillPower3309/swayfx.git
Package: swayfx
Architecture: any
Multi-Arch: foreign
Depends:
${shlibs:Depends},
${misc:Depends},
Description: "swayfx is the sway compositor with fancy GLES2 effects"
"Swayfx is a fork of sway window manager. This fork ditches the simple wlr_renderer, and replaces it with our fx_renderer, capable of rendering with fancy GLES2 effects."
EOF
}
# conf_print_debian_control | sudo tee debian/control
conf_print_debian_rules() {
cat <<'EOF'
#!/usr/bin/make -f
%:
dh $@ --builddirectory=build/ \
--buildsystem=meson+ninja
# Include debhelper.mk
include /usr/share/dpkg/default.mk
# Define the build directory
BUILDDIR = $(CURDIR)/build
# Define the build and install targets for wlroots
override_dh_auto_build:
meson $(WLROOTS_BUILD)
ninja -C $(WLROOTS_BUILD)
# Define the build and install targets for swayfx
override_dh_auto_build_swayfx:
meson $(SWAYFX_BUILD)
ninja -C $(SWAYFX_BUILD)
override_dh_auto_install_swayfx:
ninja -C $(SWAYFX_BUILD) install
# Define the clean target
clean:
rm -rf $(BUILDDIR)
EOF
}
# conf_print_debian_rules | sudo tee debian/rules >/dev/null
# Set github user and project name
USER="WillPower3309"
PROJECT="swayfx"
LICENSE="expat" # Adjust based on the actual license
SECTION="x11/wm"
HOMEPAGE="https://github.com/WillPower3309/swayfx"
PACKAGE="swayfx"
TAG=$(curl "https://api.github.com/repos/${USER}/${PROJECT}/tags?per_page=5" | jq -r '.[0] | .name')
VERSION=${TAG:1} # strip the preceding 'v'
TIMESTAMP=$(date -R) # This generates the current date and time in RFC 2822 format
BUILD_HOME="/var/tmp/swayfx-${VERSION}-git_build"
DEBEMAIL="cyteen@ring-zero.co.uk"
DEBFULLNAME="Cyteen May"
# DEBIAN_BRANCH="suites/excalibur"
DEBIAN_BRANCH="suites/unstable"
DEBIAN_SUITE="${DEBIAN_BRANCH##*/}"
DEBIAN_MIRROR="http://deb.devuan.org/merged"
DEBIAN_ARCH="$(dpkg --print-architecture)"
DEBIAN_INCLUDE="ca-certificates,eatmydata,ccache,git"
DEBIAN_TAG='debian/%(version)s'
UPSTREAM_BRANCH="upstream/latest"
# UPSTREAM_TAG='v%(version)s'
UPSTREAM_TAG='upstream/v%(version)s'
TARGET_DIR="/srv/chroot/unstable-${DEBIAN_ARCH}-sbuild"
DESCRIPTION="swayfx is the sway compositor with fancy GLES2 effects"
LONG_DESCRIPTION="Swayfx is a fork of sway window manager. This fork ditches the simple wlr_renderer, and replaces it with our fx_renderer, capable of rendering with fancy GLES2 effects."
# Check if the target directory exists
if [ ! -d "${TARGET_DIR}" ]; then
echo "Target directory ${TARGET_DIR} does not exist. Creating chroot environment..."
sudo sbuild-createchroot \
--include="${DEBIAN_INCLUDE}" \
--merged-usr \
--make-sbuild-tarball=/srv/chroot/${DEBIAN_SUITE}-${DEBIAN_ARCH}.tar.gz \
${DEBIAN_SUITE} ${TARGET_DIR} ${DEBIAN_MIRROR}
else
echo "Target directory ${TARGET_DIR} already exists. Skipping chroot creation."
fi
# Make the BUILD_DEST for git and gbp changeable from just PACKAGE
# gbp prefers no version number in the containing directory.
# BUILD_DEST="${BUILD_HOME}/${PACKAGE}_${VERSION}"
BUILD_DEST="${BUILD_HOME}/${PACKAGE}-${TAG##v}"
SUBPROJECTS_DEST="${BUILD_DEST}/subprojects"
# Make the BUILD_HOME directory and clone upstream
mkdir -p ${BUILD_HOME}
cd ${BUILD_HOME} || exit
# fetch wlroots
# WLROOTS_RELEASE=$(lastversion --at gitlab wlroots/wlroots)
# WLROOTS_RELEASE="0.17.3"
WLROOTS_RELEASE="0.16.2"
git clone -b ${WLROOTS_RELEASE} --depth 1 https://gitlab.freedesktop.org/wlroots/wlroots.git wlroots-${WLROOTS_RELEASE}
git clone -b ${TAG} --depth 1 https://github.com/${USER}/${PROJECT}.git ${BUILD_DEST}
# https://github.com/WillPower3309/swayfx.git
# gbp clone \
# --pristine-tar \
# --debian-branch=${DEBIAN_BRANCH} \
# --upstream-branch=${UPSTREAM_BRANCH} \
# --add-upstream-vcs \
# --verbose \
# https://github.com/${USER}/${PROJECT}.git ${BUILD_DEST}
# cd ${BUILD_DEST} || exit
# git checkout -b ${DEBIAN_BRANCH} ${VERSION}
#==============================================================================
# debianize the BUILD_HOME directory
#==============================================================================
# prepare Debian packaging from an original source archive
cd ${BUILD_DEST}
dh_make \
--createorig \
--single \
--native \
--copyright ${LICENSE} \
--packagename ${PACKAGE}_${VERSION} \
--yes
rm debian/*.ex
mv debian ..
cd ..
#==============================================================================
# edit the debian files
#==============================================================================
# conf_print function calls go here:
conf_print_debian_control | sudo tee debian/control
conf_print_debian_rules | sudo tee debian/rules
sed -i \
-e "s|^\(Section: \).*|\1${SECTION}|" \
-e "s|^\(Maintainer: \).*|\1'${DEBFULLNAME}\ \<${DEBEMAIL}\>'|" \
-e 's|^\(Homepage: \).*|\1'${HOMEPAGE}'|' \
-e "s|^\(Description: \).*|\1${DESCRIPTION}|" \
-e "s|.*insert long.*|${LONG_DESCRIPTION}|" \
debian/control
# https://salsa.debian.org/debian/debian-package-init/-/blob/master/deb_create_watch.py
# outputs to debian/watch/ With deb_create_watch.py in your path
EXEC_PREFIX=${HOME}/.local/bin
wget -c -O ${EXEC_PREFIX}/deb_create_watch.py https://salsa.debian.org/debian/debian-package-init/-/raw/master/deb_create_watch.py?inline=false
python3 ${EXEC_PREFIX}/deb_create_watch.py https://github.com/${USER}/${PROJECT}
#==============================================================================
# Update Changelog
#==============================================================================
#--snapshot \
# --commit \
# --commit-msg="Commit after debian control pruned of dh_make ex." \
# switch to the branch the you wish to contain the debian directory
git checkout -b ${DEBIAN_BRANCH}
DEBEMAIL="cyteen@ring-zero.co.uk" DEBFULLNAME="Cyteen May" \
gbp dch \
--auto \
--local=devuan \
--no-git-author \
--force-distribution \
--new-version=${VERSION} \
--release \
--upstream-branch=${UPSTREAM_BRANCH} \
--upstream-tag=${UPSTREAM_TAG} \
--distribution=${DEBIAN_SUITE} \
--debian-branch=${DEBIAN_BRANCH} \
--debian-tag=${DEBIAN_TAG}
#==============================================================================
# Commit the debian directory to the debian branch
git add debian
git commit -m "Post gbp dch commit upstream changelog"
GITEA_OWNER="cyteen"
GITEA_PASS="mlpfinsonik"
GITEA_URL="git2.ring-zero.co.uk"
GITEA_KEY="${BUILD_HOME}/gitea-cyteen.asc"
sudo curl https://${GITEA_URL}/api/packages/${GITEA_OWNER}/debian/repository.key | sudo tee ${GITEA_KEY}
GITEA_DIST="ceres"
GITEA_COMP="main"
GITEA_LIST="deb http://deb.debian.org/debian experimental main"
GITEA_LIST="deb https://${GITEA_OWNER}:${GITEA_PASS}@${GITEA_URL}/api/packages/${GITEA_OWNER}/debian ${GITEA_DIST} ${GITEA_COMP}"
DEPENDS=""
# all options to gbp not starting with --git- to the builder, or add to GIT_BUIDLER
GIT_BUILDER='sbuild --arch-all --source --source-only-changes --verbose --dist=unstable'
# --extra-package="${EXTRA_PACKAGES}" \
sudo gbp buildpackage \
--add-depends="${DEPENDS}" \
--extra-repository="${GITEA_LIST}" \
--extra-repository-key="${GITEA_KEY}" \
--build-dep-resolver=aptitude \
--git-ignore-new \
--git-ignore-branch \
--git-pristine-tar \
--git-submodules \
--git-builder="${GIT_BUILDER}" \
--git-debian-branch="${DEBIAN_BRANCH}" \
--git-debian-tag="${DEBIAN_TAG}" \
--git-upstream-tag="${UPSTREAM_TAG}" \
--git-upstream-branch="${UPSTREAM_BRANCH}" \
--git-export-dir="../build-area"