# https://github.com/msys2/MSYS2-packages/tree/master/pacman

# [Wonderful] pkgname
pkgname=wf-pacman
pkgver=7.0.0
pkgrel=7
_git_patch_level_commit=c685ae6412af04cae1eaa5d6bda8c277c7ffb8c8
# [Wonderful] pkgdesc
pkgdesc="Wonderful toolchain build of the pacman package manager"
arch=('x86_64')
url="https://www.archlinux.org/pacman/"
license=('GPL')
options=('!emptydirs')

source=("git+https://gitlab.archlinux.org/pacman/pacman.git#commit=${_git_patch_level_commit}")
validpgpkeys=('6645B0A8C7005E78DB1D7864F99FFE0FEAE999BD'  # Allan McRae <allan@archlinux.org>
              'B8151B117037781095514CA7BBDFFC92306B1121') # Andrew Gregory (pacman) <andrew@archlinux.org>

sha512sums=('57d7af624772ad0b5cf931d5d55f927e80e5ca5d77a1b2fb039e7ad309f5555cab1b37dee52b4811ac02aa8587214369c9440c0f297f8e89e146ecbf0e03d518')

# [Wonderful]
. "/wf/config/runtime-env-vars.sh"

# [Wonderful]
prepare() {
    cd "${srcdir}"/pacman

    # FIXME: Apply this globally
    git config core.symlinks true
    git checkout -- .

    patch -p1 < /wf/packages/wf-pacman/pacman-7.0.0-core-update.patch
    patch -p1 < /wf/packages/wf-pacman/pacman-7.0.0-rootless.patch
    patch -p1 < /wf/packages/wf-pacman/pacman-7.0.0-soft-checkspace.patch
    patch -p1 < /wf/packages/wf-pacman/pacman-windows-friendly-epoch-separator.patch
    sed -i -e "s/Pacman v\%s - libalpm v\%s/Pacman v%s - libalpm v%s (wf-pacman)/" src/pacman/pacman.c

    # MSYS2-specific patches
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0005-Remove-everything-related-to-sudo-fakeroot-file-perm.patch
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0006-fill_progress.patch
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0014-makepkg-avoid-creating-.tar-files-with-extended-attr.patch
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0019-pacman-libalpm-ignore-file-conflicts-for-foo.exe-foo.patch
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0021-Use-pipe-instead-of-socket.patch
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0022-pacman-make-file-list-comparisons-between-packages-c.patch
    patch -p1 < /wf/packages/wf-pacman/windows/msys2-0027-pacman.c-handle-cr-on-stdin-as-well.patch
}

build() {
    mkdir -p "${srcdir}"/pacman/builddir
    cd "${srcdir}"/pacman/builddir
    meson setup \
        --prefix="$WF_PATH" \
	--sysconfdir="$WF_PATH/etc" \
	--localstatedir="$WF_PATH/pacman" \
        --includedir=lib/pacman/include \
        --libdir=lib/pacman/lib \
        --buildtype=plain \
        -Db_lto=true \
        -Db_staticpic=false \
        -Dbuildstatic=true \
        -Ddefault_library=static \
        -Ddoc=disabled \
        -Ddoxygen=disabled \
        -Di18n=false \
        -Droot-dir="$WF_PATH" \
        -Dscriptlet-shell=/usr/bin/bash \
        ..
    ninja
}

package() {
    cd "${srcdir}"/pacman/builddir
    DESTDIR="${pkgdir}" ninja install

    # [Wonderful] custom packaging process
    cd "$pkgdir"
    install -dm755 bin
    mv ."$WF_PATH"/bin/pacman.exe bin/wf-pacman.exe
    mv ."$WF_PATH"/bin/vercmp.exe bin/wf-pacman-vercmp.exe
    #mv ."$WF_PATH"/bin/pacman-conf.exe bin/wf-pacman-conf.exe
    install -dm755 etc

    cp -aRv /wf/packages/wf-pacman/config/* etc/
    sed -i -e "s/%ARCH%/"$CARCH"/g" -e "s/%OS%/"$WF_HOST_OS"/g" -e "s@%WF_PATH%@"$WF_PATH"@g" etc/makepkg.conf
    sed -i -e "s/%ARCH%/"$CARCH"/g" -e "s/%OS%/"$WF_HOST_OS"/g" -e "s@%WF_PATH%@"$WF_PATH"@g" etc/pacman.conf
    sed -i -e "s/%ARCH%/"$CARCH"/g" -e "s/%OS%/"$WF_HOST_OS"/g" -e "s@%WF_PATH%@"$WF_PATH"@g" etc/pacman.d/*.*

    install -dm755 lib
    install -dm755 lib/wf-pacman
    cp -aL /wf/config/* lib/wf-pacman/

    install -dm755 pacman
    install -dm755 pacman/config
    cp -aRv /wf/packages/wf-pacman/repos/* pacman/config/
    sed -i -e "s/%ARCH%/"$CARCH"/g" -e "s/%OS%/"$WF_HOST_OS"/g" pacman/config/*.*

    install -dm755 share
    cp -aL ."$WF_PATH"/share/makepkg share/
    mv ."$WF_PATH"/bin/pacman-key bin/wf-pacman-key
    mv ."$WF_PATH"/bin/makepkg bin/wf-makepkg
    mv ."$WF_PATH"/bin/repo-add bin/wf-pacman-repo-add
    ln -s wf-pacman-repo-add bin/wf-pacman-repo-remove

    # [Wonderful] relocate helper binary references, remove dependency on pacman-conf
    sed -E -i -e "s/repo-add/wf-pacman-repo-add/g" -e "s/repo-remove/wf-pacman-repo-remove/g" -e "s/vercmp/wf-pacman-vercmp/g" bin/wf-pacman-repo-add
    sed -E -i -e "s/-pacman/-wf-pacman/g" -e "s@confdir=.+@confdir='"$WF_PATH"/etc'@" -e "s@\\$\\(pacman-conf DBPath\\)@"$WF_PATH"/pacman/db@" bin/wf-makepkg
    sed -E -i -e "s@^PACMAN_KEYRING_DIR=.+@PACMAN_KEYRING_DIR="$WF_PATH"/pacman/gnupg/@" bin/wf-pacman-key

    rm -r opt

    wf_relocate_path_to_destdir
}
