You are not logged in.

#1 2019-09-23 14:53:48

severinkaderli
Member
From: Switzerland
Registered: 2019-09-23
Posts: 2
Website

PKGBUILD review request (vita3k-git)

I adopted the package for the vita3k emulator and made it work again. Now I'd like some feedback on what things I can improve with the PKGBUILD.

# Maintainer: Severin Kaderli <severin@kaderli.dev>
# Contributor: aimileus < $(echo YWltaWxpdXNAcHJvdG9ubWFpbC5jb20K | base64 -d)
_pkgname=vita3k
pkgname=${_pkgname}-git
pkgver=r1241.74c50634
pkgrel=1
pkgdesc="Experimental PlayStation Vita emulator"
arch=('x86_64')
url="https://vita3k.org/"
license=('GPL2')
makedepends=(
	'clang'
	'cmake'
	'git'
	'python2'
	'rsync'
)
depends=(
	'sdl2'
)
provides=('vita3k')
conflicts=('vita3k')
source=(
	"git+https://github.com/vita3k/vita3k.git"
	"git+https://github.com/serge1/ELFIO.git"
	"git+https://github.com/aquynh/capstone.git"
	"git+https://github.com/vitasdk/vita-headers.git"
	"git+https://github.com/jbeder/yaml-cpp.git"
	"git+https://github.com/Vita3K/vita-toolchain.git"
	"git+https://github.com/jonasmr/microprofile.git"
	"git+https://github.com/tcbrindle/sdl2-cmake-scripts.git"
	"git+https://github.com/gabime/spdlog.git#branch=v1.x"
	"git+https://github.com/nothings/stb.git"
	"git+https://github.com/tronkko/dirent.git#branch=v1.23"
	"git+https://github.com/B-Con/crypto-algorithms.git"
	"git+https://github.com/ocornut/imgui.git"
	"git+https://github.com/google/googletest.git"
	"git+https://github.com/Vita3K/shaders-db.git"
	"git+https://github.com/KhronosGroup/glslang.git"
	"git+https://github.com/vita3k/SPIRV-Cross.git"
	"git+https://github.com/Vita3K/ext-boost.git"
	"git+https://github.com/Vita3K/dlmalloc.git"
	"git+https://github.com/vita3k/printf.git"
	"git+https://github.com/ocornut/imgui_club.git"
	"git+https://github.com/unicorn-engine/unicorn.git"
	"git+https://github.com/discordapp/discord-rpc.git"
	"git+https://github.com/zeux/pugixml.git"
	"git+https://github.com/aantron/better-enums.git"
)
md5sums=(
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
)

