head	1.1;
access;
symbols
	pkgsrc-2026Q1:1.1.0.74
	pkgsrc-2026Q1-base:1.1
	pkgsrc-2025Q4:1.1.0.72
	pkgsrc-2025Q4-base:1.1
	pkgsrc-2025Q3:1.1.0.70
	pkgsrc-2025Q3-base:1.1
	pkgsrc-2025Q2:1.1.0.68
	pkgsrc-2025Q2-base:1.1
	pkgsrc-2025Q1:1.1.0.66
	pkgsrc-2025Q1-base:1.1
	pkgsrc-2024Q4:1.1.0.64
	pkgsrc-2024Q4-base:1.1
	pkgsrc-2024Q3:1.1.0.62
	pkgsrc-2024Q3-base:1.1
	pkgsrc-2024Q2:1.1.0.60
	pkgsrc-2024Q2-base:1.1
	pkgsrc-2024Q1:1.1.0.58
	pkgsrc-2024Q1-base:1.1
	pkgsrc-2023Q4:1.1.0.56
	pkgsrc-2023Q4-base:1.1
	pkgsrc-2023Q3:1.1.0.54
	pkgsrc-2023Q3-base:1.1
	pkgsrc-2023Q2:1.1.0.52
	pkgsrc-2023Q2-base:1.1
	pkgsrc-2023Q1:1.1.0.50
	pkgsrc-2023Q1-base:1.1
	pkgsrc-2022Q4:1.1.0.48
	pkgsrc-2022Q4-base:1.1
	pkgsrc-2022Q3:1.1.0.46
	pkgsrc-2022Q3-base:1.1
	pkgsrc-2022Q2:1.1.0.44
	pkgsrc-2022Q2-base:1.1
	pkgsrc-2022Q1:1.1.0.42
	pkgsrc-2022Q1-base:1.1
	pkgsrc-2021Q4:1.1.0.40
	pkgsrc-2021Q4-base:1.1
	pkgsrc-2021Q3:1.1.0.38
	pkgsrc-2021Q3-base:1.1
	pkgsrc-2021Q2:1.1.0.36
	pkgsrc-2021Q2-base:1.1
	pkgsrc-2021Q1:1.1.0.34
	pkgsrc-2021Q1-base:1.1
	pkgsrc-2020Q4:1.1.0.32
	pkgsrc-2020Q4-base:1.1
	pkgsrc-2020Q3:1.1.0.30
	pkgsrc-2020Q3-base:1.1
	pkgsrc-2020Q2:1.1.0.26
	pkgsrc-2020Q2-base:1.1
	pkgsrc-2020Q1:1.1.0.6
	pkgsrc-2020Q1-base:1.1
	pkgsrc-2019Q4:1.1.0.28
	pkgsrc-2019Q4-base:1.1
	pkgsrc-2019Q3:1.1.0.24
	pkgsrc-2019Q3-base:1.1
	pkgsrc-2019Q2:1.1.0.22
	pkgsrc-2019Q2-base:1.1
	pkgsrc-2019Q1:1.1.0.20
	pkgsrc-2019Q1-base:1.1
	pkgsrc-2018Q4:1.1.0.18
	pkgsrc-2018Q4-base:1.1
	pkgsrc-2018Q3:1.1.0.16
	pkgsrc-2018Q3-base:1.1
	pkgsrc-2018Q2:1.1.0.14
	pkgsrc-2018Q2-base:1.1
	pkgsrc-2018Q1:1.1.0.12
	pkgsrc-2018Q1-base:1.1
	pkgsrc-2017Q4:1.1.0.10
	pkgsrc-2017Q4-base:1.1
	pkgsrc-2017Q3:1.1.0.8
	pkgsrc-2017Q3-base:1.1
	pkgsrc-2017Q2:1.1.0.4
	pkgsrc-2017Q2-base:1.1
	pkgsrc-2017Q1:1.1.0.2
	pkgsrc-2017Q1-base:1.1;
locks; strict;
comment	@# @;


1.1
date	2017.02.17.21.27.38;	author jmmv;	state Exp;
branches;
next	;
commitid	cE5aHndqlK4RNlGz;


desc
@@


1.1
log
@Initial addition of pkgtools/pkg_comp-cron, version 1.0:

