mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-08-05 12:38:09 -07:00
sys-fs/mtools: Removed old
Package-Manager: Portage-3.0.8, Repoman-3.0.2 Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
This commit is contained in:
@@ -1,4 +1,2 @@
|
||||
DIST mtools-4.0.18.tar.bz2 420190 BLAKE2B 92fdf8b054287e3cb4eddb40c98f5ac4229a38473b633c25ab74a07a8a72d38c2767ae648a35cf0dac9dedfa2f7789afc4904a50e1328e2baa0a289d93b094fb SHA512 3981a4727aa4e2ec5c931201b236f52fcd1c9d55f888cb2fbdc5c4172402e2b229ede9a5005b972ffdad59bcb861e2fcc01404845e521116419079ae78239090
|
||||
DIST mtools-4.0.23.tar.bz2 418592 BLAKE2B 442f552087a5d53ef0ead6161cdad7997dc45a3e210c2cb442a8b2ba42866152f93e4a1f5b58df8d68316168374ea034b390bcf4c607ac3a1c477c4ec5e7842c SHA512 c8c48adedc3f3e4eeafead27ce80172c9cb9690b575618842001ed16aa0011dcd2bc517882ea4bf01a73810ba151aa4b86f8ce2f97d6e8a0177d09be71a6d1ed
|
||||
DIST mtools-4.0.24.tar.bz2 418178 BLAKE2B 96ccbde0e5ed5e304c73c7faaeb495751c43ae37970e5c2329299e0f7bf90f3a810f4ca95faea10a00e5af110be579a3b083043314e980bb0128226caffb5608 SHA512 b74becc4f696315cfabc016d1746e744b43e366de73bf1bffeec4fbab1e4815967594de8acb4af01f89d36a925f93672efbac205b89540161bd53ab7edebcf04
|
||||
DIST mtools-4.0.25.tar.bz2 421807 BLAKE2B 54b0de421d5de003c6dff9a524af2a37d7fe0fb88361e195b000b8c8637ed894ec01ca295ea71ed0df781e9503d609f5e21b987a79c7e9d2c2e0c7176d5eb825 SHA512 91b879de6b41bf9fd6d9282d846e21fe58dbcd3461d97d2d6cae752a309a5129091a0e6ffda5b28ef062c33970a1c0a43ff1cf19106232866bdbdb762c64a143
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
From e8437f906ca86fd5b1cac20d240a0e114c5df7a9 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier@gentoo.org>
|
||||
Date: Thu, 9 Mar 2017 16:06:54 -0800
|
||||
Subject: [PATCH] fix unused attribute in func definition
|
||||
|
||||
UNUSED is for wrapping variable decls, not for variables in a function
|
||||
definition. It will insert a semi-colon into the mix which makes clang
|
||||
upset:
|
||||
x86_64-cros-linux-gnu-clang -DHAVE_CONFIG_H -DSYSCONFDIR=\"/etc/mtools\" \
|
||||
-DCPU_x86_64 -DVENDOR_cros -DOS_linux_gnu -O2 -pipe -O2 -pipe \
|
||||
-march=x86-64 -msse3 -g -fno-exceptions -fno-unwind-tables \
|
||||
-fno-asynchronous-unwind-tables -clang-syntax -Wall \
|
||||
-fno-strict-aliasing -I. -I. -c mainloop.c
|
||||
mainloop.c:89:15: error: expected ')'
|
||||
int unix_loop(UNUSED(Stream_t *Stream), MainParam_t *mp, char *arg,
|
||||
^
|
||||
./sysincludes.h:106:47: note: expanded from macro 'UNUSED'
|
||||
^
|
||||
|
||||
Arguably this should fail on gcc too, but it doesn't today.
|
||||
|
||||
URL: https://crbug.com/644387
|
||||
---
|
||||
mainloop.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/mainloop.c b/mainloop.c
|
||||
index f5f8349f1472..69af9a80c3e4 100644
|
||||
--- a/mainloop.c
|
||||
+++ b/mainloop.c
|
||||
@@ -86,7 +86,7 @@ static const char *fix_mcwd(char *ans)
|
||||
}
|
||||
|
||||
int unix_dir_loop(Stream_t *Stream, MainParam_t *mp);
|
||||
-int unix_loop(UNUSED(Stream_t *Stream), MainParam_t *mp, char *arg,
|
||||
+int unix_loop(Stream_t *Stream UNUSEDP, MainParam_t *mp, char *arg,
|
||||
int follow_dir_link);
|
||||
|
||||
static int _unix_loop(Stream_t *Dir, MainParam_t *mp,
|
||||
@@ -95,7 +95,7 @@ static int _unix_loop(Stream_t *Dir, MainParam_t *mp,
|
||||
return unix_dir_loop(Dir, mp);
|
||||
}
|
||||
|
||||
-int unix_loop(UNUSED(Stream_t *Stream), MainParam_t *mp,
|
||||
+int unix_loop(Stream_t *Stream UNUSEDP, MainParam_t *mp,
|
||||
char *arg, int follow_dir_link)
|
||||
{
|
||||
int ret;
|
||||
--
|
||||
2.12.0
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
https://crbug.com/508713
|
||||
https://lists.gnu.org/archive/html/info-mtools/2016-11/msg00000.html
|
||||
|
||||
From 04df65ed797e47da5b423c7f9aec99d82dfde400 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier@chromium.org>
|
||||
Date: Wed, 7 Sep 2016 12:33:42 -0400
|
||||
Subject: [PATCH] add support for retrying device locking
|
||||
|
||||
When running syslinux's install phase, it will run a bunch of mtools
|
||||
commands in quick succession. If you're on a fast enough machine, it
|
||||
can often fail with errors like:
|
||||
plain floppy: device "/proc/2908/fd/3" busy (Resource temporarily unavailable):
|
||||
Cannot initialize 'S:'
|
||||
Bad target s:/ldlinux.sys
|
||||
syslinux: failed to create ldlinux.sys
|
||||
|
||||
The issue is that after some of the mtools calls, the kernel notices
|
||||
that the fs image has changed, so it notifies userspace. This wakes
|
||||
up udev which grabs a lock on the device to rescan it for changes
|
||||
(e.g. updated fs metadata like UUID). The udev phase does not finish
|
||||
before syslinux fires off another mtools call which means mtools now
|
||||
fails with a locking error.
|
||||
|
||||
You can recreate this with a simple test:
|
||||
- loop mount a fat fs image
|
||||
- open the loop device for writing
|
||||
- generate a mtools.conf pointing the file to /proc/$pid/fd/$fd
|
||||
- run mattrib && mcopy
|
||||
- see udev open/lock the loop device after mattrib runs to probe it
|
||||
- see mcopy fail because udev is still holding the lock
|
||||
|
||||
To fix things, we teach mtools to retry its locking calls temporarily.
|
||||
If it still fails after a timeout, we abort like normal. We also make
|
||||
this behavior configurable by adding a new global timeout option.
|
||||
---
|
||||
config.c | 2 ++
|
||||
mtools.h | 1 +
|
||||
mtools.texi | 7 +++++++
|
||||
mtools.tmpl.5 | 4 ++++
|
||||
plain_io.c | 10 ++++++++++
|
||||
xdf_io.c | 11 +++++++++++
|
||||
6 files changed, 35 insertions(+)
|
||||
|
||||
diff --git a/config.c b/config.c
|
||||
index f08688399d1d..ea4178452f6a 100644
|
||||
--- a/config.c
|
||||
+++ b/config.c
|
||||
@@ -63,6 +63,7 @@ unsigned int mtools_no_vfat=0;
|
||||
unsigned int mtools_numeric_tail=1;
|
||||
unsigned int mtools_dotted_dir=0;
|
||||
unsigned int mtools_twenty_four_hour_clock=1;
|
||||
+unsigned int mtools_lock_timeout=30;
|
||||
unsigned int mtools_default_codepage=850;
|
||||
const char *mtools_date_string="yyyy-mm-dd";
|
||||
char *country_string=0;
|
||||
@@ -90,6 +91,7 @@ static switches_t global_switches[] = {
|
||||
(caddr_t) &mtools_twenty_four_hour_clock, T_UINT },
|
||||
{ "MTOOLS_DATE_STRING",
|
||||
(caddr_t) &mtools_date_string, T_STRING },
|
||||
+ { "MTOOLS_LOCK_TIMEOUT", (caddr_t) &mtools_lock_timeout, T_UINT },
|
||||
{ "DEFAULT_CODEPAGE", (caddr_t) &mtools_default_codepage, T_UINT }
|
||||
};
|
||||
|
||||
diff --git a/mtools.h b/mtools.h
|
||||
index ef98e942ee2c..fa8c1bdc8a1b 100644
|
||||
--- a/mtools.h
|
||||
+++ b/mtools.h
|
||||
@@ -188,6 +188,7 @@ extern unsigned int mtools_ignore_short_case;
|
||||
extern unsigned int mtools_no_vfat;
|
||||
extern unsigned int mtools_numeric_tail;
|
||||
extern unsigned int mtools_dotted_dir;
|
||||
+extern unsigned int mtools_lock_timeout;
|
||||
extern unsigned int mtools_twenty_four_hour_clock;
|
||||
extern const char *mtools_date_string;
|
||||
extern unsigned int mtools_rate_0, mtools_rate_any;
|
||||
diff --git a/mtools.texi b/mtools.texi
|
||||
index 1085789c1cb6..1c7ad94d40f9 100644
|
||||
--- a/mtools.texi
|
||||
+++ b/mtools.texi
|
||||
@@ -658,6 +658,10 @@ DOSEMU image files.
|
||||
@vindex MTOOLS_FAT_COMPATIBILITY
|
||||
@vindex MTOOLS_LOWER_CASE
|
||||
@vindex MTOOLS_NO_VFAT
|
||||
+@vindex MTOOLS_DOTTED_DIR
|
||||
+@vindex MTOOLS_NAME_NUMERIC_TAIL
|
||||
+@vindex MTOOLS_TWENTY_FOUR_HOUR_CLOCK
|
||||
+@vindex MTOOLS_LOCK_TIMEOUT
|
||||
@cindex FreeDOS
|
||||
|
||||
Global flags may be set to 1 or to 0.
|
||||
@@ -692,6 +696,9 @@ clash would have happened.
|
||||
@item MTOOLS_TWENTY_FOUR_HOUR_CLOCK
|
||||
If 1, uses the European notation for times (twenty four hour clock),
|
||||
else uses the UK/US notation (am/pm)
|
||||
+@item MTOOLS_LOCK_TIMEOUT
|
||||
+How long, in seconds, to wait for a locked device to become free.
|
||||
+Defaults to 30.
|
||||
@end table
|
||||
|
||||
Example:
|
||||
diff --git a/mtools.tmpl.5 b/mtools.tmpl.5
|
||||
index 565fdd7513aa..8cdaaf2ba929 100644
|
||||
--- a/mtools.tmpl.5
|
||||
+++ b/mtools.tmpl.5
|
||||
@@ -106,6 +106,10 @@ clash would have happened.
|
||||
\&\fR\&\f(CWMTOOLS_TWENTY_FOUR_HOUR_CLOCK\fR\
|
||||
If 1, uses the European notation for times (twenty four hour clock),
|
||||
else uses the UK/US notation (am/pm)
|
||||
+.TP
|
||||
+\&\fR\&\f(CWMTOOLS_LOCK_TIMEOUT\fR\
|
||||
+How long, in seconds, to wait for a locked device to become free.
|
||||
+Defaults to 30.
|
||||
.PP
|
||||
Example:
|
||||
Inserting the following line into your configuration file instructs
|
||||
diff --git a/plain_io.c b/plain_io.c
|
||||
index c9d8418b8b4d..3dc035c9ce92 100644
|
||||
--- a/plain_io.c
|
||||
+++ b/plain_io.c
|
||||
@@ -632,7 +632,17 @@ APIRET rc;
|
||||
#ifndef __CYGWIN__
|
||||
#ifndef OS_mingw32msvc
|
||||
/* lock the device on writes */
|
||||
+ retry:
|
||||
if (locked && lock_dev(This->fd, mode == O_RDWR, dev)) {
|
||||
+ /* retry the lock in case another system process (e.g. udev)
|
||||
+ * has temporarily locked the device. this happens when you
|
||||
+ * run multiple mtools commands at once which triggers the
|
||||
+ * system to lock/rescan/unlock. */
|
||||
+ static int retries = 0;
|
||||
+ if (errno == EAGAIN && retries++ < mtools_lock_timeout * 10) {
|
||||
+ usleep(100);
|
||||
+ goto retry;
|
||||
+ }
|
||||
if(errmsg)
|
||||
#ifdef HAVE_SNPRINTF
|
||||
snprintf(errmsg,199,
|
||||
diff --git a/xdf_io.c b/xdf_io.c
|
||||
index f0db3b3d9f38..8f64f6348f0c 100644
|
||||
--- a/xdf_io.c
|
||||
+++ b/xdf_io.c
|
||||
@@ -638,7 +638,18 @@ Stream_t *XdfOpen(struct device *dev, char *name,
|
||||
goto exit_2;
|
||||
|
||||
/* lock the device on writes */
|
||||
+ retry:
|
||||
if (lock_dev(This->fd, mode == O_RDWR, dev)) {
|
||||
+ /* retry the lock in case another system process (e.g. udev)
|
||||
+ * has temporarily locked the device. this happens when you
|
||||
+ * run multiple mtools commands at once which triggers the
|
||||
+ * system to lock/rescan/unlock. */
|
||||
+ static int retries = 0;
|
||||
+ if (errno == EAGAIN && retries++ < mtools_lock_timeout * 10) {
|
||||
+ usleep(100);
|
||||
+ goto retry;
|
||||
+ }
|
||||
+
|
||||
#ifdef HAVE_SNPRINTF
|
||||
snprintf(errmsg,199,"xdf floppy: device \"%s\" busy:",
|
||||
dev->name);
|
||||
--
|
||||
2.9.0
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From bafeabbc474a98314e8cecf42c8339e1da21fea2 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier@gentoo.org>
|
||||
Date: Thu, 9 Mar 2017 16:23:19 -0800
|
||||
Subject: [PATCH] fix typo in scsi_cmd setup
|
||||
|
||||
The memset call ends up referring to the function scsi_cmd and
|
||||
clearing its memory instead of the local my_scsi_cmd variable.
|
||||
---
|
||||
scsi.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/scsi.c b/scsi.c
|
||||
index 7510edcefe95..85ff3bc3dc55 100644
|
||||
--- a/scsi.c
|
||||
+++ b/scsi.c
|
||||
@@ -170,7 +170,7 @@ int scsi_cmd(int fd, unsigned char *cdb, int cmdlen, scsi_io_mode_t mode,
|
||||
/*
|
||||
** Init the command
|
||||
*/
|
||||
- memset(&scsi_cmd,0,sizeof(scsi_cmd));
|
||||
+ memset(&my_scsi_cmd,0,sizeof(my_scsi_cmd));
|
||||
my_scsi_cmd.interface_id = 'S';
|
||||
my_scsi_cmd.dxfer_direction = (mode == SCSI_IO_READ)?(SG_DXFER_FROM_DEV):(SG_DXFER_TO_DEV);
|
||||
my_scsi_cmd.cmd_len = cmdlen;
|
||||
--
|
||||
2.12.0
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="5"
|
||||
|
||||
inherit flag-o-matic eutils
|
||||
|
||||
DESCRIPTION="utilities to access MS-DOS disks from Unix without mounting them"
|
||||
HOMEPAGE="https://www.gnu.org/software/mtools/ https://savannah.gnu.org/projects/mtools"
|
||||
SRC_URI="mirror://gnu/${PN}/${P}.tar.bz2"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm ~hppa ppc ppc64 sparc x86 ~x64-macos ~x64-solaris"
|
||||
IUSE="X elibc_glibc"
|
||||
|
||||
RDEPEND="
|
||||
!elibc_glibc? ( virtual/libiconv )
|
||||
X? (
|
||||
x11-libs/libICE
|
||||
x11-libs/libXau
|
||||
x11-libs/libSM
|
||||
x11-libs/libX11
|
||||
x11-libs/libXt
|
||||
)"
|
||||
DEPEND="${RDEPEND}
|
||||
sys-apps/texinfo"
|
||||
# texinfo is required because we patch mtools.texi
|
||||
# drop it when mtools-4.0.18-locking.patch is no longer applied
|
||||
|
||||
src_prepare() {
|
||||
# Don't throw errors on existing directories
|
||||
sed -i -e "s:mkdir:mkdir -p:" mkinstalldirs || die
|
||||
|
||||
epatch "${FILESDIR}"/${P}-locking.patch # https://crbug.com/508713
|
||||
epatch "${FILESDIR}"/${P}-attr.patch # https://crbug.com/644387
|
||||
epatch "${FILESDIR}"/${P}-memset.patch
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 447688
|
||||
use !elibc_glibc && use !elibc_musl && append-libs "-liconv"
|
||||
econf \
|
||||
--sysconfdir="${EPREFIX}"/etc/mtools \
|
||||
$(use_with X x)
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" install
|
||||
dodoc README* Release.notes
|
||||
|
||||
insinto /etc/mtools
|
||||
doins mtools.conf
|
||||
# default is fine
|
||||
sed -i -e '/^SAMPLE FILE$/s:^:#:' "${ED}"/etc/mtools/mtools.conf || die
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
# Copyright 1999-2020 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="6"
|
||||
|
||||
inherit flag-o-matic
|
||||
|
||||
DESCRIPTION="utilities to access MS-DOS disks from Unix without mounting them"
|
||||
HOMEPAGE="https://www.gnu.org/software/mtools/ https://savannah.gnu.org/projects/mtools"
|
||||
SRC_URI="mirror://gnu/${PN}/${P}.tar.bz2"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha amd64 arm ~hppa ppc ppc64 ~sparc x86 ~x64-macos ~x64-solaris"
|
||||
IUSE="X elibc_glibc"
|
||||
|
||||
RDEPEND="
|
||||
!elibc_glibc? ( virtual/libiconv )
|
||||
X? (
|
||||
x11-libs/libICE
|
||||
x11-libs/libXau
|
||||
x11-libs/libSM
|
||||
x11-libs/libX11
|
||||
x11-libs/libXt
|
||||
)"
|
||||
DEPEND="${RDEPEND}"
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# Don't throw errors on existing directories
|
||||
sed -i -e "s:mkdir:mkdir -p:" mkinstalldirs || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# 447688
|
||||
use !elibc_glibc && use !elibc_musl && append-libs "-liconv"
|
||||
local myeconfargs=(
|
||||
--sysconfdir="${EPREFIX}"/etc/mtools
|
||||
$(use_with X x)
|
||||
)
|
||||
econf "${myeconfargs[@]}"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
local -a DOCS=( README* Release.notes )
|
||||
default
|
||||
|
||||
insinto /etc/mtools
|
||||
doins mtools.conf
|
||||
|
||||
# default is fine
|
||||
sed -i -e '/^SAMPLE FILE$/s:^:#:' "${ED%/}"/etc/mtools/mtools.conf || die
|
||||
}
|
||||
Reference in New Issue
Block a user