[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#987874: [pre-approval] unblock: osspd/1.3.2-12



Control: tags -1 moreinfo

On 2021-05-01 11:03:07 +0300, Sergei Golovan wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@packages.debian.org
> Usertags: unblock
> 
> Hi release team!
> 
> I'm writing on behalf of the maintainer of the osspd package (I intend
> to sponsor the potential upload).
> 
> We'd like to upload the osspd package to fix #986662 (see [1] for
> details). The bug is serious as the currently osspd doesn't work at all.
> 
> The diff is attached. It includes two other fixes, which are much less
> serious, so if you decide that changes are too big for the freeze
> time then we'll drop them.
> 
> [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=986662
> 
> unblock osspd/1.3.2-12
> 
> -- System Information:
> Debian Release: 10.9
>   APT prefers stable-debug
>   APT policy: (500, 'stable-debug'), (500, 'proposed-updates'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental'), (1, 'unstable')
> Architecture: amd64 (x86_64)
> Foreign Architectures: i386
> 
> Kernel: Linux 4.19.0-16-amd64 (SMP w/12 CPU cores)
> Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
> Init: systemd (via /run/systemd/system)

> diff --git a/debian/changelog b/debian/changelog
> index c412732..9481d07 100644
> --- a/debian/changelog
> +++ b/debian/changelog
> @@ -1,3 +1,17 @@
> +osspd (1.3.2-12) unstable; urgency=low
> +
> +  [ Sébastien Noel ]
> +  * cherrypick 2 commits from upstream GIT:
> +    + d/p/GIT-fix-adsp_se.patch
> +    + d/p/GIT-fix-compiler-warnings.patch
> +  * Add workaround for pulseaudio >= 13
> +    d/p/Hack-to-work-with-modern-PulseAudio.patch  (Closes: #986662)
> +
> +  [ Ralf Jung ]
> +  * Switch to debhelper compat level 13.

Changing compat levels is no longer acceptable for bullseye. Please
revert.

> +
> + -- Ralf Jung <post@ralfj.de>  Sat, 17 Apr 2021 14:28:09 +0200
> +
>  osspd (1.3.2-11) unstable; urgency=medium
>  
>    * Update Standards-Version to 4.3.0.  No changes needed.
> diff --git a/debian/compat b/debian/compat
> deleted file mode 100644
> index ec63514..0000000
> --- a/debian/compat
> +++ /dev/null
> @@ -1 +0,0 @@
> -9
> diff --git a/debian/control b/debian/control
> index c3cd2da..ee044ca 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -2,7 +2,8 @@ Source: osspd
>  Section: sound
>  Priority: optional
>  Maintainer: Ralf Jung <post@ralfj.de>
> -Build-Depends: debhelper (>= 9.20160709),
> +Uploaders: Sébastien Noel <sebastien@twolife.be>
> +Build-Depends: debhelper-compat (= 13),
>                 libasound2-dev,
>                 libfuse-dev,
>                 libpulse-dev
> @@ -14,6 +15,7 @@ Vcs-Git: git://ralfj.de/osspd.git
>  Package: osspd
>  Architecture: linux-any
>  Multi-Arch: foreign
> +Pre-Depends: ${misc:Pre-Depends}

Why?

Cheers

>  Depends: lsb-base (>= 3.2-14),
>           osspd-pulseaudio | osspd-backend,
>           ${misc:Depends},
> diff --git a/debian/patches/GIT-fix-adsp_se.patch b/debian/patches/GIT-fix-adsp_se.patch
> new file mode 100644
> index 0000000..7316f9c
> --- /dev/null
> +++ b/debian/patches/GIT-fix-adsp_se.patch
> @@ -0,0 +1,24 @@
> +From 4c6161d951daa98f6463904f76b3fa2ce7216194 Mon Sep 17 00:00:00 2001
> +From: Tejun Heo <tj@kernel.org>
> +Date: Mon, 21 Feb 2011 11:54:06 +0100
> +Subject: [PATCH] adsp_se was incorrectly created with dsp_ops.  Create it with
> + adsp_ops.
> +
> +Reported-by: Aaron <aaron.hamid@gmail.com>
> +---
> + osspd.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/osspd.c b/osspd.c
> +index 37c9b35..df1cfc4 100644
> +--- a/osspd.c
> ++++ b/osspd.c
> +@@ -2253,7 +2253,7 @@ int main(int argc, char **argv)
> + 					   param.mixer_major, param.mixer_minor,
> + 					   args.argc, args.argv);
> + 	if (strlen(param.adsp_name))
> +-		adsp_se = setup_ossp_cuse(&dsp_ops, param.adsp_name,
> ++		adsp_se = setup_ossp_cuse(&adsp_ops, param.adsp_name,
> + 					  param.adsp_major, param.adsp_minor,
> + 					  args.argc, args.argv);
> + 
> diff --git a/debian/patches/GIT-fix-compiler-warnings.patch b/debian/patches/GIT-fix-compiler-warnings.patch
> new file mode 100644
> index 0000000..1424b2b
> --- /dev/null
> +++ b/debian/patches/GIT-fix-compiler-warnings.patch
> @@ -0,0 +1,251 @@
> +From 37eb730a452f0ded2ed1c174feb438e3df041581 Mon Sep 17 00:00:00 2001
> +From: Miklos Szeredi <mszeredi@suse.cz>
> +Date: Fri, 11 Nov 2011 14:19:32 +0100
> +Subject: [PATCH] fix compiler warnings
> +
> +---
> + ossp-padsp.c |  3 ---
> + osspd.c      | 75 ++++++++++++++++++++++++++++++----------------------
> + 2 files changed, 44 insertions(+), 34 deletions(-)
> +
> +diff --git a/ossp-padsp.c b/ossp-padsp.c
> +index 1871f5b..3143960 100644
> +--- a/ossp-padsp.c
> ++++ b/ossp-padsp.c
> +@@ -972,16 +972,13 @@ static void do_mmap_read(size_t bytes)
> + 
> + static void stream_rw_callback(pa_stream *s, size_t length, void *userdata)
> + {
> +-	int dir;
> + 	size_t size;
> + 
> + 	if (s == stream[PLAY]) {
> +-		dir = PLAY;
> + 		size = pa_stream_writable_size(s);
> + 		if (mmap_map[PLAY])
> + 			do_mmap_write(size);
> + 	} else if (s == stream[REC]) {
> +-		dir = REC;
> + 		size = pa_stream_readable_size(s);
> + 		if (mmap_map[REC])
> + 			do_mmap_read(size);
> +diff --git a/osspd.c b/osspd.c
> +index df1cfc4..4be1ad5 100644
> +--- a/osspd.c
> ++++ b/osspd.c
> +@@ -469,15 +469,6 @@ static int ioctl_prep_uarg(fuse_req_t req, void *in, size_t in_sz, void *out,
> + 		return;							\
> + } while (0)
> + 
> +-#define IOCTL_RETURN(result, outp) do {					\
> +-	if ((outp) != NULL)						\
> +-		fuse_reply_ioctl(req, result, (outp), sizeof(*(outp)));	\
> +-	else								\
> +-		fuse_reply_ioctl(req, result, NULL, 0);			\
> +-	return;								\
> +-} while (0)
> +-
> +-
> + /***************************************************************************
> +  * Mixer implementation
> +  */
> +@@ -709,7 +700,8 @@ static void mixer_simple_ioctl(fuse_req_t req, struct ossp_mixer *mixer,
> + 		strncpy(info.id, id, sizeof(info.id) - 1);
> + 		strncpy(info.name, name, sizeof(info.name) - 1);
> + 		info.modify_counter = mixer->modify_counter;
> +-		IOCTL_RETURN(0, &info);
> ++		fuse_reply_ioctl(req, 0, &info, sizeof(info));
> ++		break;
> + 	}
> + 
> + 	case SOUND_OLD_MIXER_INFO: {
> +@@ -718,7 +710,8 @@ static void mixer_simple_ioctl(fuse_req_t req, struct ossp_mixer *mixer,
> + 		PREP_UARG(NULL, &info);
> + 		strncpy(info.id, id, sizeof(info.id) - 1);
> + 		strncpy(info.name, name, sizeof(info.name) - 1);
> +-		IOCTL_RETURN(0, &info);
> ++		fuse_reply_ioctl(req, 0, &info, sizeof(info));
> ++		break;
> + 	}
> + 
> + 	case OSS_GETVERSION:
> +@@ -737,16 +730,16 @@ static void mixer_simple_ioctl(fuse_req_t req, struct ossp_mixer *mixer,
> + 		goto puti;
> + 	puti:
> + 		PREP_UARG(NULL, &i);
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		break;
> + 
> + 	case SOUND_MIXER_WRITE_RECSRC:
> +-		IOCTL_RETURN(0, NULL);
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++		break;
> + 
> + 	default:
> + 		*not_minep = 1;
> +-		return;
> + 	}
> +-	assert(0);
> + }
> + 
> + static void mixer_do_ioctl(fuse_req_t req, struct ossp_mixer *mixer,
> +@@ -787,7 +780,8 @@ static void mixer_do_ioctl(fuse_req_t req, struct ossp_mixer *mixer,
> + 		break;
> + 	default:
> + 		i = 0;
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		return;
> + 	}
> + 
> + 	init_mixer_cmd(&mxcmd, mixer);
> +@@ -837,7 +831,12 @@ static void mixer_do_ioctl(fuse_req_t req, struct ossp_mixer *mixer,
> + 	finish_mixer_cmd(&mxcmd);
> + 	free(osa);
> + 
> +-	IOCTL_RETURN(0, out_bufsz ? &mxcmd.rvol : NULL);
> ++	if (out_bufsz)
> ++		fuse_reply_ioctl(req, 0, &mxcmd.rvol, sizeof(mxcmd.rvol));
> ++	else
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++
> ++	return;
> + 
> + err:
> + 	fuse_reply_err(req, -rc);
> +@@ -1510,7 +1509,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 	case OSS_GETVERSION:
> + 		i = SNDRV_OSS_VERSION;
> + 		PREP_UARG(NULL, &i);
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		break;
> + 
> + 	case SNDCTL_DSP_GETCAPS:
> + 		i = DSP_CAP_DUPLEX | DSP_CAP_REALTIME | DSP_CAP_TRIGGER |
> +@@ -1519,12 +1519,14 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + #endif
> + 			DSP_CAP_MULTI;
> + 		PREP_UARG(NULL, &i);
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		break;
> + 
> + 	case SNDCTL_DSP_NONBLOCK:
> + 		dsps->nonblock = 1;
> + 		ret = 0;
> +-		IOCTL_RETURN(0, NULL);
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++		break;
> + 
> + 	case SNDCTL_DSP_RESET:		op = OSSP_DSP_RESET;		goto nd;
> + 	case SNDCTL_DSP_SYNC:		op = OSSP_DSP_SYNC;		goto nd;
> +@@ -1533,7 +1535,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 		ret = exec_simple_cmd(&dsps->os, op, NULL, NULL);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, NULL);
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++		break;
> + 
> + 	case SOUND_PCM_READ_RATE:	op = OSSP_DSP_GET_RATE;		goto ri;
> + 	case SOUND_PCM_READ_BITS:	op = OSSP_DSP_GET_FORMAT;	goto ri;
> +@@ -1546,7 +1549,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 		ret = exec_simple_cmd(&dsps->os, op, NULL, &i);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		break;
> + 
> + 	case SNDCTL_DSP_SPEED:		op = OSSP_DSP_SET_RATE;		goto wi;
> + 	case SNDCTL_DSP_SETFMT:		op = OSSP_DSP_SET_FORMAT;	goto wi;
> +@@ -1557,7 +1561,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 		ret = exec_simple_cmd(&dsps->os, op, &i, &i);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		break;
> + 
> + 	case SNDCTL_DSP_STEREO:
> + 		PREP_UARG(NULL, &i);
> +@@ -1566,7 +1571,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 		i--;
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, &i);
> ++		fuse_reply_ioctl(req, 0, &i, sizeof(i));
> ++		break;
> + 
> + 	case SNDCTL_DSP_SETFRAGMENT:
> + 		PREP_UARG(&i, NULL);
> +@@ -1574,7 +1580,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 				      OSSP_DSP_SET_FRAGMENT, &i, NULL);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, NULL);
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++		break;
> + 
> + 	case SNDCTL_DSP_SETTRIGGER:
> + 		PREP_UARG(&i, NULL);
> +@@ -1582,7 +1589,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 				      OSSP_DSP_SET_TRIGGER, &i, NULL);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, NULL);
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++		break;
> + 
> + 	case SNDCTL_DSP_GETOSPACE:
> + 	case SNDCTL_DSP_GETISPACE: {
> +@@ -1603,7 +1611,8 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 		ret = exec_simple_cmd(&dsps->os, op, NULL, &info);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, &info);
> ++		fuse_reply_ioctl(req, 0, &info, sizeof(info));
> ++		break;
> + 	}
> + 
> + 	case SNDCTL_DSP_GETOPTR:
> +@@ -1616,14 +1625,16 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 		ret = exec_simple_cmd(&dsps->os, op, NULL, &info);
> + 		if (ret)
> + 			goto err;
> +-		IOCTL_RETURN(0, &info);
> ++		fuse_reply_ioctl(req, 0, &info, sizeof(info));
> ++		break;
> + 	}
> + 
> + 	case SNDCTL_DSP_GETODELAY:
> + 		PREP_UARG(NULL, &i);
> + 		i = 0;
> + 		ret = exec_simple_cmd(&dsps->os, OSSP_DSP_GET_ODELAY, NULL, &i);
> +-		IOCTL_RETURN(ret, &i);	/* always copy out result, 0 on err */
> ++		fuse_reply_ioctl(req, ret, &i, sizeof(i));	/* always copy out result, 0 on err */
> ++		break;
> + 
> + 	case SOUND_PCM_WRITE_FILTER:
> + 	case SOUND_PCM_READ_FILTER:
> +@@ -1638,14 +1649,16 @@ static void dsp_ioctl(fuse_req_t req, int signed_cmd, void *uarg,
> + 	case SNDCTL_DSP_SETSYNCRO:
> + 	case SNDCTL_DSP_SETDUPLEX:
> + 	case SNDCTL_DSP_PROFILE:
> +-		IOCTL_RETURN(0, NULL);
> ++		fuse_reply_ioctl(req, 0, NULL, 0);
> ++		break;
> + 
> + 	default:
> + 		warn_os(os, "unknown ioctl 0x%x", cmd);
> + 		ret = -EINVAL;
> + 		goto err;
> + 	}
> +-	assert(0);	/* control shouldn't reach here */
> ++	return;
> ++
> + err:
> + 	fuse_reply_err(req, -ret);
> + }
> diff --git a/debian/patches/Hack-to-work-with-modern-PulseAudio.patch b/debian/patches/Hack-to-work-with-modern-PulseAudio.patch
> new file mode 100644
> index 0000000..25996cc
> --- /dev/null
> +++ b/debian/patches/Hack-to-work-with-modern-PulseAudio.patch
> @@ -0,0 +1,37 @@
> +From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
> +Date: Fri, 18 Dec 2020 23:17:36 +0000
> +Subject: [PATCH] Hack to work with modern PulseAudio
> +
> +---
> + ossp-padsp.c | 8 ++++++++
> + 1 file changed, 8 insertions(+)
> +
> +diff --git a/ossp-padsp.c b/ossp-padsp.c
> +index c505b57..b4ac097 100644
> +--- a/ossp-padsp.c
> ++++ b/ossp-padsp.c
> +@@ -22,6 +22,8 @@
> + #include <sys/stat.h>
> + #include <sys/types.h>
> + #include <unistd.h>
> ++#include <linux/limits.h>
> ++#include <stdlib.h>
> + 
> + #include <pulse/pulseaudio.h>
> + #include <sys/soundcard.h>
> +@@ -1478,9 +1480,15 @@ static void action_post(void)
> + int main(int argc, char **argv)
> + {
> + 	int rc;
> ++	static char runtime_dir[PATH_MAX];
> + 
> + 	ossp_slave_init(argc, argv);
> + 
> ++	snprintf(runtime_dir, sizeof runtime_dir, "/run/user/%llu",
> ++		(long long unsigned) getuid());
> ++	if (access(runtime_dir, R_OK | X_OK) == 0)
> ++		setenv("XDG_RUNTIME_DIR", runtime_dir, 0);
> ++
> + 	page_size = sysconf(_SC_PAGE_SIZE);
> + 
> + 	mainloop = pa_threaded_mainloop_new();
> diff --git a/debian/patches/series b/debian/patches/series
> index 521cc6b..03f1d68 100644
> --- a/debian/patches/series
> +++ b/debian/patches/series
> @@ -5,3 +5,6 @@
>  0005-Add-pthread-compiler-and-linker-flag.patch
>  0006-fix-build-on-MIPS.patch
>  0007-cross.patch
> +GIT-fix-adsp_se.patch
> +GIT-fix-compiler-warnings.patch
> +Hack-to-work-with-modern-PulseAudio.patch
> diff --git a/debian/rules b/debian/rules
> index 9b9a0a1..2a38240 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -4,7 +4,7 @@ SLAVESDIR=/usr/lib/osspd
>  UDEVDIR=/lib/udev/rules.d
>  
>  %:
> -	dh $@ --parallel --with=systemd
> +	dh $@
>  
>  override_dh_auto_build:
>  	dh_auto_build -- SLAVESDIR=$(SLAVESDIR) UDEVDIR=$(UDEVDIR)
> @@ -16,7 +16,7 @@ override_dh_strip:
>  	dh_strip --ddeb-migration='osspd-dbg (<< 1.3.2-7~)'
>  
>  override_dh_install:
> -	dh_install --fail-missing
> +	dh_install
>  	# adding kmod integration
>  	install -D -m 0644 debian/osspd.kmod debian/osspd/lib/modules-load.d/osspd.conf
>  


-- 
Sebastian Ramacher

Attachment: signature.asc
Description: PGP signature


Reply to: