diff options
author | jlam <jlam@pkgsrc.org> | 2017-08-10 05:41:07 +0000 |
---|---|---|
committer | jlam <jlam@pkgsrc.org> | 2017-08-10 05:41:07 +0000 |
commit | 7eefa0f2a65cc4ae44afc8f832815493999faa2c (patch) | |
tree | 7cff2c1978e332afe80c94ee07655c9b81e5a2e3 /mk | |
parent | e60cd2eb10ef8ddb74137e167f1b705ea713f042 (diff) | |
download | pkgsrc-7eefa0f2a65cc4ae44afc8f832815493999faa2c.tar.gz |
mk/pkgtasks: Add infrastructure to use "icon_themes" package task.
Add definitions for the gtk-update-icon-cache(1) command to the
script header template, and a makefile fragment that creates the
data file for the "icon_themes" package task if ${ICON_THEMES} is
"yes" in the package Makefile.
Also bump pkgtasks dependency to version 1.12 for the "icon_themes"
package task and compatibility with pkgsrc/mk/pkginstall.
Diffstat (limited to 'mk')
-rw-r--r-- | mk/pkgformat/pkg/templates/header | 4 | ||||
-rw-r--r-- | mk/pkgtasks/bsd.pkgtasks.mk | 5 | ||||
-rw-r--r-- | mk/pkgtasks/icon_themes.mk | 64 | ||||
-rw-r--r-- | mk/pkgtasks/tests/Kyuafile | 3 | ||||
-rwxr-xr-x | mk/pkgtasks/tests/icon_themes_test | 103 |
5 files changed, 175 insertions, 4 deletions
diff --git a/mk/pkgformat/pkg/templates/header b/mk/pkgformat/pkg/templates/header index 7f5924635f5..6fd517ea8a7 100644 --- a/mk/pkgformat/pkg/templates/header +++ b/mk/pkgformat/pkg/templates/header @@ -29,7 +29,7 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # -# $NetBSD: header,v 1.4 2017/08/10 05:38:00 jlam Exp $ +# $NetBSD: header,v 1.5 2017/08/10 05:41:07 jlam Exp $ # Package task loader. : ${TASK_MODULE_DIR:=@LOCALBASE@/share/pkgtasks-1} @@ -67,6 +67,8 @@ CHMOD="@CHMOD@" CHOWN="@CHOWN@" CP="@CP@" DATE="@DATE@" +GTK2_UPDATE_ICON_CACHE="@GTK2_UPDATE_ICON_CACHE@" +GTK3_UPDATE_ICON_CACHE="@GTK2_UPDATE_ICON_CACHE@" FIND="@FIND@" ID="@ID@" INSTALL_INFO="@INSTALL_INFO@" diff --git a/mk/pkgtasks/bsd.pkgtasks.mk b/mk/pkgtasks/bsd.pkgtasks.mk index 5ac95304cdf..e577bef8f31 100644 --- a/mk/pkgtasks/bsd.pkgtasks.mk +++ b/mk/pkgtasks/bsd.pkgtasks.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkgtasks.mk,v 1.4 2017/06/04 00:03:43 jlam Exp $ +# $NetBSD: bsd.pkgtasks.mk,v 1.5 2017/08/10 05:41:07 jlam Exp $ # # Copyright (c) 2017 The NetBSD Foundation, Inc. # All rights reserved. @@ -134,6 +134,7 @@ USE_PKGTASKS= no .include "${PKGSRCDIR}/mk/pkgtasks/directories.mk" .include "${PKGSRCDIR}/mk/pkgtasks/files.mk" .include "${PKGSRCDIR}/mk/pkgtasks/fonts.mk" +.include "${PKGSRCDIR}/mk/pkgtasks/icon_themes.mk" .include "${PKGSRCDIR}/mk/pkgtasks/info_files.mk" .include "${PKGSRCDIR}/mk/pkgtasks/ocaml_findlib.mk" .include "${PKGSRCDIR}/mk/pkgtasks/permissions.mk" @@ -142,7 +143,7 @@ USE_PKGTASKS= no .include "${PKGSRCDIR}/mk/pkgtasks/usergroup.mk" # Add a dependency on pkgtasks if package tasks are needed. -_PKGTASKS_DEPENDS= pkgtasks-1>=1.10:../../pkgtools/pkgtasks +_PKGTASKS_DEPENDS= pkgtasks-1>=1.12:../../pkgtools/pkgtasks DEPENDS+= ${"${USE_PKGTASKS:tl}" == "yes":?${_PKGTASKS_DEPENDS}:} TASK_MODULE_DIR?= ${LOCALBASE}/share/pkgtasks-1 diff --git a/mk/pkgtasks/icon_themes.mk b/mk/pkgtasks/icon_themes.mk new file mode 100644 index 00000000000..f7250d7e996 --- /dev/null +++ b/mk/pkgtasks/icon_themes.mk @@ -0,0 +1,64 @@ +# $NetBSD: icon_themes.mk,v 1.1 2017/08/10 05:41:07 jlam Exp $ +# +# Copyright (c) 2017 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Johnny C. Lam. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Generate the data file for the icon_themes package task. + +# ICON_THEMES +# Package-settable variable for whether to automatically update +# the GTK+ icon theme directory caches. +# +# Possible: yes, no +# Default: yes +# +_PKG_VARS.pkgtasks+= ICON_THEMES +ICON_THEMES?= no + +FILES_SUBST+= GTK_UPDATE_ICON_CACHE=${LOCALBASE:Q}/bin/gtk-update-icon-cache +FILES_SUBST+= GTK2_UPDATE_ICON_CACHE=${LOCALBASE:Q}/bin/gtk2-update-icon-cache +FILES_SUBST+= GTK3_UPDATE_ICON_CACHE=${LOCALBASE:Q}/bin/gtk-update-icon-cache + +# Trigger pkgtasks dependency if needed. +.if "${ICON_THEMES:tl}" == "yes" +USE_PKGTASKS= yes +.endif + +_PKGTASKS_DATA.icon_themes= ${_PKGTASKS_DIR}/icon_themes +_PKGTASKS_DATAFILES+= ${_PKGTASKS_DATA.icon_themes} + +# ${ICON_THEMES_cmd} is defined by the plist module. +${_PKGTASKS_DATA.icon_themes}: + ${RUN}${MKDIR} ${.TARGET:H:Q} + ${RUN}exec > ${.TARGET:Q}.tmp + ${RUN}${TEST} "${ICON_THEMES:tl}" = "yes" || exit 0; \ + cmd=${ICON_THEMES_cmd:Q}""; \ + ${TEST} -n "$$cmd" || cmd=${TRUE:Q}""; \ + eval $$cmd | while IFS= read themedir; do \ + ${ECHO} "# ICON_THEME: $$themedir"; \ + done >> ${.TARGET:Q}.tmp + ${RUN}${MV} ${.TARGET:Q}.tmp ${.TARGET:Q} diff --git a/mk/pkgtasks/tests/Kyuafile b/mk/pkgtasks/tests/Kyuafile index d904646df59..4b98d8ff37b 100644 --- a/mk/pkgtasks/tests/Kyuafile +++ b/mk/pkgtasks/tests/Kyuafile @@ -1,4 +1,4 @@ --- $NetBSD: Kyuafile,v 1.1 2017/06/01 02:06:05 jlam Exp $ +-- $NetBSD: Kyuafile,v 1.2 2017/08/10 05:41:07 jlam Exp $ --[[----------------------------------------------------------------------- Copyright (c) 2017 The NetBSD Foundation, Inc. All rights reserved. @@ -52,6 +52,7 @@ atf_test_program { name = "directories_test" } atf_test_program { name = "files_test" } atf_test_program { name = "fonts_test" } atf_test_program { name = "groups_test" } +atf_test_program { name = "icon_themes_test" } atf_test_program { name = "info_files_test" } atf_test_program { name = "ocaml_findlib_test" } atf_test_program { name = "permissions_test" } diff --git a/mk/pkgtasks/tests/icon_themes_test b/mk/pkgtasks/tests/icon_themes_test new file mode 100755 index 00000000000..ff7307b1671 --- /dev/null +++ b/mk/pkgtasks/tests/icon_themes_test @@ -0,0 +1,103 @@ +#!/usr/bin/env atf-sh +# +# $NetBSD: icon_themes_test,v 1.1 2017/08/10 05:41:07 jlam Exp $ +# +# Copyright (c) 2017 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Johnny C. Lam. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# ENVIRONMENT +# The following variables are used if they are set: +# +# MAKE The name or path to the BSD make(1) utility. The default +# is "make". +# +# PKGSRCDIR +# The location of the pkgsrc source tree. The default is +# "/usr/pkgsrc". +# + +setup() +{ + cat > Makefile << 'EOF' +.include "${PKGSRCDIR}/mk/pkgtasks/tests/test.mk" +.sinclude "mk.conf" +.include "${PKGSRCDIR}/mk/pkgtasks/icon_themes.mk" + +all: value +value: ${_PKGTASKS_DATA.icon_themes} + ${RUN}${CP} ${.ALLSRC:Q} ${.TARGET:Q} +EOF +} + +### +### test1 +### + +atf_test_case test1 + +test1_head() +{ + atf_set "descr" "pkgsrc/mk/pkgtasks/icon_themes.mk" +} + +test1_body() +{ + : ${MAKE:=make} + : ${PKGSRCDIR:=/usr/pkgsrc} + + setup + + cat > mk.conf << 'EOF' +# Create mock ${ICON_THEMES_cmd}. +ICON_THEMES= yes +ICON_THEMES_cmd= ( echo "icon_theme1"; echo "icon_theme2" ) +EOF + # Expected output is each path stripped of leading "share/icons/" + # and inserted into the following template: + # + # # ICON_THEMES: <themedir> + # + cat > expected << 'EOF' +# ICON_THEME: icon_theme1 +# ICON_THEME: icon_theme2 +EOF + echo ">>> expected" + cat expected + + ${MAKE} PKGSRCDIR="${PKGSRCDIR}" || atf_fail "make(1) failed" + + echo ">>> value" + cat value + + cmp expected value || atf_fail "expected differs from value" + atf_pass +} + +atf_init_test_cases() +{ + atf_add_test_case test1 +} |