# Copyright 2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 inherit gnome2-utils xdg-utils DESCRIPTION="A programming environment for creating stories, animations, games, and music." HOMEPAGE="http://scratch.mit.edu/" SRC_URI="http://download.scratch.mit.edu/${P}.src.tar.gz" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="+alsa oss pulseaudio nas +v4l" DEPEND="dev-lang/squeakvm[scratch] alsa? ( dev-lang/squeakvm[alsa] ) oss? ( dev-lang/squeakvm[oss] ) pulseaudio? ( dev-lang/squeakvm[pulseaudio] ) nas? ( dev-lang/squeakvm[nas] ) v4l? ( dev-lang/squeakvm[v4l] )" RDEPEND="${DEPEND}" REQUIRED_USE="?? ( alsa oss pulseaudio nas )" S="${WORKDIR}/${P}.src" src_prepare() { rm -rf src/plugins/* rm -f Makefile eapply_user } src_configure(){ if use alsa; then squeak_sound_plugin="ALSA" elif use oss; then squeak_sound_plugin="OSS" elif use pulseaudio; then squeak_sound_plugin="pulse" elif use nas; then squeak_sound_plugin="nas" else squeak_sound_plugin="null" fi } src_install() { local datadir="/usr/share/${PN}" local icondir="/usr/share/icons/hicolor" dodir "${datadir}" cp -r Help locale Media Projects "${D}${datadir}" doman src/man/* dodoc ACKNOWLEDGEMENTS KNOWN-BUGS README NOTICE TRADEMARK_POLICY insinto /usr/share/mime/packages doins src/scratch.xml dolib Scratch.image dolib Scratch.ini ( cd src/icons for res in *; do insinto "${icondir}/${res}/apps" doins "${res}"/scratch*.png insinto "${icondir}/${res}/mimetypes" if [[ ${res} != "32x32" ]]; then newins "${res}/gnome-mime-application-x-scratch-project.png" mime-application-x-scratch-project.png fi done ) install_runner make_desktop_entry scratch Scratch scratch "Education;Development" "MimeType=application/x-scratch-project" } install_runner() { local tmpexe=$(emktemp) cat << EOF > "${tmpexe}" #!/bin/sh cd exec \ "/usr/bin/squeak" \\ -vm-sound-${squeak_sound_plugin} \\ "/usr/$(get_libdir)/Scratch.image" \\ "${@}" EOF chmod go+rx "${tmpexe}" newbin "${tmpexe}" "${PN}" || die } pkg_preinst() { gnome2_icon_savelist } pkg_postinst() { xdg_mimeinfo_database_update xdg_desktop_database_update gnome2_icon_cache_update } pkg_postrm() { xdg_mimeinfo_database_update xdg_desktop_database_update gnome2_icon_cache_update }