pkgver() {
	cd "${_pkgname}"
	printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

prepare() {
	cd "${_pkgname}"
	git submodule init
	git config submodule.src/external/elfio.url "${srcdir}/ELFIO"
	git config submodule.src/external/capstone.url "${srcdir}/capstone"
	git config submodule.src/external/vita-headers.url "${srcdir}/vita-headers"
	git config submodule.src/external/yaml-cpp.url "${srcdir}/yaml-cpp"
	git config submodule.src/external/vita-toolchain.url "${srcdir}/vita-toolchain"
	git config submodule.src/external/microprofile.url "${srcdir}/microprofile"
	git config submodule.src/external/sdl2-cmake-scripts.url "${srcdir}/sdl2-cmake-scripts"
	git config submodule.src/external/spdlogs.url "${srcdir}/spdlog"
	git config submodule.src/external/stb.url "${srcdir}/stb"
	git config submodule.src/external/dirent.url "${srcdir}/dirent"
	git config submodule.src/external/crypto-algorithms.url "${srcdir}/crypto-algorithms"
	git config submodule.src/external/imgui.url "${srcdir}/imgui"
	git config submodule.src/external/googletest.url "${srcdir}/googletest"
	git config submodule.src/external/shaders-db.url "${srcdir}/shaders-db"
	git config submodule.src/external/glslang.url "${srcdir}/glslang"
	git config submodule.src/external/SPIRV-Cross.url "${srcdir}/SPIRV-Cross"
	git config submodule.src/external/boost.url "${srcdir}/ext-boost"
	git config submodule.src/external/dlmalloc.url "${srcdir}/dlmalloc"
	git config submodule.src/external/printf.url "${srcdir}/printf"
	git config submodule.src/external/imgui_club.url "${srcdir}/imgui_club"
	git config submodule.src/external/unicorn-src.url "${srcdir}/unicorn"
	git config submodule.src/external/discord-rpc.url "${srcdir}/discord-rpc"
	git config submodule.src/external/pugixml.url "${srcdir}/pugixml"
	git config submodule.src/external/better-enums.url "${srcdir}/better-enums"
	git submodule update
}

build() {
	cd "${_pkgname}"

	# Clang is needed for the build to work for now
	export CC="/usr/bin/clang"
	export CXX="/usr/bin/clang++"

	./gen-linux.sh

	# Workaround for linking problem with discord-rpc
	rm -rf build-linux
	mkdir -p build-linux
	cd build-linux
	cmake .. -DUSE_DISCORD_RICH_PRESENCE=OFF

	make VERBOSE=1 UNICORN_QEMU_FLAGS="--python=/usr/bin/python2"
}

package() {
	cd "${_pkgname}"

	install -d -m 755 "${pkgdir}/opt/"
	install -d -m 755 "${pkgdir}/usr/bin/"

	# 777 permissions are sadly needed for now for it to work because vita3k
	# creates a log file in the same directory as the binary
	rsync -rtl --perms --chmod=777 "build-linux/bin/" "${pkgdir}/opt/vita3k"
	ln -s "/opt/vita3k/Vita3K" "${pkgdir}/usr/bin/vita3k"

	install -Dm644 "README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
    install -Dm644 "COPYING.txt" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.txt"
}

Offline

#2 2019-09-24 11:08:37

loqs
Member
Registered: 2014-03-06
Posts: 9,062

Re: PKGBUILD review request (vita3k-git)

	"git+https://github.com/gabime/spdlog.git#branch=v1.x"

I am not sure specifying the branch will have any effect as it is only used as submodule.

	# 777 permissions are sadly needed for now for it to work because vita3k
	# creates a log file in the same directory as the binary
	rsync -rtl --perms --chmod=777 "build-linux/bin/" "${pkgdir}/opt/vita3k"

If the directory /opt/vita3k needs 777,  does every other file and directory copied need 777 as well?
Could the rsync command be replaced with cp / install?

    install -Dm644 "COPYING.txt" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.txt"

A copy of GPL2 is provided by licenses package so you do not need to provide it in the package.  PKGBUILD#license

Last edited by loqs (2019-09-24 11:09:05)

Offline

#3 2019-09-24 16:32:56

severinkaderli
Member
From: Switzerland
Registered: 2019-09-23
Posts: 2
Website

Re: PKGBUILD review request (vita3k-git)

Thank you very much for your answer. I managed to fix all of the points you mentioned.

# Maintainer: Severin Kaderli <severin@kaderli.dev>
# Contributor: aimileus < $(echo YWltaWxpdXNAcHJvdG9ubWFpbC5jb20K | base64 -d)
_pkgname=vita3k
pkgname=${_pkgname}-git
pkgver=r1255.daff95ff
pkgrel=1
pkgdesc="Experimental PlayStation Vita emulator"
arch=('x86_64')
url="https://vita3k.org/"
license=('GPL2')
makedepends=(
	'clang'
	'cmake'
	'git'
	'python2'
)
depends=(
	'sdl2'
)
provides=('vita3k')
conflicts=('vita3k')
source=(
	"git+https://github.com/vita3k/vita3k.git"
	"git+https://github.com/serge1/ELFIO.git"
	"git+https://github.com/aquynh/capstone.git"
	"git+https://github.com/vitasdk/vita-headers.git"
	"git+https://github.com/jbeder/yaml-cpp.git"
	"git+https://github.com/Vita3K/vita-toolchain.git"
	"git+https://github.com/jonasmr/microprofile.git"
	"git+https://github.com/tcbrindle/sdl2-cmake-scripts.git"
	"git+https://github.com/gabime/spdlog.git"
	"git+https://github.com/nothings/stb.git"
	"git+https://github.com/tronkko/dirent.git"
	"git+https://github.com/B-Con/crypto-algorithms.git"
	"git+https://github.com/ocornut/imgui.git"
	"git+https://github.com/google/googletest.git"
	"git+https://github.com/Vita3K/shaders-db.git"
	"git+https://github.com/KhronosGroup/glslang.git"
	"git+https://github.com/vita3k/SPIRV-Cross.git"
	"git+https://github.com/Vita3K/ext-boost.git"
	"git+https://github.com/Vita3K/dlmalloc.git"
	"git+https://github.com/vita3k/printf.git"
	"git+https://github.com/ocornut/imgui_club.git"
	"git+https://github.com/unicorn-engine/unicorn.git"
	"git+https://github.com/discordapp/discord-rpc.git"
	"git+https://github.com/zeux/pugixml.git"
	"git+https://github.com/aantron/better-enums.git"
)
md5sums=(
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
	'SKIP'
)

pkgver() {
	cd "${_pkgname}"
	printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

prepare() {
	cd "${_pkgname}"
	git submodule init
	git config submodule.src/external/elfio.url "${srcdir}/ELFIO"
	git config submodule.src/external/capstone.url "${srcdir}/capstone"
	git config submodule.src/external/vita-headers.url "${srcdir}/vita-headers"
	git config submodule.src/external/yaml-cpp.url "${srcdir}/yaml-cpp"
	git config submodule.src/external/vita-toolchain.url "${srcdir}/vita-toolchain"
	git config submodule.src/external/microprofile.url "${srcdir}/microprofile"
	git config submodule.src/external/sdl2-cmake-scripts.url "${srcdir}/sdl2-cmake-scripts"
	git config submodule.src/external/spdlogs.url "${srcdir}/spdlog"
	git config submodule.src/external/stb.url "${srcdir}/stb"
	git config submodule.src/external/dirent.url "${srcdir}/dirent"
	git config submodule.src/external/crypto-algorithms.url "${srcdir}/crypto-algorithms"
	git config submodule.src/external/imgui.url "${srcdir}/imgui"
	git config submodule.src/external/googletest.url "${srcdir}/googletest"
	git config submodule.src/external/shaders-db.url "${srcdir}/shaders-db"
	git config submodule.src/external/glslang.url "${srcdir}/glslang"
	git config submodule.src/external/SPIRV-Cross.url "${srcdir}/SPIRV-Cross"
	git config submodule.src/external/boost.url "${srcdir}/ext-boost"
	git config submodule.src/external/dlmalloc.url "${srcdir}/dlmalloc"
	git config submodule.src/external/printf.url "${srcdir}/printf"
	git config submodule.src/external/imgui_club.url "${srcdir}/imgui_club"
	git config submodule.src/external/unicorn-src.url "${srcdir}/unicorn"
	git config submodule.src/external/discord-rpc.url "${srcdir}/discord-rpc"
	git config submodule.src/external/pugixml.url "${srcdir}/pugixml"
	git config submodule.src/external/better-enums.url "${srcdir}/better-enums"
	git submodule update
}

build() {
	cd "${_pkgname}"

	# Clang is needed for the build to work for now
	export CC="/usr/bin/clang"
	export CXX="/usr/bin/clang++"

	./gen-linux.sh

	# Workaround for linking problem with discord-rpc
	rm -rf build-linux
	mkdir -p build-linux
	cd build-linux
	cmake .. -DUSE_DISCORD_RICH_PRESENCE=OFF

	make UNICORN_QEMU_FLAGS="--python=/usr/bin/python2"
}

package() {
	cd "${_pkgname}"

	install -d -m 755 "${pkgdir}/usr/bin/"
	install -d -m 755 "${pkgdir}/opt/vita3k/"

	cp -r "build-linux/bin/"* "${pkgdir}/opt/vita3k/"
	ln -s "/opt/vita3k/Vita3K" "${pkgdir}/usr/bin/vita3k"

	# This folder needs 777 permissions because vita3k creates a log file
	chmod 777 "${pkgdir}/opt/vita3k/"

	install -Dm644 "README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md"
}

Offline

Board footer

Powered by FluxBB