Package: release.debian.org Severity: normal User: release.debian....@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. + + -- Ralf Jung <p...@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 <p...@ralfj.de> -Build-Depends: debhelper (>= 9.20160709), +Uploaders: Sébastien Noel <sebast...@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} 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 <t...@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.ha...@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 <mszer...@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.steff...@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