summaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
authorMichel Alexandre Salim <salimma@fedoraproject.org>2012-06-03 13:13:34 +0700
committerMichel Alexandre Salim <salimma@fedoraproject.org>2012-06-03 13:13:34 +0700
commitbcff82938a0f80858137aa9f84d1d4d9ac22bf36 (patch)
tree147a78eafcf0417c20c35aaf37a424720543595b /admin
parentd02269009c5f0402f120e8d42e6d291c1277cc24 (diff)
downloadspecs-bcff82938a0f80858137aa9f84d1d4d9ac22bf36.tar.gz
specs-bcff82938a0f80858137aa9f84d1d4d9ac22bf36.tar.xz
specs-bcff82938a0f80858137aa9f84d1d4d9ac22bf36.zip
Spec files for the Obnam backup tool
Diffstat (limited to 'admin')
-rw-r--r--admin/cmdtest.spec52
-rw-r--r--admin/genbackupdata.spec66
-rw-r--r--admin/obnam.spec95
-rw-r--r--admin/python-cliapp.spec57
-rw-r--r--admin/python-coverage-test-runner.spec49
-rw-r--r--admin/python-larch.spec99
-rw-r--r--admin/python-tracing.spec65
-rw-r--r--admin/python-ttystatus.spec71
8 files changed, 554 insertions, 0 deletions
diff --git a/admin/cmdtest.spec b/admin/cmdtest.spec
new file mode 100644
index 0000000..85245a6
--- /dev/null
+++ b/admin/cmdtest.spec
@@ -0,0 +1,52 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+Name: cmdtest
+Version: 0.3
+Release: 1%{?dist}
+Summary: Black-box testing for Unix command line tools
+
+# ask upstream to include license text
+License: GPLv3+
+URL: http://liw.fi/%{name}/
+Source0: http://code.liw.fi/debian/pool/main/c/%{name}/%{name}_%{version}.orig.tar.gz
+
+BuildArch: noarch
+BuildRequires: python-coverage-test-runner
+BuildRequires: python-cliapp
+BuildRequires: python-ttystatus
+Requires: python-cliapp
+Requires: python-ttystatus
+
+%description
+cmdtest black box tests Unix command line tools. Roughly, it is given
+a command line and input files, and the expected output, and it
+verifies that the command line produces the expected output. If not,
+it reports a problem, and shows the differences.
+
+
+%prep
+%setup -q
+
+
+%build
+%{__python} setup.py build
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%check
+%{__python} setup.py check
+
+
+%files
+%doc NEWS README
+%{_mandir}/man1/cmdtest.1*
+%{_bindir}/cmdtest
+%{python_sitelib}/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 0.3-1
+- Initial package
diff --git a/admin/genbackupdata.spec b/admin/genbackupdata.spec
new file mode 100644
index 0000000..db88f1b
--- /dev/null
+++ b/admin/genbackupdata.spec
@@ -0,0 +1,66 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+Name: genbackupdata
+Version: 1.6
+Release: 1%{?dist}
+Summary: A program to generate test data for testing backup software
+
+# ask upstream to include license text
+License: GPLv2+
+URL: http://liw.fi/%{name}/
+Source0: http://code.liw.fi/debian/pool/main/g/%{name}/%{name}_%{version}.orig.tar.gz
+
+BuildArch: noarch
+# build-time
+BuildRequires: python-coverage-test-runner
+# build- and run-time
+BuildRequires: python-cliapp
+BuildRequires: python-ttystatus
+Requires: python-cliapp
+Requires: python-ttystatus
+
+%description
+genbackupdata creates or modifies directory trees in ways that
+simulate real filesystems sufficiently well for performance testing of
+backup software. For example, it can create files that are a mix of
+small text files and big binary files, with the binary files
+containing random binary junk which compresses badly. This can then be
+backed up, and later the directory tree can be changed by creating new
+files, modifying files, or deleting or renaming files. The backup can
+then be run again.
+
+The output is deterministic, such that for a given set of parameters
+the same output always happens. Thus it is more efficient to
+distribute genbackupdata and a set of parameters between people who
+wish to benchmark backup software than distributing very large test
+sets.
+
+
+%prep
+%setup -q -n %{name}_%{version}.orig
+
+
+%build
+%{__python} setup.py build
+# build manpage
+make genbackupdata.1
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%check
+make check
+
+
+%files
+%doc NEWS README
+%{_mandir}/man1/genbackupdata.1*
+%{_bindir}/genbackupdata
+%{python_sitelib}/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 1.6-1
+- Initial package
diff --git a/admin/obnam.spec b/admin/obnam.spec
new file mode 100644
index 0000000..ed71c3a
--- /dev/null
+++ b/admin/obnam.spec
@@ -0,0 +1,95 @@
+%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
+
+# lock-dependent tests currently fail
+%bcond_with locktests
+
+Name: obnam
+Version: 1.0
+Release: 1%{?dist}
+Summary: An easy, secure backup program
+
+License: GPLv3+
+URL: http://liw.fi/obnam/
+Source0: http://code.liw.fi/debian/pool/main/o/obnam/obnam_%{version}.orig.tar.gz
+
+# build-time
+BuildRequires: genbackupdata
+BuildRequires: python-devel
+BuildRequires: libattr-devel
+# build- and run-time dependencies
+BuildRequires: python-cliapp
+BuildRequires: python-larch
+BuildRequires: python-paramiko
+BuildRequires: python-tracing
+Requires: python-cliapp
+Requires: python-larch
+Requires: python-paramiko
+Requires: python-tracing
+
+%description
+Obnam is an easy, secure backup program. Backups can be stored on
+local hard disks, or online via the SSH SFTP protocol. The backup
+server, if used, does not require any special software, on top of SSH.
+
+Some features that may interest you:
+
+ * Snapshot backups. Every generation looks like a complete snapshot,
+ so you don't need to care about full versus incremental backups, or
+ rotate real or virtual tapes.
+
+ * Data de-duplication, across files, and backup generations. If the
+ backup repository already contains a particular chunk of data, it
+ will be re-used, even if it was in another file in an older backup
+ generation. This way, you don't need to worry about moving around
+ large files, or modifying them.
+
+ * Encrypted backups, using GnuPG.
+
+Obnam can do push or pull backups, depending on what you need. You can
+run Obnam on the client, and push backups to the server, or on the
+server, and pull from the client over SFTP. However, access to live
+data over SFTP is currently somewhat limited and fragile, so it is not
+recommended.
+
+
+%prep
+%setup -q
+
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" %{__python} setup.py build
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%check
+%if ! %{with locktests}
+# lock-dependent tests currently fails; need to debug
+for t in test-locking crash-test;
+do
+ mv $t{,.off}
+ %{__ln_s} $(which true) $t
+done
+%endif
+
+# check uses the source tree, not the build one
+# but exercises the compiled library
+# so symlink it to the source tree first
+(cd obnamlib && %{__ln_s} ../build/lib.linux-*/obnamlib/_obnam.so .)
+
+%{__python} setup.py check
+
+
+%files
+%doc COPYING NEWS README
+%{_mandir}/man1/obnam*.1*
+%{_bindir}/obnam*
+%{python_sitearch}/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 1.0-1
+- Initial package
+
diff --git a/admin/python-cliapp.spec b/admin/python-cliapp.spec
new file mode 100644
index 0000000..680a9fb
--- /dev/null
+++ b/admin/python-cliapp.spec
@@ -0,0 +1,57 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+%global pkgname cliapp
+
+Name: python-%{pkgname}
+Version: 0.29
+Release: 1%{?dist}
+Summary: Python framework for Unix command line programs
+
+License: GPLv2+
+URL: http://liw.fi/%{pkgname}/
+Source0: http://code.liw.fi/debian/pool/main/p/%{name}/%{name}_%{version}.orig.tar.gz
+
+BuildArch: noarch
+BuildRequires: python-sphinx
+
+%description
+cliapp is a Python framework for Unix-like command line programs. It
+contains the typical stuff such programs need to do, such as parsing
+the command line for options, and iterating over input files.
+
+
+%package doc
+Summary: Documentation for %{pkgname}
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+This package contains the documentation for %{pkgname}, a Python
+framework for Unix command line programs.
+
+
+%prep
+%setup -q -n %{pkgname}-%{version}
+
+
+%build
+%{__python} setup.py build
+# Build documentation
+make -C doc html
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%files
+%doc COPYING NEWS README
+%{_mandir}/man5/cliapp.5*
+%{python_sitelib}/*
+
+%files doc
+%doc doc/_build/html/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 0.29-1
+- Initial package
diff --git a/admin/python-coverage-test-runner.spec b/admin/python-coverage-test-runner.spec
new file mode 100644
index 0000000..d736ce7
--- /dev/null
+++ b/admin/python-coverage-test-runner.spec
@@ -0,0 +1,49 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+%global pkgname CoverageTestRunner
+%global prjname coverage-test-runner
+
+Name: python-%{prjname}
+Version: 1.0
+Release: 1%{?dist}
+Summary: Python module for enforcing code coverage completeness
+
+License: GPLv3+
+URL: http://liw.fi/%{prjname}/
+Source0: http://code.liw.fi/%{prjname}/%{pkgname}-%{version}.tar.gz
+
+BuildArch: noarch
+Requires: python-coverage
+
+%description
+CoverageTestRunner is a Python module for running unit tests and
+failing them if the unit test module does not exercise all statements
+in the module it tests.
+
+For example, unit tests in module foo_tests.py are supposed to test
+everything in the foo.py module, and if they don't, it's a bug in the
+test coverage. It does not matter if other tests happen to test the
+missing parts. The unit tests for the module should test everything in
+that module.
+
+
+%prep
+%setup -q -n %{pkgname}-%{version}
+
+
+%build
+%{__python} setup.py build
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%files
+%doc COPYING README
+%{python_sitelib}/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 1.0-1
+- Initial package
diff --git a/admin/python-larch.spec b/admin/python-larch.spec
new file mode 100644
index 0000000..b780c54
--- /dev/null
+++ b/admin/python-larch.spec
@@ -0,0 +1,99 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+%global pkgname larch
+
+Name: python-%{pkgname}
+Version: 1.20120527
+Release: 1%{?dist}
+Summary: Python B-tree library
+
+License: GPLv3+
+URL: http://liw.fi/%{pkgname}/
+Source0: http://code.liw.fi/debian/pool/main/p/%{name}/%{name}_%{version}.orig.tar.gz
+
+BuildArch: noarch
+# build-time only
+BuildRequires: cmdtest
+BuildRequires: python-coverage-test-runner
+BuildRequires: python-sphinx
+# build- and run-time
+BuildRequires: python-cliapp
+BuildRequires: python-tracing
+BuildRequires: python-ttystatus
+Requires: python-cliapp
+Requires: python-tracing
+Requires: python-ttystatus
+
+%description
+This is an implementation of particular kind of B-tree, based on
+research by Ohad Rodeh. See "B-trees, Shadowing, and Clones" (copied
+here with permission of author) for details on the data
+structure. This is the same data structure that btrfs uses. Note that
+my implementation is independent from the btrfs one, and might differ
+from what the paper describes.
+
+The distinctive feature of this B-tree is that a node is never
+modified (sort-of). Instead, all updates are done by
+copy-on-write. Among other things, this makes it easy to clone a tree,
+and modify only the clone, while other processes access the original
+tree. This is utterly wonderful for my backup application, and that's
+the reason I wrote larch in the first place.
+
+I have tried to keep the implementation generic and flexible, so that
+you may use it in a variety of situations. For example, the tree
+itself does not decide where its nodes are stored: you provide a class
+that does that for it. I have two implementations of the NodeStore
+class, one for in-memory and one for on-disk storage.
+
+The tree attempts to guarantee this: all modifications you make will
+be safely stored in the node store when the larch.Forest.commit method
+is called. After that, unless you actually modify the committed tree
+yourself, it will be safe from further modifications. (You need to
+take care to create a new tree for further modifications, though.)
+
+
+%package doc
+Summary: Documentation for %{pkgname}
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+This package contains the documentation for %{pkgname}, a Python
+framework for Unix command line programs.
+
+
+%prep
+%setup -q -n %{pkgname}-%{version}
+
+
+%build
+%{__python} setup.py build
+# Build documentation
+make
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+# manpage not installed automatically yet
+mkdir -p %{buildroot}%{_mandir}/man1
+cp -p fsck-larch.1 %{buildroot}%{_mandir}/man1/
+
+
+%check
+# some errors occur though they don't stop the checking process;
+# verify later
+make check
+
+
+%files
+%doc COPYING NEWS README
+%{_mandir}/man1/fsck-larch.1*
+%{_bindir}/fsck-larch
+%{python_sitelib}/*
+
+%files doc
+%doc doc/_build/html/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 1.20120527-1
+- Initial package
diff --git a/admin/python-tracing.spec b/admin/python-tracing.spec
new file mode 100644
index 0000000..e352eec
--- /dev/null
+++ b/admin/python-tracing.spec
@@ -0,0 +1,65 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+%global pkgname tracing
+
+Name: python-%{pkgname}
+Version: 0.6
+Release: 1%{?dist}
+Summary: Python debug logging helper
+
+# ask upstream to include license text
+License: GPLv3+
+URL: http://liw.fi/%{pkgname}/
+Source0: http://code.liw.fi/debian/pool/main/p/%{name}/%{name}_%{version}.orig.tar.gz
+
+BuildArch: noarch
+BuildRequires: python-sphinx
+
+%description
+The Python library tracing helps with logging debug messages. It
+provides a couple of functions for logging debug messages, and allows
+the user to enable or disable logging for particular code modules.
+
+It is sometimes practical to add a lot of debugging log messages to a
+program, but having them enabled all the time results in very large
+log files. Also, logging that much takes quite a bit of time.
+
+This module provides a way to turn such debugging or tracing messages
+on and off, based on the filename they occur in. The logging can that
+be left in the code, and only enabled when it is needed.
+
+
+%package doc
+Summary: Documentation for %{pkgname}
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+This package contains the documentation for %{pkgname}, a Python debug
+logging helper.
+
+
+%prep
+%setup -q -n %{pkgname}-%{version}
+
+
+%build
+%{__python} setup.py build
+# Build documentation
+make -C doc html
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%files
+%doc NEWS README
+%{python_sitelib}/*
+
+%files doc
+%doc doc/_build/html/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 0.6-1
+- Initial package
diff --git a/admin/python-ttystatus.spec b/admin/python-ttystatus.spec
new file mode 100644
index 0000000..93e7d5d
--- /dev/null
+++ b/admin/python-ttystatus.spec
@@ -0,0 +1,71 @@
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+
+%global pkgname ttystatus
+
+Name: python-%{pkgname}
+Version: 0.18
+Release: 1%{?dist}
+Summary: Progress and status updates on terminals for Python
+
+License: GPLv3+
+URL: http://liw.fi/%{pkgname}/
+Source0: http://code.liw.fi/debian/pool/main/p/%{name}/%{name}_%{version}.orig.tar.gz
+
+BuildArch: noarch
+BuildRequires: python-coverage-test-runner
+BuildRequires: python-sphinx
+
+%description
+ttystatus is a Python library for showing progress reporting and
+status updates on terminals, for (Unix) command line programs. Output
+is automatically adapted to the width of the terminal: truncated if it
+does not fit, and re-sized if the terminal size changes.
+
+Output is provided via widgets. Each widgets formats some data into a
+suitable form for output. It gets the data either via its initializer,
+or from key/value pairs maintained by the master object. The values
+are set by the user. Every time a value is updated, widgets get
+updated (although the terminal is only updated every so often to give
+user time to actually read the output).
+
+
+%package doc
+Summary: Documentation for %{pkgname}
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+This package contains the documentation for %{pkgname}, a Python
+library providing progress and status updates on terminals.
+
+
+%prep
+%setup -q -n %{pkgname}-%{version}
+
+
+%build
+%{__python} setup.py build
+# Build documentation
+make
+
+
+%install
+%{__python} setup.py install -O1 --skip-build --root %{buildroot}
+
+
+%check
+# note: does not actually fail when code coverage is incomplete, but
+# in any case the result should be advisory
+make check
+
+
+%files
+%doc COPYING NEWS README
+%{python_sitelib}/*
+
+%files doc
+%doc doc/_build/html/*
+
+
+%changelog
+* Sun Jun 3 2012 Michel Salim <salimma@fedoraproject.org> - 0.18-1
+- Initial package