#!/bin/env sh # dummypkg - Create a dummy Arch Linux package # # Copyright (C) 2023 Pekka Helenius # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . /usr/share/makepkg/util/message.sh colorize if [[ -z $1 ]] then error "Provide a package name" exit 1 fi PKG=$1 PKGBUILD_FILE="PKGBUILD.tmp" PACMAN_FILE="pacman.tmp" msg "Preparing dummy package: $PKG" description="dummy package" version="0.1" release="1" provides=($PKG) purge() { msg "Cleaning up..." pkgfile_prefix="$PKG-$version-$release-any.pkg.tar" pkgfile=$(find . -maxdepth 1 -type f -iname "${pkgfile_prefix}*" | head -1) [[ -f ${pkgfile} ]] && rm -f ${pkgfile} [[ -f ${PKGBUILD_FILE} ]] && rm -f ${PKGBUILD_FILE} [[ -f ${PACMAN_FILE} ]] && rm -f ${PACMAN_FILE} [[ -d src ]] && rm -rf src [[ -d pkg ]] && rm -rf pkg exit $1 } remote_info() { pacman_info=$(pacman -Si $PKG > $PACMAN_FILE) if [[ $? -eq 0 ]] then # Description description=$(echo $(grep -oP "^Description.*: \K.*(?=.*)" $PACMAN_FILE) "("$description")") # Provides provides_pkgs=($(grep -oP "^Provides.*: \K[^A-Z]*(?=[^A-Z]*)" $PACMAN_FILE)) provides=(${provides[@]} ${provides_pkgs[@]}) # Version version_full=$(grep -oP "^Version.*: \K.*(?=.*)" $PACMAN_FILE) version=$(echo $version_full | awk '{sub(/-.*/,"",$0); print $0}') release=$(echo $version_full | awk '{sub(/.*-/,"",$0); print $0}') fi } trap "purge 1" SIGINT SIGKILL SIGABRT SIGTERM msg "Setting version number and provided packages information..." remote_info msg2 "Description: ${description}" msg2 "Provides: ${provides[*]}" msg2 "Version: $version" msg2 "Release: $release" cat < ${PKGBUILD_FILE} pkgname="${PKG}" pkgver=$version pkgrel=$release pkgdesc="${description}" arch=(any) provides=(${provides[@]}) groups=(dummy) EOF if [[ ! -f ${PKGBUILD_FILE} ]] then error "No PKGBUILD found" exit 1 fi makepkg -Cfi -p ${PKGBUILD_FILE} purge 0