From 39b52fa50e1d026920441f13f9cc117759ac460d Mon Sep 17 00:00:00 2001 From: Stewart Smith Date: Jun 04 2022 16:58:03 +0000 Subject: Initial import (fedora#2091317). --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17baba3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/libeatmydata-130.tar.gz diff --git a/eatmydata.1 b/eatmydata.1 new file mode 100644 index 0000000..8722075 --- /dev/null +++ b/eatmydata.1 @@ -0,0 +1,83 @@ +.TH eatmydata 1 "November 2014" +.SH NAME +eatmydata \- transparently disable fsync() and other data-to-disk synchronization calls +.SH SYNOPSIS +.B eatmydata +[--] \fIcommand\fR [ \fIcommand arguments\fR ... ] +.SH DESCRIPTION +\fBeatmydata\fR runs a command in the environment where data-to-disk +synchronization calls (like fsync(), fdatasync(), sync(), msync() and open() +O_SYNC / O_DSYNC flags) have no effect. LD_PRELOAD library \fBlibeatmydata\fR +overrides respective C library calls with custom functions that don't trigger +synchronization but return success nevertheless. +.P +You may use \fBeatmydata\fR in two ways. In normal mode, just execute +\fBeatmydata\fR directly and pass a command\-to\-be\-run and its arguments via +command line. In order to use symlink mode, create a symlink to +\fI/usr/bin/eatmydata\fR with the filename (a.k.a basename) of another program +in the PATH and execute \fBeatmydata\fR via that symlink. Then \fBeatmydata\fR +will find that program in the PATH and run it in the libeatmydata environment +repassing all command line options. +.SH OPTIONS +.P +Please note that \fBeatmydata\fR does not process any command line options in +symlink mode. All command line options will be repassed to the underlying +executable as-is. +.TP +.I command +The command to execute. It may be either a full path or the name of the command +in PATH. In case command cannot be found in PATH, \fBeatmydata\fR will fail. +.TP +.I command arguments +Arbitrary number of arguments to pass to the command being executed. +.TP +-- +Optional command separator for compatibility with similar utilities. Ignored at +the moment. +.SH EXAMPLES +.P +Given PATH is /usr/bin and both /usr/bin/aptitude and /usr/bin/eatmydata are +installed, the following: +.P +.nf + $ ln \-s /usr/bin/eatmydata ./aptitude + $ ./aptitude moo +.fi +.P +is equivalent to: +.P +.nf + $ eatmydata \-\- aptitude moo +.fi +.P +Therefore, you may use symlink mode to automatically run specific programs in +the libeatmydata environment whenever you run them from PATH. For example, +given standard PATH settings, just do: +.P +.nf + # ln \-s /usr/bin/eatmydata /usr/local/bin/aptitude +.fi +.P +and enjoy sync\-free aptitude system-wide. +.SH CAVEAT +.P +When using \fBeatmydata\fR with \fBsetarch\fR (including alias such as +\fBlinux32\fR), or anyway with chroots with a different architectures than the +host's, make sure to install the matching architecture of +\fBlibeatmydata1\fR both in the \fBsetarch\fR environment and host's. +.P +Trying to load libeatmydata manually (without using the wrapper script) and +using it through a chroot, especially if the eatmydata version differ between +outside and inside, is probably going to fail do the different position of the +library on the file system. +.br +The safest way to manually load libeatmydata is by setting the following two +environment variables (shell syntax): +.P +.nf + LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+"$LD_LIBRARY_PATH:"}/usr/lib/libeatmydata + LD_PRELOAD=${LD_PRELOAD:+"$LD_PRELOAD "}libeatmydata.so +.fi +.P +These two variables accounts the case of a Debian Jessie host with a Debian +Wheezy chroot, where the position of the library changed. diff --git a/libeatmydata-130.tar.gz.asc b/libeatmydata-130.tar.gz.asc new file mode 100644 index 0000000..b82b230 --- /dev/null +++ b/libeatmydata-130.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEwX7R9hXgeVdCrxrNU3A0KE4O+34FAmFjTcMACgkQU3A0KE4O ++36nAQ//dkkmhCwWORrMfKU3i8hOnaQgx3VWUntsei/B8tMpbEHL7EIs+X4DUM9D +kJLJ7OSS4twmNrbuKZj0QNGYEGLfyLGe69cXIkyT6dx6L3eaxllWbWkz0LCHgQjn +CtsvrDqulnc/KKAlLqgbBlG7yuF4wfPMMzzBBITby/mJ+JwKCxGZjkZcXc5nAtz2 +9AOmZLzGcw1EpDoH4qQ9lMXEiV78HAIKeoFmjrt/GDWtxMedUuVriHAYFBDik6Zi +uAlZfYQBP38rdNoFVlyJlWyu3QLrWjeViLbtOS3ZpAi+J3uj+D1t9NymRzXkCJ1h +KSlDchi4mkCJB1JGfuXC/bcq1tRVfbjQmpvA5Q1crI7SWqPT61DEfz9+JfNuVaP9 +pNYJBjIHLn1jyHpklgNeSkc/JeWYdPX8HGEfQ51drN1q3UoQ7E4QWbndYn8pZzbX +xmAGqET4ENMe8wW55sHaV6bournI9QxlBYM9jAQ2wqoo+E/sP8PCkR15natrIPGv +vYFT6NvptxO72q6vkQ4jXKbdkv45IgOYWcUJ/1D3Q6EGr9bsJYoslaQc6oh2erml ++zluS+Y28ESNO1008N2Trshp7w3Y7jiAqd+65MQtU16PFwnYWpO/gquDtxNABUVv +ng7J3QxloCOsvEUcqcpquormSwGADbv1sVuLsy64dVj7FEda0g8= +=MpLE +-----END PGP SIGNATURE----- diff --git a/libeatmydata.spec b/libeatmydata.spec new file mode 100644 index 0000000..d9f7ed8 --- /dev/null +++ b/libeatmydata.spec @@ -0,0 +1,85 @@ +Name: libeatmydata +Version: 130 +Release: 3%{?dist} +Group: Development/Tools +License: GPLv3 +Summary: PRELOAD library that disables fcommonly ssed with eatmydata wrapper +BuildRequires: gcc, make, libtool, strace, gnupg +Source0: https://www.flamingspork.com/projects/libeatmydata/%{name}-%{version}.tar.gz +Source1: https://www.flamingspork.com/projects/libeatmydata/%{name}-%{version}.tar.gz.asc +Source2: https://flamingspork.com/stewart.gpg +# Man page to be included upstream soon... +Source3: https://salsa.debian.org/debian/libeatmydata/-/raw/048c4ea3/debian/eatmydata.1 +URL: https://www.flamingspork.com/projects/libeatmydata/ +%if !(0%{?rhel} && 0%{?rhel} < 8) +Recommends: eatmydata +%endif + +%description +This package contains a small LD_PRELOAD library (libeatmydata) and a couple +of helper utilities (eatmydata) designed to transparently disable fsync and +friends (like open(O_SYNC)). This has two side-effects: making software that +writes data safely to disk a lot quicker and making this software no longer +crash safe. + +%package -n eatmydata +Summary: Utility to disable fsync() and friends for the command specified +# Explict requires as the main package is a shell script that does an LD_PRELOAD +# and thus we don't get automatic dependencies! +Requires: %{name} +BuildArch: noarch +%description -n eatmydata +The eatmydata script does the heavy lifting of LD_PRELOAD for the command +specified. You can also symlink a command to the eatmydata wrapper and the +wrapper will find the command in PATH and then execute it after setting up +the libeatmydata LD_PRELOAD + +%prep +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' +%autosetup + +%build +%configure --enable-static=no +%make_build + +%install + +%make_install +mkdir -p %{buildroot}%{_mandir}/man1/ +install -m444 -p %{SOURCE3} %{buildroot}%{_mandir}/man1/ + +%if !0%{?fedora} || 0%{?fedora} < 36 +find %{buildroot} -name "*.la" -type f -delete +%endif + +%check +%{__make} check + +%files -n eatmydata +%{_bindir}/eatmydata +%{_libexecdir}/eatmydata.sh +%{_mandir}/man1/eatmydata.1* +%doc README.md AUTHORS +%license COPYING + +%files +%{_libdir}/*.so + +%changelog +* Tue May 31 2022 Stewart Smith - 130-3 +- Fixes for submitting packaging to Fedora +* Fri May 27 2022 Stewart Smith - 130-2 +- Package for Fedora +* Sun Oct 10 2021 Stewart Smith - 130-1 +- version 130, add syncfs() wrapper +* Sat Apr 10 2021 Stewart Smith - 129-1 +- Version 129, as always, bug fix release +* Fri Jul 26 2013 Jaroslav Kortus - 82-1 +- Version 82, bug fix release +- spec file changed to meet fedora packaging guidelines +* Fri May 18 2013 Stewart Smith - 79 +- Version 79, bug fix release +* Fri Mar 08 2013 Alexey Bychko - 0.1 +- Version 0.1, initial package for RPM-based systems + + diff --git a/sources b/sources new file mode 100644 index 0000000..c661a76 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (libeatmydata-130.tar.gz) = 80edeee1b39e14d10e7d04d7fff63a233119c6e13216e92ec786cc41ecd79eb58937da0e621aaef697490e9fb285f3e1109b786ee6967fa1736bb4879e100f18 diff --git a/stewart.gpg b/stewart.gpg new file mode 100644 index 0000000..0756ced --- /dev/null +++ b/stewart.gpg @@ -0,0 +1,54 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +0WogF0Svqo2+Oyor1tuI +=A+Nl +-----END PGP PUBLIC KEY BLOCK-----