This package sets up periodic builds of binary packages using the
pkgtools/pkg_comp utility given minimal configuration.  All that is
needed from the user is to determine which packages to build
automatically.

If you are on NetBSD, see also sysutils/sysbuild-user, which is the
perfect companion to this package to periodically build the base system.
@
text
@#! /bin/sh

BUILDBASE="@@BUILDBASE@@"
EGDIR="@@EGDIR@@"
PKG_COMP_HOME="@@PKG_COMP_HOME@@"
PKG_COMP_USER="@@PKG_COMP_USER@@"
PKG_COMP_EGDIR="@@PKG_COMP_EGDIR@@"
SANDBOXCTL_EGDIR="@@SANDBOXCTL_EGDIR@@"

# Regexp to match our crontab entry.
CRONTAB_RE="${PREFIX}/sbin/pkg_comp4cron .*${BUILDBASE}/pkg_comp.conf"

# Dumps the pkg_comp user's crontab to a temporary file and outputs
# the path to the file.  If the crontab does not exist, populates
# the output with some basic contents.
get_crontab() {
    local tempfile="$(mktemp "${TMPDIR:-/tmp}/pkg_comp.XXXXXX")"
    if ! crontab -u "${PKG_COMP_USER}" -l >>"${tempfile}"; then
        cat >>"${tempfile}" <<EOF
PATH=${PREFIX}/bin:${PREFIX}/sbin:/usr/bin:/usr/sbin:/bin:/sbin
SHELL=/bin/sh

# Cheatsheet: minute hour day-of-month month day-of-week(0,7=Sun)
EOF
    fi
    echo "${tempfile}"
}

# Adds an entry to for pkg_comp to the crontab if not yet present.
install_crontab() {
    local tempfile; tempfile="$(get_crontab)" || return
    if ! grep "${CRONTAB_RE}" "${tempfile}" >/dev/null; then
        echo "@@daily ${PREFIX}/sbin/pkg_comp4cron -l \"${BUILDBASE}/log\"" \
            "-- -c \"${BUILDBASE}/pkg_comp.conf\" auto" \
            >>"${tempfile}"
        crontab -u "${PKG_COMP_USER}" - <"${tempfile}"
        echo "pkg_comp daily entry added to ${PKG_COMP_USER}'s crontab"
    fi
    rm -f "${tempfile}"
}

# Removes the previously-configured crontab entry by this package.
uninstall_crontab() {
    local tempfile; tempfile="$(get_crontab)" || return
    if grep "${CRONTAB_RE}" "${tempfile}" >/dev/null; then
        local tempfile2="$(mktemp "${TMPDIR:-/tmp}/pkg_comp.XXXXXX")"
        grep -v "${CRONTAB_RE}" "${tempfile}" >>"${tempfile2}"
        if [ -s "${tempfile2}" ]; then
            crontab -u "${PKG_COMP_USER}" "${tempfile2}"
        else
            crontab -u "${PKG_COMP_USER}" -r
        fi
        echo "pkg_comp daily entry removed from ${PKG_COMP_USER}'s crontab"
        rm -f "${tempfile2}"
    fi
    rm -f "${tempfile}"
}

case "${STAGE}" in
    POST-INSTALL)
        if [ ! -e "${PKG_COMP_HOME}/sandbox.conf" ]; then
            echo "${PKGNAME}: Installing sample sandbox.conf file"
            ${MKDIR} -p "${PKG_COMP_HOME}"
            sed "s,^SANDBOX_ROOT=.*$,SANDBOX_ROOT=${PKG_COMP_HOME}/sandbox," \
                "${SANDBOXCTL_EGDIR}/default.conf" \
                >"${PKG_COMP_HOME}/sandbox.conf"
        fi

        if [ ! -e "${PKG_COMP_HOME}/extra.mk.conf" ]; then
            echo "${PKGNAME}: Installing sample extra.mk.conf file"
            ${MKDIR} -p "${PKG_COMP_HOME}"
            cp "${PKG_COMP_EGDIR}/extra.mk.conf" "${PKG_COMP_HOME}/"
        fi

        install_crontab
        ;;

    DEINSTALL)
        uninstall_crontab
        ;;
esac
@
