diff --git a/0000-mt-st-1.1-redhat.patch b/0000-mt-st-1.1-redhat.patch new file mode 100644 index 0000000..f2f4385 --- /dev/null +++ b/0000-mt-st-1.1-redhat.patch @@ -0,0 +1,32 @@ +--- mt-st-1.1/Makefile.redhat 2008-03-01 11:50:12.000000000 +0100 ++++ mt-st-1.1/Makefile 2008-08-04 08:20:01.000000000 +0200 +@@ -1,8 +1,9 @@ +-CFLAGS= -Wall -O2 +-SBINDIR= /sbin +-BINDIR= /bin +-USRBINDIR= /usr/bin +-MANDIR= /usr/share/man ++CFLAGS= $(RPM_OPT_FLAGS) ++SBINDIR= $(RPM_BUILD_ROOT)/usr/sbin ++BINDIR= $(RPM_BUILD_ROOT)/usr/bin ++USRBINDIR= $(RPM_BUILD_ROOT)/usr/bin ++MANDIR= $(RPM_BUILD_ROOT)/usr/share/man ++CC=gcc + + MTDIR=$(BINDIR) + +@@ -15,11 +16,12 @@ + $(CC) $(CFLAGS) -o stinit stinit.c + + install: mt stinit +- install -s mt $(MTDIR) ++ mkdir -p $(BINDIR) $(SBINDIR) $(MANDIR)/man1 $(MANDIR)/man8 ++ install -m 755 mt $(BINDIR) + install -c -m 444 mt.1 $(MANDIR)/man1 + (if [ -f $(MANDIR)/man1/mt.1.gz ] ; then \ + rm -f $(MANDIR)/man1/mt.1.gz; gzip $(MANDIR)/man1/mt.1; fi) +- install -s stinit $(SBINDIR) ++ install -m 755 stinit $(SBINDIR) + install -c -m 444 stinit.8 $(MANDIR)/man8 + (if [ -f $(MANDIR)/man8/stinit.8.gz ] ; then \ + rm -f $(MANDIR)/man8/stinit.8.gz; gzip $(MANDIR)/man8/stinit.8; fi) diff --git a/0001-mt-st-1.1-SDLT.patch b/0001-mt-st-1.1-SDLT.patch new file mode 100644 index 0000000..3979f7f --- /dev/null +++ b/0001-mt-st-1.1-SDLT.patch @@ -0,0 +1,11 @@ +--- mt-st-1.1/mt.c.sdlt 2008-04-27 18:49:00.000000000 +0200 ++++ mt-st-1.1/mt.c 2008-08-04 08:21:54.000000000 +0200 +@@ -225,6 +225,8 @@ + {0x45, "QIC-3095-MC (TR-4)"}, + {0x46, "LTO-4"}, + {0x47, "DDS-5 or TR-5"}, ++ {0x48, "Quantum SDLT220"}, ++ {0x49, "Quantum SDLT320"}, + {0x51, "IBM 3592 J1A"}, + {0x52, "IBM 3592 E05"}, + {0x80, "DLT 15GB uncomp. or Ecrix"}, diff --git a/0002-mt-st-0.7-config-files.patch b/0002-mt-st-0.7-config-files.patch new file mode 100644 index 0000000..756261b --- /dev/null +++ b/0002-mt-st-0.7-config-files.patch @@ -0,0 +1,172 @@ +--- mt-st-0.8/stinit.def.examples.configfiles 2002-09-23 19:02:21.000000000 +0200 ++++ mt-st-0.8/stinit.def.examples 2005-04-07 08:21:01.732633520 +0200 +@@ -56,3 +56,169 @@ + mode3 blocksize=0 density=1 # 800 bpi + } + ++# DLT2000 / 2000XT ++manufacturer="QUANTUM" model = "DLT2000" { ++scsi2logical=1 ++can-bsr ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++mode1 blocksize=0 density=0x81 # 10GB + compression on DLTtape III, 15+ with DLTtape IIIXT in 2000XT ++mode2 blocksize=0 density=0x80 # 10GB, no compression on DLTtape III, 15 with DLTtape IIIXT in 2000XT ++mode3 blocksize=0 density=0x18 # 6GB, compression not available, on DLTtape III ++mode4 blocksize=0 density=0x17 #2.6GB, compression not available, on DLTtape III ++} ++ ++# DLT4000 ++manufacturer="QUANTUM" model = "DLT4000" { ++scsi2logical=1 ++can-bsr ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++# Drive is backwards compatible, use older modes (e.g. from above) as required ++mode1 blocksize=0 density=0x83 # 20GB + compression ++mode2 blocksize=0 density=0x82 # 20GB, no compression ++mode3 blocksize=0 density=0x81 # 10GB + compression (DLT2000 mode) with DLTtape III, 15+ with DLTtape IIIXT in 2000XT ++mode4 blocksize=0 density=0x80 # 10GB, no compression (DLT2000 mode) with DLTtape III, 15 with DLTtape IIIXT in 2000XT ++} ++ ++# DLT7000 ++manufacturer="QUANTUM" model = "DLT7000" { ++scsi2logical=1 ++can-bsr ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++# Drive is backwards compatible, use older modes (e.g. from above) as required. ++mode1 blocksize=0 density=0x85 # 35GB + compression ++mode2 blocksize=0 density=0x84 # 35GB, no compression ++mode3 blocksize=0 density=0x83 # 20GB + compression (DLT4000 mode) ++mode4 blocksize=0 density=0x82 # 20GB, no compression (DLT4000 mode) ++} ++ ++# DLT8000 ++manufacturer="QUANTUM" model = "DLT8000" { ++scsi2logical=1 ++can-bsr=1 ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++# Drive is backwards compatible to DLT7000, use older modes (e.g. from above) as required. Modes <10GB (<0x19) not supported! ++mode1 blocksize=0 density=0x89 # 40GB + compression ++mode2 blocksize=0 density=0x88 # 40GB, no compression ++mode3 blocksize=0 density=0x85 # 35GB + compression (DLT7000 mode) ++mode4 blocksize=0 density=0x84 # 35GB, no compression (DLT7000 mode) ++} ++ ++ ++# SDLT220 ++manufacturer="QUANTUM" model = "SuperDLT1" { ++scsi2logical=1 ++can-bsr=1 ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++# Drive is backwards read compatible to DLT4000/7000/8000. Mode settings are only required for writing, so no need to define any other modes here. ++mode1 blocksize=0 density=0x48 compression=1 # 110 GB + compression ++mode2 blocksize=0 density=0x48 compression=0 # 110 GB, no ompression ++} ++ ++# SDLT320 ++manufacturer="QUANTUM" model = "SDLT320" { ++scsi2logical=1 ++can-bsr=1 ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++# Drive is backwards write compatible to SDLT220 and read compatible to DLT4000/7000/8000. Mode settings are only required for writing, so we need only the SDL220/320 modes here ++mode1 blocksize=0 density=0x49 compression=1 # 160 GB + compression ++mode2 blocksize=0 density=0x49 compression=0 # 160 GB, no ompression ++mode3 blocksize=0 density=0x48 compression=1 # 110 GB + compression ++mode4 blocksize=0 density=0x48 compression=0 # 110 GB, no ompression ++} ++ ++# SDLT600 ++manufacturer="QUANTUM" model = "SDLT600" { ++scsi2logical=1 ++can-bsr=1 ++auto-lock=0 ++two-fms=0 ++drive-buffering=1 ++buffer-writes ++read-ahead=1 ++async-writes=1 ++can-partitions=0 ++fast-mteom=1 ++# ++# If your stinit supports the timeouts: ++timeout=3600 # 1 hour ++long-timeout=14400 # 4 hours ++# ++# Drive is backwards read compatible to SDLT220/320 and VS160. Mode settings are only required for writing, so we need only the native SDLT600 mode here. ++mode1 blocksize=0 density=0x4a compression=1 # 300 GB + compression ++mode2 blocksize=0 density=0x4a compression=0 # 300 GB, no ompression ++mode3 blocksize=0 density=0x4a compression=1 # 300 GB + compression ++mode4 blocksize=0 density=0x4a compression=0 # 300 GB, no ompression ++} ++ diff --git a/0003-mt-st-0.9b-manfix.patch b/0003-mt-st-0.9b-manfix.patch new file mode 100644 index 0000000..d22acef --- /dev/null +++ b/0003-mt-st-0.9b-manfix.patch @@ -0,0 +1,31 @@ +--- mt-st-0.9b/mt.1.manfix 2005-08-21 20:53:50.000000000 +0200 ++++ mt-st-0.9b/mt.1 2005-10-25 12:13:43.000000000 +0200 +@@ -48,20 +48,22 @@ + files. + The tape is positioned on the first block of the next file. + .IP fsfm +-Forward space ++Forward space past + .I count +-files. +-The tape is positioned on the last block of the previous file. ++file marks, then backward space one file record. ++This leaves the tape positioned on the last block of the file that is count-1 ++files past the current file. + .IP bsf + Backward space + .I count + files. + The tape is positioned on the last block of the previous file. + .IP bsfm +-Backward space ++Backward space past + .I count +-files. +-The tape is positioned on the first block of the next file. ++file marks, then forward space one file record. ++This leaves the tape positioned on the first block of the file that is count-1 ++files before the current file. + .IP asf + The tape is positioned at the beginning of the + .I count diff --git a/0004-mt-st-1.1-include.patch b/0004-mt-st-1.1-include.patch new file mode 100644 index 0000000..678fdda --- /dev/null +++ b/0004-mt-st-1.1-include.patch @@ -0,0 +1,24 @@ +--- mt-st-1.1/mt.c.mtio 2018-05-29 08:26:16.874145539 +0200 ++++ mt-st-1.1/mt.c 2018-05-29 08:32:03.940573221 +0200 +@@ -22,8 +22,9 @@ + #include + #include + #include ++#include + +-#include "mtio.h" ++#include + + #ifndef DEFTAPE + #define DEFTAPE "/dev/tape" /* default tape device */ +--- mt-st-1.1/stinit.c.mtio 2008-04-27 13:24:16.000000000 +0200 ++++ mt-st-1.1/stinit.c 2008-08-04 08:24:45.000000000 +0200 +@@ -22,7 +22,7 @@ + #include + #include + +-#include "mtio.h" ++#include + + #ifndef FALSE + #define TRUE 1 diff --git a/0005-mt-st-1.1-options.patch b/0005-mt-st-1.1-options.patch new file mode 100644 index 0000000..cf856cd --- /dev/null +++ b/0005-mt-st-1.1-options.patch @@ -0,0 +1,12 @@ +diff -up mt-st-1.1/stinit.c.options mt-st-1.1/stinit.c +--- mt-st-1.1/stinit.c.options 2013-07-23 11:55:33.000000000 +0200 ++++ mt-st-1.1/stinit.c 2013-07-23 11:56:09.000000000 +0200 +@@ -889,7 +889,7 @@ define_tape(int tapeno, FILE *dbf, devde + usage(int retval) + { + fprintf(stderr, +- "Usage: stinit [-h] [-v] [-f dbname] [-p] [drivename_or_number ...]\n"); ++ "Usage: stinit [-h] [-v] [--version] [-f dbname] [-p] [-r] [drivename_or_number ...]\n"); + exit(retval); + } + diff --git a/0006-mt-st-1.1-man.patch b/0006-mt-st-1.1-man.patch new file mode 100644 index 0000000..ae91b75 --- /dev/null +++ b/0006-mt-st-1.1-man.patch @@ -0,0 +1,63 @@ +From 78c0868407b59bbfdd1301fe5c1b57831b53c26e Mon Sep 17 00:00:00 2001 +From: Jan Chaloupka +Date: Thu, 21 Aug 2014 12:46:44 +0200 +Subject: [PATCH] mt missing options section + +--- + mt.1 | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +diff --git a/mt.1 b/mt.1 +index 8ff5b63..7dccdee 100644 +--- a/mt.1 ++++ b/mt.1 +@@ -13,21 +13,7 @@ performs the given + which must be one of the tape operations listed below, on a tape + drive. The commands can also be listed by running the program with the + .I \-h +-option. The version of mt is printed with the +-.I \-v +-or +-.I \-\-version +-option. The path of the tape device on which to operate can be given with +-the +-.I \-f +-or +-.I \-t +-option. If neither of those options is given, and the environment +-variable +-.B TAPE +-is set, it is used. Otherwise, a default device defined in the file +-.I /usr/include/sys/mtio.h +-is used. ++option. + .PP + Some operations optionally take an argument or repeat count, which can be given + after the operation name and defaults to 1. The postfix +@@ -275,6 +261,23 @@ set the cleaning request interpretation parameters. + exits with a status of 0 if the operation succeeded, 1 if the + operation or device name given was invalid, or 2 if the operation + failed. ++.SH OPTIONS ++.TP ++.B \-h, \-\-help ++Print a usage message on standard output and exit successfully. ++.TP ++.B \-v, \-\-version ++Print version of mt. ++.TP ++.B \-f, \-t ++The path of the tape device on which to operate. ++If neither of those options is given, ++and the environment variable ++.B TAPE ++is set, it is used. ++Otherwise, a default device defined in the file ++.I /usr/include/sys/mtio.h ++is used. + .SH AUTHOR + The program is written by Kai Makisara . + .SH COPYRIGHT +-- +1.9.3 + diff --git a/mt-st-1.1.tar.gz b/mt-st-1.1.tar.gz new file mode 100644 index 0000000..f7b4c64 Binary files /dev/null and b/mt-st-1.1.tar.gz differ diff --git a/mt-st.spec b/mt-st.spec new file mode 100644 index 0000000..223540e --- /dev/null +++ b/mt-st.spec @@ -0,0 +1,72 @@ +Name: mt-st +Version: 1.1 +Release: 25 +Summary: Tool to manage tape drives +License: GPL+ +URL: ftp://ftp.ibiblio.org/pub/linux/system/backup + +Source0: ftp://metalab.unc.edu/pub/Linux/system/backup/mt-st-%{version}.tar.gz +Source1: stinit.service +Patch0000: 0000-mt-st-1.1-redhat.patch +Patch0001: 0001-mt-st-1.1-SDLT.patch +Patch0002: 0002-mt-st-0.7-config-files.patch +Patch0003: 0003-mt-st-0.9b-manfix.patch +Patch0004: 0004-mt-st-1.1-include.patch +Patch0005: 0005-mt-st-1.1-options.patch +Patch0006: 0006-mt-st-1.1-man.patch + +BuildRequires: gcc systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%description +The mt-st package contains two programs: mt and stinit. Mt is basically a "standard" mt with +additional commands to send the ioctls specific to the Linux SCSI tape driver. Stinit is a program +to initialize the tape drive characteristics. + +%package_help + +%prep +%autosetup -p1 + +iconv -f ISO8859-1 -t UTF-8 -o README.stinit.new README.stinit +touch -r README.stinit README.stinit.new +mv README.stinit.new README.stinit + + +%build +make CFLAGS="%{build_cflags} %{build_ldflags}" + + +%install +%make_install +install -D -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/stinit.service + + +%post +%systemd_post stinit.service + +%preun +%systemd_preun stinit.service + +%postun +%systemd_postun_with_restart stinit.service + + +%files +%defattr(-,root,root) +%license COPYING +%{_bindir}/mt +%{_sbindir}/stinit +%{_unitdir}/stinit.service + + +%files help +%defattr(-,root,root) +%doc README README.stinit mt-st-1.1.lsm stinit.def.examples +%{_mandir}/man[18]/* + +%changelog +* Wed Dec 4 2019 openEuler Buildteam - 1.1-25 +- Package init diff --git a/stinit.service b/stinit.service new file mode 100644 index 0000000..2e95078 --- /dev/null +++ b/stinit.service @@ -0,0 +1,10 @@ +[Unit] +Description=Initialize SCSI Tape Drives + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/sbin/stinit -f /etc/stinit.def + +[Install] +WantedBy=multi-user.target