• waitmarks@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    can you give examples of some? Not trying to bd sarcastic, i do just want to see what alternatives are doing.

    • ZephrC@lemm.ee
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      Sure, that seems pretty reasonable. Here’s the init script for sddm:

      #!/usr/bin/openrc-run
      
      supervisor=supervise-daemon
      command="/usr/bin/sddm"
      
      depend() {
          need localmount
      
          after bootmisc consolefont modules netmount
          after ypbind autofs openvpn gpm lircmd
          after quota keymaps
          before alsasound
          want logind
          use xfs
      
          provide xdm display-manager
      }
      

      That’s it. That’s the whole thing.

      That’s a pretty simple one though, so here’s Alsa. It’s a more complex one:

      code
      #!/usr/bin/openrc-run
      # Copyright 1999-2019 Gentoo Authors
      # Distributed under the terms of the GNU General Public License v2
      
      alsastatedir=/var/lib/alsa
      alsascrdir=/etc/alsa.d
      alsahomedir=/run/alsasound
      
      extra_commands="save restore"
      
      depend() {
      	need localmount
      	after bootmisc modules isapnp coldplug hotplug
      }
      
      restore() {
      	ebegin "Restoring Mixer Levels"
      
      	checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
      
      	if [ ! -r "${alsastatedir}/asound.state" ] ; then
      		ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!"
      		eend 0
      		return 0
      	fi
      
      	local cards="$(sed -n -e 's/^ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)"
      	local CARDNUM
      	for cardnum in ${cards}; do
      		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
      		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
      		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
      		[ -e /dev/snd/controlC${cardnum} ] || sleep 2
      		alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \
      			|| ewarn "Errors while restoring defaults, ignoring"
      	done
      
      	for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do
      		[ -e "${ossfile}" ] || continue
      		# We use cat because I'm not sure if cp works properly on /proc
      		local procfile=${ossfile##${alsastatedir}/oss}
      		procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
      		if [ -e /proc/asound/"${procfile}"/oss ] ; then
      		    cat "${ossfile}" > /proc/asound/"${procfile}"/oss 
      		fi
      	done
      
      	eend 0
      }
      
      save() {
      	ebegin "Storing ALSA Mixer Levels"
      
      	checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
      
      	mkdir -p "${alsastatedir}"
      	if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then
      		eerror "Error saving levels."
      		eend 1
      		return 1
      	fi
      
      	for ossfile in /proc/asound/card*/pcm*/oss; do
      		[ -e "${ossfile}" ] || continue
      		local device=${ossfile##/proc/asound/} ; device=${device%%/oss}
      		device="$(echo "${device}" | sed -e 's,/,_,g')"
      		mkdir -p "${alsastatedir}/oss/"
      		cp "${ossfile}" "${alsastatedir}/oss/${device}"
      	done
      
      	eend 0
      }
      
      start() {
      	if [ "${RESTORE_ON_START}" = "yes" ]; then
      		restore
      	fi
      
      	return 0
      }
      
      stop() {
      	if [ "${SAVE_ON_STOP}" = "yes" ]; then
      		save
      	fi
      	return 0
      }
      

      That’s definitely longer than a systemd service, but you’d have to write an awful lot of them to be more code than all of systemd. Overall the entire /etc/init.d folder on my PC where all the init scripts even for the stuff I’m not using are stored is a grand total of 147.7 KiB. Not exactly an unmanageable amount of code, in my humble opinion.

      • waitmarks@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 months ago

        Its certainly easier to read than most old init scripts and I can see why some distros and openbsd would pick it over systemd for more control. I’m not likely to pick a distro that uses it anytime soon, but i can see why some do.