diff --git a/.gitignore b/.gitignore index c6dfe3b..5fd812a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -/beep-1.*/ -/beep-1.*.tar.gz +beep-1.3.tar.gz diff --git a/0001-Fixed-Makefile.patch b/0001-Fixed-Makefile.patch new file mode 100644 index 0000000..0a8d7c3 --- /dev/null +++ b/0001-Fixed-Makefile.patch @@ -0,0 +1,45 @@ +From 8b32b8b088be1f29e8bfea57a97b9bfaa76ec8ee Mon Sep 17 00:00:00 2001 +From: Chris Wong +Date: Wed, 23 Nov 2011 10:39:53 +1300 +Subject: [PATCH 1/6] Fixed Makefile + +* Use /usr/share/man (see http://www.pathname.com/fhs/2.2/fhs-4.11.html#4.11.5) + +* Removed trailing spaces + +* Added optimization flag (must beep FAST!!!) +--- + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index cc359c4..0f4f810 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,19 +1,19 @@ + CC=gcc +-FLAGS=-Wall ++FLAGS=-Wall -O2 + EXEC_NAME=beep + INSTALL_DIR=/usr/bin + MAN_FILE=beep.1.gz +-MAN_DIR=/usr/man/man1 ++MAN_DIR=/usr/share/man/man1 + + default : beep + +-clean : ++clean : + rm ${EXEC_NAME} + + beep : beep.c + ${CC} ${FLAGS} -o ${EXEC_NAME} beep.c + +-install : ++install : + cp ${EXEC_NAME} ${INSTALL_DIR} + # rm -f /usr/man/man1/beep.1.bz2 + cp ${MAN_FILE} ${MAN_DIR} +-- +1.8.4.2 + diff --git a/0002-Add-more-error-detection.patch b/0002-Add-more-error-detection.patch new file mode 100644 index 0000000..a4f0ca3 --- /dev/null +++ b/0002-Add-more-error-detection.patch @@ -0,0 +1,45 @@ +From d3aee6c489852108c91dc22abcacff364e9429f2 Mon Sep 17 00:00:00 2001 +From: Chris Wong +Date: Wed, 23 Nov 2011 11:34:55 +1300 +Subject: [PATCH 2/6] Add more error detection + +--- + beep.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/beep.c b/beep.c +index 452fc08..14fac3e 100644 +--- a/beep.c ++++ b/beep.c +@@ -98,11 +98,11 @@ char *console_device = NULL; + + + void do_beep(int freq) { +- if (console_type == BEEP_TYPE_CONSOLE) { +- if(ioctl(console_fd, KIOCSOUND, freq != 0 +- ? (int)(CLOCK_TICK_RATE/freq) +- : freq) < 0) { +- printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */ ++ int period = (freq != 0 ? (int)(CLOCK_TICK_RATE/freq) : freq); ++ ++ if(console_type == BEEP_TYPE_CONSOLE) { ++ if(ioctl(console_fd, KIOCSOUND, period) < 0) { ++ putchar('\a'); /* Output the only beep we can, in an effort to fall back on usefulness */ + perror("ioctl"); + } + } else { +@@ -113,7 +113,10 @@ void do_beep(int freq) { + e.code = SND_TONE; + e.value = freq; + +- write(console_fd, &e, sizeof(struct input_event)); ++ if(write(console_fd, &e, sizeof(struct input_event)) < 0) { ++ putchar('\a'); /* See above */ ++ perror("write"); ++ } + } + } + +-- +1.8.4.2 + diff --git a/0004-also-catch-SIGTERM-for-stopping-the-beep.patch b/0004-also-catch-SIGTERM-for-stopping-the-beep.patch new file mode 100644 index 0000000..89187b9 --- /dev/null +++ b/0004-also-catch-SIGTERM-for-stopping-the-beep.patch @@ -0,0 +1,33 @@ +From e1320c1da52ca92aa68b4224f9532982184fbe00 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=A9r=C3=B4me?= +Date: Thu, 7 Feb 2013 12:54:53 +0100 +Subject: [PATCH 4/6] also catch SIGTERM for stopping the beep + +Signed-off-by: Gerfried Fuchs +--- + beep.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/beep.c b/beep.c +index 452fc08..9cb63bf 100644 +--- a/beep.c ++++ b/beep.c +@@ -127,6 +127,7 @@ void handle_signal(int signum) { + + switch(signum) { + case SIGINT: ++ case SIGTERM: + if(console_fd >= 0) { + /* Kill the sound, quit gracefully */ + do_beep(0); +@@ -321,6 +322,7 @@ int main(int argc, char **argv) { + parms->next = NULL; + + signal(SIGINT, handle_signal); ++ signal(SIGTERM, handle_signal); + parse_command_line(argc, argv, parms); + + /* this outermost while loop handles the possibility that -n/--new has been +-- +1.8.4.2 + diff --git a/0005-Make-build-install-more-user-and-packaging-friendly.patch b/0005-Make-build-install-more-user-and-packaging-friendly.patch new file mode 100644 index 0000000..b6a84e4 --- /dev/null +++ b/0005-Make-build-install-more-user-and-packaging-friendly.patch @@ -0,0 +1,85 @@ +From 947a7e332908dcba1c7e523fbdc927d39ee6adb1 Mon Sep 17 00:00:00 2001 +From: Hans Ulrich Niedermann +Date: Tue, 19 Nov 2013 23:40:50 +0100 +Subject: [PATCH 5/6] Make build/install more user and packaging friendly + +Make the build and install more user and packaging friendly +by introducing the following features in the Makefile: + + * Honor the $(CFLAGS) set when calling make. + + * Prefix all install locations with $(DESTDIR) for + easy package building. + + * Use GNU Makefile conventions for defining installation + directories. This means $(bindir) and $(man1dir) + instead of the former $(INSTALL_DIR) and $(MAN_DIR). + + * Use install(1) for installing files and directories + so that permissions can be set properly. + + * Stop "make clean" failing when it has nothing to do. + + * Add 'uninstall' make target. + + * Make 'install' target build executable if necessary. +--- + Makefile | 40 +++++++++++++++++++++++++++++----------- + 1 file changed, 29 insertions(+), 11 deletions(-) + +diff --git a/Makefile b/Makefile +index 0f4f810..942a7a5 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,19 +1,37 @@ + CC=gcc + FLAGS=-Wall -O2 ++ ++INSTALL=install ++ + EXEC_NAME=beep +-INSTALL_DIR=/usr/bin + MAN_FILE=beep.1.gz +-MAN_DIR=/usr/share/man/man1 + +-default : beep ++# Use GNU makefile conventions for directory names with one notable ++# exception: prefix is not /usr/local in order to keep the default ++# installation location for beep. ++prefix=/usr ++exec_prefix=$(prefix) ++bindir=$(exec_prefix)/bin ++datarootdir=$(prefix)/share ++mandir=$(datarootdir)/man ++man1dir=$(mandir)/man1 ++ ++.PHONY: all ++all: $(EXEC_NAME) ++ ++.PHONY: clean ++clean: ++ rm -f $(EXEC_NAME) + +-clean : +- rm ${EXEC_NAME} ++$(EXEC_NAME): beep.c ++ $(CC) $(FLAGS) $(CFLAGS) -o $(EXEC_NAME) beep.c + +-beep : beep.c +- ${CC} ${FLAGS} -o ${EXEC_NAME} beep.c ++install: all ++ $(INSTALL) -m 0755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -m 0755 $(EXEC_NAME) $(DESTDIR)$(bindir)/ ++ $(INSTALL) -m 0755 -d $(DESTDIR)$(man1dir) ++ $(INSTALL) -m 0644 $(MAN_FILE) $(DESTDIR)$(man1dir)/ + +-install : +- cp ${EXEC_NAME} ${INSTALL_DIR} +- # rm -f /usr/man/man1/beep.1.bz2 +- cp ${MAN_FILE} ${MAN_DIR} ++uninstall: ++ rm -f $(DESTDIR)$(bindir)/$(EXEC_NAME) ++ rm -f $(DESTDIR)$(man1dir)/$(MAN_FILE) +-- +1.8.4.2 + diff --git a/0006-Preserve-file-modification-time-on-install.patch b/0006-Preserve-file-modification-time-on-install.patch new file mode 100644 index 0000000..4db0272 --- /dev/null +++ b/0006-Preserve-file-modification-time-on-install.patch @@ -0,0 +1,33 @@ +From 4622dd15dc12dab47a0381a8a7188f0f0421e01d Mon Sep 17 00:00:00 2001 +From: Hans Ulrich Niedermann +Date: Wed, 20 Nov 2013 00:00:54 +0100 +Subject: [PATCH 6/6] Preserve file modification time on install + +Add -p option to install(1) invocation in order to preserve +the timestamps of the files being installed. +--- + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 942a7a5..290b8a4 100644 +--- a/Makefile ++++ b/Makefile +@@ -27,10 +27,10 @@ $(EXEC_NAME): beep.c + $(CC) $(FLAGS) $(CFLAGS) -o $(EXEC_NAME) beep.c + + install: all +- $(INSTALL) -m 0755 -d $(DESTDIR)$(bindir) +- $(INSTALL) -m 0755 $(EXEC_NAME) $(DESTDIR)$(bindir)/ +- $(INSTALL) -m 0755 -d $(DESTDIR)$(man1dir) +- $(INSTALL) -m 0644 $(MAN_FILE) $(DESTDIR)$(man1dir)/ ++ $(INSTALL) -m 0755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -m 0755 -p $(EXEC_NAME) $(DESTDIR)$(bindir)/ ++ $(INSTALL) -m 0755 -d $(DESTDIR)$(man1dir) ++ $(INSTALL) -m 0644 -p $(MAN_FILE) $(DESTDIR)$(man1dir)/ + + uninstall: + rm -f $(DESTDIR)$(bindir)/$(EXEC_NAME) +-- +1.8.4.2 + 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-README.fedora b/beep-README.fedora new file mode 100644 index 0000000..5c6099f --- /dev/null +++ b/beep-README.fedora @@ -0,0 +1,133 @@ +Content +======= + + 1. Load the pkspkr.ko Kernel Driver Module (required) + 2. Set Up `beep` For Use As non-root Users Via `sudo` (optional) + 3. Example Usage + + +1. Load the pkspkr.ko Kernel Driver Module (required) +----------------------------------------------------- + +To have a working PC speaker beep on Fedora >= 12, you must load the +kernel driver module `pcspkr.ko` first. + +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, uncomment the + + alias platform:pcspkr pcspkr + +line in the `/etc/modprobe.d/beep.conf` config file. + +You can check whether pcspkr.ko is loaded by running + + [root@host ~]# lsmod | grep pcspkr + +as root. + +When pcspkr is loaded, you can run + + [root@host ~]# beep + +as root and verify that you hear the beep coming from the PC speaker. + +CAUTION: There (used to?) appear to be some issues with access to the +`/dev/console` device which beep uses, possibly related to +`ConsoleKit`. This means that sometimes, just having `pcspkr.ko` +loaded is not enough for beep to actually beep. This issue is being +investigated. + + +2. Set Up `beep` For Use As non-root Users Via `sudo` (optional) +---------------------------------------------------------------- + +If you want non-root users can run the `beep` command, you can set up +`sudo` such that non-root users can run beep. This might have security +implications if the `beep` executable and/or the `pcspkr.ko` kernel +driver contain exploitable flaws. + +An alternative way to get sound output for non-root users without +becoming root works if the system has a sound card set up with a +speaker connected to it. 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 in +the `sox(1)` man page): + + [jane@host ~]$ play -q -n synth 0.3 square 440 + +So, if you still insist on making non-root users run `beep` as root, +do read on. + +First, make sure the `sudo` package is installed. + +As root, edit the `/etc/sudoers.d/beep` file to allow certain users or +groups to run beep. The example file shipped by the beep package +contains those two simple examples which you can uncomment and adapt: + + # Allow user 'jane' to run beep as root (if uncommented) + # jane NOPASSWD: /usr/bin/beep + + # Allow all members of the group 'mock' to run beep as root (if uncommented) + # %mock NOPASSWD: /usr/bin/beep + +For more information on setting up sudo, read the `sudoers(5)` man page. + +When you have finished setting up the `sudoers` file, you can check +whether `sudo beep` works with commands run as non-root users like + + [jane@host ~]$ id + uid=1000(jane) gid=1000(jane) groups=1000(jane) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 + [jane@host ~]$ sudo -n beep + [jane@host ~]$ + + [bill@host ~]$ id + uid=1066(bill) gid=1066(bill) groups=1066(bill),135(mock) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 + [bill@host ~]$ sudo -n beep + [bill@host ~]$ + +Now you can source the alias definitions for `beep` in your shell (if +you are running a `csh` variant, replace `.sh` with `.csh`): + + [jane@host ~]$ source /etc/profile.d/beep.sh + [jane@host ~]$ beep + [jane@host ~]$ + +The sourcing of the `/etc/profile.d/beep.(csh|sh)` file will be done +automatically when you start a new (login?) shell. + +In case you have *not* configured `sudo` for a non-password execution +of `beep`, `beep` will still work normally for the `root` user, and all +other users see a `sudo` error message + + [jane@host ~]$ alias beep + alias beep='sudo -n /usr/bin/beep' + [jane@host ~]$ beep + sudo: a password is required + [jane@host ~]$ + +instead of the `beep` error message they see without the sudo based +alias for `beep`: + + [jane@host ~]$ alias beep + -bash: alias: beep: not found + [jane@host ~]$ beep + Could not open /dev/tty0 or /dev/vc/0 for writing + open: No such file or directory + [jane@host ~]$ + + +3. Example Usage +---------------- + +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]$ fedpkg mockbuild; beep diff --git a/beep-modprobe.conf b/beep-modprobe.conf new file mode 100644 index 0000000..c1ddb22 --- /dev/null +++ b/beep-modprobe.conf @@ -0,0 +1,3 @@ +# Uncomment the following line to have the pcspkr driver loaded +# automatically on boot +# alias platform:pcspkr pcspkr diff --git a/beep.csh b/beep.csh new file mode 100644 index 0000000..31ded7b --- /dev/null +++ b/beep.csh @@ -0,0 +1,6 @@ +# Allow non-root users to call beep as root via sudo +# when configured without password in `/etc/sudoers.d/beep`. + +if (($euid != 0) && (-x /usr/bin/beep) && (-x /usr/bin/sudo)) then + alias beep 'sudo -n /usr/bin/beep' +endif 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.sh b/beep.sh new file mode 100644 index 0000000..978d024 --- /dev/null +++ b/beep.sh @@ -0,0 +1,6 @@ +# Allow non-root users to call beep as root via sudo +# when configured without password in `/etc/sudoers.d/beep`. + +if [ "${EUID:-}" != 0 ] && [ -x /usr/bin/beep ] && [ -x /usr/bin/sudo ]; then + alias beep='sudo -n /usr/bin/beep' +fi diff --git a/beep.spec b/beep.spec index 84ce491..cb52ac7 100644 --- a/beep.spec +++ b/beep.spec @@ -1,156 +1,176 @@ Summary: Beep the PC speaker any number of ways Name: beep -Version: 1.4.12 -Release: %autorelease +Version: 1.3 +Release: 19%{?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/ -# Upstream github repo: https://github.com/spkr-beep/beep +# Upstream github repo: https://github.com/johnath/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 +# Alternative source URLs to download: +# curl -L -o beep-github.tar.gz https://api.github.com/repos/johnath/beep/tarball +# curl -L -o beep-g0d790fa.tar.gz https://api.github.com/repos/johnath/beep/tarball/0d790fa +# curl -L -o beep-1.3-gdb6f31a.tar.gz https://api.github.com/repos/johnath/beep/tarball/db6f31a60303e41def1a1d0705164cd5b6d75492 +Source0: http://www.johnath.com/beep/%{name}-%{version}.tar.gz # Fedora specific files -Source1: README.fedora -Source2: 70-pcspkr-beep.rules -Source3: 90-pcspkr-beep.rules -Source4: pcspkr-beep.conf +Source1: %{name}-README.fedora +Source2: %{name}-modprobe.conf +Source3: %{name}.sudoers +Source4: %{name}.csh +Source5: %{name}.sh -BuildRequires: gcc +# Fix from upstream github repo +Patch1: 0001-Fixed-Makefile.patch + +# Fix from upstream github repo +Patch2: 0002-Add-more-error-detection.patch + +# No sense to add stuff to .gitignore in our source dir +# Patch3: 0003-Gitignorance.patch + +# Fix from upstream github repo +Patch4: 0004-also-catch-SIGTERM-for-stopping-the-beep.patch + +# Make build/install more user and packaging friendly +# https://github.com/johnath/beep/pull/6 +Patch5: 0005-Make-build-install-more-user-and-packaging-friendly.patch + +# Preserve file modification time on install +# https://github.com/johnath/beep/pull/6 +Patch6: 0006-Preserve-file-modification-time-on-install.patch + 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, its 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.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/beep.sudoers b/beep.sudoers new file mode 100644 index 0000000..130144d --- /dev/null +++ b/beep.sudoers @@ -0,0 +1,5 @@ +# Allow user 'jane' to run beep as root (if uncommented) +# jane ALL=NOPASSWD: /usr/bin/beep + +# Allow all members of the group 'mock' to run beep as root (if uncommented) +# %mock ALL=NOPASSWD: /usr/bin/beep 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..0ac109c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (beep-1.4.12.tar.gz) = 18fed77bc4820ecc84ac12e903d516d5228fa2038df1788cc68db76e40b3c47a271911cc45bc48ce94e3f215803c5c05cb6c08ebb47ae6d7fcf1e0bc1ac169cd +49c340ceb95dbda3f97b2daafac7892a beep-1.3.tar.gz