diff --git a/.gitignore b/.gitignore index c6dfe3b..9b21649 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -/beep-1.*/ -/beep-1.*.tar.gz +beep-1.2.2.tar.gz diff --git a/70-pcspkr-beep.rules b/70-pcspkr-beep.rules deleted file mode 100644 index ef31672..0000000 --- a/70-pcspkr-beep.rules +++ /dev/null @@ -1,2 +0,0 @@ -# Give write access to the PC speaker to the user logged in on the current virtual console -ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", TAG+="uaccess" diff --git a/90-pcspkr-beep.rules b/90-pcspkr-beep.rules deleted file mode 100644 index 7090857..0000000 --- a/90-pcspkr-beep.rules +++ /dev/null @@ -1,2 +0,0 @@ -# Give write access to the PC speaker to the "beep" group so group members can run "beep" -ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="PC Speaker", ENV{DEVNAME}!="", RUN+="/usr/bin/setfacl -m g:beep:w '$env{DEVNAME}'" diff --git a/README.fedora b/README.fedora deleted file mode 100644 index 276126a..0000000 --- a/README.fedora +++ /dev/null @@ -1,163 +0,0 @@ -Content -======= - - 1. Load the `pkspkr.ko` Kernel Driver Module (required) - 2. Permission setup for non-root users (for non-local logins) - 3. When and how to avoid using `beep` - 4. Example usage of `beep` - - -1. Load the `pkspkr.ko` Kernel Driver Module (required) -------------------------------------------------------- - -To have a working PC speaker beep, the kernel driver module -`pcspkr.ko` must be loaded. - -On Fedora >= 32, you need to install the `kernel-modules-extra` -package first which contains the `pcspkr.ko` kernel driver module. - -On Fedora >= 12, you need to explicitly make the kernel load the -driver module `pcspkr.ko`. You can do this manually as root as -follows: - - [root@host ~]# modprobe pcspkr - -If you want the system to automatically load the pcspkr driver the -next time it boots (very much recommended), uncomment the line - - alias platform:pcspkr pcspkr - -in the `/etc/modprobe.d/beep.conf` config file. - -You can check whether pcspkr.ko is loaded by running - - [user@host ~]$ lsmod | grep pcspkr - -When pcspkr is loaded, you can run - - [root@host ~]# beep - -as root and as a non-root user - - [user@host ~]$ beep - -and verify that you hear the beep coming from the PC speaker. - - -2. Permission setup for non-root users (for non-local logins) -------------------------------------------------------------- - -For more information on permission setup, please consult -/usr/share/doc/beep/PERMISSIONS.md file. - -On Fedora, if a user is currently logged in locally via either a -graphical session or a getty@ttyN.service text session on the virtual -console, that user will automatically be able to access the device -special file `/dev/input/by-path/platform-pcspkr-event-spkr` which -`beep` uses to access the PC speaker. - -This means that for many cases, no special permission setup is -required for a user to run beep. - -For other cases (such as e.g. users only logged in via ssh sessions), -you can add the respective user to the `beep` group. - -To add user `jane` to the `beep` group, have root run - - [root@host ~]# usermod jane -a -G beep - -You can check which users are members of the `beep` group by running - - [user@host ~]$ getent group beep - beep:x:951:jane,bill - [user@host ~]$ _ - -However, any user newly added to the `beep` group must re-login so -their processes can pick up the group membership. A user can check -their group membership as follows: - - [jane@host ~]$ id - uid=1000(jane) gid=1000(jane) groups=1000(jane),10(wheel),951(beep) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 - [jane@host ~]$ _ - -To check the permission of the PC speaker device file, run - - [user@host ~]$ ls -lH /dev/input/by-path/platform-pcspkr-event-spkr - crw-rw----+ 1 root input 13, 85 Dec 29 13:52 /dev/input/by-path/platform-pcspkr-event-spkr - [user@host ~]$ getfacl /dev/input/by-path/platform-pcspkr-event-spkr - getfacl: Removing leading '/' from absolute path names - # file: dev/input/by-path/platform-pcspkr-event-spkr - # owner: root - # group: input - user::rw- - user:user:rw- - group::rw- - group:beep:-w- - mask::rw- - other::--- - - [user@host ~]$ _ - - -3. Set up the audio mixer (required on some hardware) ------------------------------------------------------ - -On some systems with integrated speakers like e.g. laptops from the -IBM/Lenovo Thinkpad series, there is no separate physical speaker for -the PC speaker. - -Instead, the square wave sound generated by the PC speaker goes to the -integrated speakers through a mixer chip, where it is mixed with PCM -sound, CD drive audio, line in, microphone in, and other sources. - -On these systems, you might need to configure the mixer to make the PC -speaker audible through the laptop speakers, e.g. - - * Start alsamixer. - * Find the correct card (switch with the `F6` key). - * Maybe enable loopback. - * Unmute the appropriate PC speaker source (`m` key) and turn up - its volume. - * Weirdly, a microphone volume below 0% apparently can also - silence the PC speaker beeps. - -Some experimentation might be required. - -Of course, these mixer settings must be saved before the next system -reboot so that the reboot can restore the mixer settings. Some systems -save the mixer settings as part of their shutdown procedure, others -may need you to save them explicitly. - -TBD: How does Fedora handle saving alsamixer state across reboots? - - -4. When and how to avoid using `beep` -------------------------------------- - -An alternative way to get sound output for non-root users works if the -system has a sound card set up with a speaker connected to it. - -E.g. the standard 440Hz square wave which `beep` emits can be played -through the standard sound infrastructure with the command `play` from -the `sox` package (more pleasant examples are shown in the `sox(1)` -man page): - - [jane@host ~]$ play -q -n synth 0.3 square 440 - -However, modern desktop systems with the freedesktop.org suite of -middleware (systemd user sessions, pulseaudio audio routing, etc.) -may not be set up to allow use of the sound infrastructure for users -other than the user currently logged into the current virtual console. - - -5. Example Usage of `beep` --------------------------- - -An acoustic notification when a long running compile job finishes -(whether the build was successful or not) could be done with - - [jane@host ~/src/foobar]$ ./configure --prefix=$HOME/.local && make && make check && make install; beep - -or - - [bill@host ~/rpms/foobar]$ if fedpkg mockbuild; then /usr/share/doc/beep/contrib/success-beeps; else /usr/share/doc/beep/contrib/failure-beeps; fi diff --git a/beep-1.2.2-install-fixes.patch b/beep-1.2.2-install-fixes.patch new file mode 100644 index 0000000..305c812 --- /dev/null +++ b/beep-1.2.2-install-fixes.patch @@ -0,0 +1,41 @@ +diff --git a/Makefile b/Makefile +index 5856f9f..32bfb6b 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,19 +1,26 @@ + CC=gcc + FLAGS=-Wall + EXEC_NAME=beep +-INSTALL_DIR=/usr/bin ++BIN_DIR=/usr/bin + MAN_FILE=beep.1.gz +-MAN_DIR=/usr/man/man1 ++MAN_DIR=/usr/share/man/man1 + +-default : beep ++.PHONY: all ++all: $(EXEC_NAME) + +-clean : ++.PHONY: clean ++clean: + rm ${EXEC_NAME} + +-beep : beep.c +- ${CC} ${FLAGS} -o ${EXEC_NAME} beep.c ++$(EXEC_NAME): beep.c ++ $(CC) $(FLAGS) $(CFLAGS) -o $(EXEC_NAME) $< + +-install : +- cp ${EXEC_NAME} ${INSTALL_DIR} +- rm -f /usr/man/man1/beep.1.bz2 +- cp ${MAN_FILE} ${MAN_DIR} ++install: ++ install -m 0755 -d $(DESTDIR)$(BIN_DIR) ++ install -m 0755 -d $(DESTDIR)$(MAN_DIR) ++ install -m 0755 -p $(EXEC_NAME) $(DESTDIR)$(BIN_DIR)/ ++ install -m 0644 -p $(MAN_FILE) $(DESTDIR)$(MAN_DIR)/ ++ ++uninstall: ++ rm -f $(DESTDIR)$(BIN_DIR)/$(EXEC_NAME) ++ rm -f $(DESTDIR)$(MAN_DIR)/$(MAN_FILE) diff --git a/beep.rpmlintrc b/beep.rpmlintrc deleted file mode 100644 index 7985f91..0000000 --- a/beep.rpmlintrc +++ /dev/null @@ -1,3 +0,0 @@ -# -*- python -*- - -addFilter(r'name-repeated-in-summary C Beep') diff --git a/beep.spec b/beep.spec index 84ce491..264715d 100644 --- a/beep.spec +++ b/beep.spec @@ -1,156 +1,52 @@ Summary: Beep the PC speaker any number of ways Name: beep -Version: 1.4.12 -Release: %autorelease +Version: 1.2.2 +Release: 3%{?dist} -# Automatically converted from old format: GPLv2+ - review is highly recommended. -License: GPL-2.0-or-later -URL: https://github.com/spkr-beep/beep/ +Group: Applications/System +License: GPLv2+ +URL: http://www.johnath.com/beep/ +Source0: http://www.johnath.com/beep/%{name}-%{version}.tar.gz +Patch0: beep-1.2.2-install-fixes.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -# Upstream github repo: https://github.com/spkr-beep/beep -# hun github repo: https://github.com/ndim/beep - -# Alternative source URL to download: -# curl -L -o spkr-beep-beep-1.4.0-db395a5.tar.gz https://api.github.com/repos/spkr-beep/beep/tarball/db395a53dc862eda80b3c1abf0d9136be97ad15a -# curl -L -o spkr-beep-beep-1.4.1-9ffa7a1.tar.gz https://api.github.com/repos/spkr-beep/beep/tarball/9ffa7a1feb195a60db20792890225b69720984d3 -Source0: https://github.com/spkr-beep/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz - - -# Fedora specific files -Source1: README.fedora -Source2: 70-pcspkr-beep.rules -Source3: 90-pcspkr-beep.rules -Source4: pcspkr-beep.conf - - -BuildRequires: gcc BuildRequires: glibc-kernheaders -%{!?el7:BuildRequires: libubsan} - -# for the udev macros -BuildRequires: systemd -BuildRequires: make - -# Until https://bugzilla.redhat.com/show_bug.cgi?id=1652823 has been -# fixed (which makes dnf pull in a completely new debug kernel, while -# absolutely not installing the kernel module for the non-debug kernel -# actually in use), we cannot use the kmod(pcspkr.ko) recommends -# below. The boolean recommends also do not work (they do not pull in -# any package on "dnf install"), so we can only keep those here to -# document that they do not work. -# -# So people need to install the required package by hand. -# -# We would "recommend" the kernel driver and not "require" it in -# order to not break cases where beep is installed on systems other -# than bare-metal PC hardware such as containers. -# -# This assumes the people using the "beep" package can deal with a -# "beep" invocation not producing a beep on those other systems. -# -# The alternative would be to "require" the kernel driver which would -# mean that you could not install beep inside a container, even if -# that container is run in a priviledged way with access to the host's -# pcspkr.ko. -# -# While the kernel supports more speaker drivers, the only hardware -# platforms with a speaker driver supported by Fedora use pcspkr.ko -# (PCSPKR_PLATFORM in the kernel config). -# -# Recommends: kmod(pcspkr.ko) -# Recommends: (kernel-modules-extras if kernel-modules) -# Recommends: (kernel-debug-modules-extras if kernel-debug-modules) - - -# /etc/modprobe.d/ -Requires: kmod - -# /etc/udev/rules.d/ and /usr/lib/udev/rules.d/ -%{?el7:Requires: systemd} -%{!?el7:Requires: systemd-udev} %description Beep allows the user to control the PC speaker with precision, allowing different sounds to indicate different events. While it -can be run quite happily from the command line, its intended place -of use is within scripts, notifying the user when something -interesting occurs. Of course, it has no notion of what is -interesting, but it is really good at the notifying part. +can be run quite happily on the commandline, it's intended place +of residence is within shell/perl scripts, notifying the user when +something interesting occurs. Of course, it has no notion of +what's interesting, but it's real good at that notifying part. %prep %setup -q -sed -i 's|^\.\\" \(\.BR .*\)README.Distro\(.*\)|\1README.fedora\2|' beep.1.in && : #" - -# Create a sysusers.d config file -cat >beep.sysusers.conf <local.mk< - 1.2.2-3 +- Initial package for submission to Fedora diff --git a/changelog b/changelog deleted file mode 100644 index e448e07..0000000 --- a/changelog +++ /dev/null @@ -1,176 +0,0 @@ -* Wed Jul 20 2022 Fedora Release Engineering - 1.4.12-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Fri Jan 28 2022 Hans Ulrich Niedermann - 1.4.12-1 -- Update to beep-1.4.12 with simplified makefile - -* Thu Jan 27 2022 Hans Ulrich Niedermann - 1.4.11-4 -- fix broken rpm build from 1.4.11-3 (missing COMPILERS= in %%install) - -* Thu Jan 27 2022 Hans Ulrich Niedermann - 1.4.11-3 -- only use %%doc with absolute paths (removes duplicate listings) -- stop using env vars in favour of rpm macros -- remove non-functional explicit %%attr - -* Wed Jan 19 2022 Hans Ulrich Niedermann - 1.4.11-2 -- rebuild to have common sources for all branches - -* Sat Jan 15 2022 Hans Ulrich Niedermann - 1.4.11-1 -- Update to beep-1.4.11 - -* Sat Jan 15 2022 Hans Ulrich Niedermann - 1.4.10-1 -- Update to beep-1.4.10 - -* Wed Jul 21 2021 Fedora Release Engineering - 1.4.7-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Thu Mar 25 2021 Hans Ulrich Niedermann - 1.4.7-6 -- Remove any kmod(pcspkr.ko) dependencies as they install the wrong package - -* Wed Mar 24 2021 Hans Ulrich Niedermann - 1.4.7-5 -- Add "Recommends: kmod(pcspkr.ko)" to install the driver if available (#1942670) - -* Tue Jan 26 2021 Fedora Release Engineering - 1.4.7-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Jul 27 2020 Fedora Release Engineering - 1.4.7-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Tue Jan 28 2020 Fedora Release Engineering - 1.4.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Wed Jan 1 2020 Hans Ulrich Niedermann - 1.4.7-1 -- Update to beep-1.4.7 -- Install contrib scripts for both successfully and failing sounding beeps. - -* Fri Dec 20 2019 Hans Ulrich Niedermann - 1.4.6-1 -- Update to beep-1.4.6 -- Use BEEP_LOG_LEVEL environment variable for default log level -- Avoid possible bug related to not using va_copy() with a va_list parameter - -* Wed Jul 24 2019 Fedora Release Engineering - 1.4.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Tue Apr 2 2019 Hans Ulrich Niedermann - 1.4.4-1 -- Update to beep-1.4.4 -- Install default udev rules to /usr/lib/udev/rules.d/ (not /etc/udev/) -- Give the currently locally logged in user PC speaker access out of the box -- Have beep(1) man page mention README.fedora - -* Thu Jan 31 2019 Fedora Release Engineering - 1.4.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Fri Jan 18 2019 Hans Ulrich Niedermann - 1.4.3-1 -- Update to beep-1.4.3 - -* Tue Jan 8 2019 Hans Ulrich Niedermann - 1.4.1-1 -- Update to beep-1.4.1 - -* Fri Jan 4 2019 Hans Ulrich Niedermann - 1.4.0-1 -- Update to beep-1.4.0 - -* Sat Dec 29 2018 Hans Ulrich Niedermann - 1.3-26 -- Stop shipping old sudo related config files -- Refuse to run when run via sudo -- Set up group 'beep' for write access to evdev device with new udev rule -- Update README.fedora to reflect new group permission setup on evdev device - -* Fri Dec 28 2018 Hans Ulrich Niedermann - 1.3-25 -- guard against directory traversal in /dev/input/ check -- refuse to run if setuid or setgid root -- make the evdev device the first device to look for (does not require root) - -* Fri Dec 28 2018 Hans Ulrich Niedermann - 1.3-24 -- Actually apply the patches -- Update COPYING with new FSF address -- Fix Patch9 to work as non-git patch (do the rest with shell) -- Proper naming of Patch14 -- Exit beep when error accessing API - -* Fri Dec 28 2018 Hans Ulrich Niedermann - 1.3-23 -- Fix CVE-2018-1000532 and mitigate against related issues (#1595592) -- Fix a number of potential integer overflows - -* Thu Jul 12 2018 Fedora Release Engineering - 1.3-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Tue Apr 3 2018 Hans Ulrich Niedermann - 1.3-21 -- Add CVE-2018-0492 fix. -- Behaviour of multiple -f parameters matches documentation now. - -* Wed Feb 07 2018 Fedora Release Engineering - 1.3-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Aug 02 2017 Fedora Release Engineering - 1.3-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 1.3-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Fri Feb 10 2017 Fedora Release Engineering - 1.3-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue May 31 2016 Hans Ulrich Niedermann - 1.3-16 -- Use more appropriate sox play example in README.fedora -- Make command line examples more readable in README.fedora - -* Tue May 31 2016 Hans Ulrich Niedermann - 1.3-15 -- Add shell aliases to allow non-root users to run beep from the shell -- Fix mail address in %%changelog - -* Tue May 31 2016 Hans Ulrich Niedermann - 1.3-14 -- Document how non-root users can run beep via sudo (#1133231) -- Remove spec file conditional required in Fedora 12 times - -* Mon May 16 2016 Hans Ulrich Niedermann - 1.3-13 -- Remove useless %%defattr for clarity - -* Wed Feb 03 2016 Fedora Release Engineering - 1.3-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Sun Jan 17 2016 Hans Ulrich Niedermann - 1.3-11 -- Do not replace config file modprobe.d/beep.conf (#1087616) - -* Wed Jun 17 2015 Fedora Release Engineering - 1.3-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Fri Aug 15 2014 Fedora Release Engineering - 1.3-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sat Jun 07 2014 Fedora Release Engineering - 1.3-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Tue Nov 19 2013 Hans Ulrich Niedermann - 1.3-7 -- Use new upstream tarball beep-1.3.tar.gz (yes, it has changed!) -- Add a few fixes from upstream git repo -- Move our Makefile cleanup to upstream pull request - -* Sat Aug 03 2013 Fedora Release Engineering - 1.3-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Wed Feb 13 2013 Fedora Release Engineering - 1.3-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Wed Jul 18 2012 Fedora Release Engineering - 1.3-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Thu Jan 12 2012 Fedora Release Engineering - 1.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Mon Feb 07 2011 Fedora Release Engineering - 1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri Jul 16 2010 Hans Ulrich Niedermann - 1.3-1 -- Update to upstream release beep-1.3 - -* Fri Jan 22 2010 Hans Ulrich Niedermann - 1.2.2-6 -- Ship modprobe config file with alias for pcspkr on F12 and later - -* Fri Jul 24 2009 Fedora Release Engineering - 1.2.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Mon Feb 23 2009 Fedora Release Engineering - 1.2.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Sun Sep 7 2008 Hans Ulrich Niedermann - 1.2.2-3 -- Initial package for submission to Fedora diff --git a/pcspkr-beep.conf b/pcspkr-beep.conf deleted file mode 100644 index cfe1e8f..0000000 --- a/pcspkr-beep.conf +++ /dev/null @@ -1,21 +0,0 @@ -# Uncomment the alias line to have the pcspkr.ko driver load -# automatically on boot. -# -# The pcspkr.ko driver module is shipped in the kernel-modules-extra -# which you need to install manually at this time. -# -# An automatic installation via "requires" or "recommends" is not -# possible due to "dnf install 'kmod(pcspkr.ko)'" likely installing an -# unrelated (-debug) kernel (see -# https://bugzilla.redhat.com/show_bug.cgi?id=1652823). -# -# Note that the kernel-modules-extra package and the pcspkr.ko module -# might also not be available inside a container, while the hosts's -# actual pcspkr.ko API might or might not be available inside the -# container depending on how the container is launched. -# -# So inside a container, the "beep" command might or might not produce -# sound depending on things entirely outside of the control of "beep" -# or even the container. -# -# alias platform:pcspkr pcspkr diff --git a/sources b/sources index 7052993..773deda 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (beep-1.4.12.tar.gz) = 18fed77bc4820ecc84ac12e903d516d5228fa2038df1788cc68db76e40b3c47a271911cc45bc48ce94e3f215803c5c05cb6c08ebb47ae6d7fcf1e0bc1ac169cd +d541419fd7e5642952d7b48cbb40c712 beep-1.2.2.tar.gz