diff --git a/libvirt/libvirt-0.6.2.tar.gz b/libvirt/libvirt-0.6.2.tar.gz new file mode 100644 index 0000000..c81b6fb Binary files /dev/null and b/libvirt/libvirt-0.6.2.tar.gz differ diff --git a/libvirt/libvirt.spec b/libvirt/libvirt.spec new file mode 100644 index 0000000..b641112 --- /dev/null +++ b/libvirt/libvirt.spec @@ -0,0 +1,711 @@ +# -*- rpm-spec -*- + +%define with_xen 0%{!?_without_xen:1} +%define with_xen_proxy 0%{!?_without_xen_proxy:1} +%define with_qemu 0%{!?_without_qemu:1} +%define with_openvz 0%{!?_without_openvz:1} +%define with_lxc 0%{!?_without_lxc:1} +%define with_sasl 0%{!?_without_sasl:1} +%define with_avahi 0%{!?_without_avahi:1} +%define with_polkit 0%{!?_without_polkit:0} +%define with_python 0%{!?_without_python:1} +%define with_libvirtd 0%{!?_without_libvirtd:1} +%define with_uml 0%{!?_without_uml:1} +%define with_network 0%{!?_without_network:1} + +# Xen is available only on i386 x86_64 ia64 +%ifnarch i386 i586 i686 x86_64 ia64 +%define with_xen 0 +%endif + +%if ! %{with_xen} +%define with_xen_proxy 0 +%endif + +%if 0%{?fedora} +%ifarch ppc64 +%define with_qemu 0 +%endif +%endif + +%if 0%{?fedora} >= 8 +%define with_polkit 0%{!?_without_polkit:1} +%define with_xen_proxy 0 +%endif + +# +# If building on RHEL switch on the specific support +# for the specific Xen version +# +%if 0%{?fedora} +%define with_rhel5 0 +%else +%define with_rhel5 1 +%endif + + +Summary: Library providing a simple API virtualization +Name: libvirt +Version: 0.6.2 +Release: 1%{?dist}%{?extra_release} +License: LGPLv2+ +Group: Development/Libraries +Source: libvirt-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +URL: http://libvirt.org/ +%if %{with_python} +BuildRequires: python python-devel +%endif +Requires: libxml2 +Requires: readline +Requires: ncurses +Requires: dnsmasq +Requires: bridge-utils +Requires: iptables +# needed for device enumeration +Requires: hal +# So remote clients can access libvirt over SSH tunnel +# (client invokes 'nc' against the UNIX socket on the server) +Requires: nc +%if %{with_sasl} +Requires: cyrus-sasl +# Not technically required, but makes 'out-of-box' config +# work correctly & doesn't have onerous dependencies +Requires: cyrus-sasl-md5 +%endif +%if %{with_polkit} +Requires: PolicyKit >= 0.6 +%endif +# For mount/umount in FS driver +BuildRequires: util-linux +# For showmount in FS driver (netfs discovery) +BuildRequires: nfs-utils +Requires: nfs-utils +%if %{with_qemu} +# From QEMU RPMs +Requires: /usr/bin/qemu-img +%else +%if %{with_xen} +# From Xen RPMs +Requires: /usr/sbin/qcow-create +%endif +%endif +# For LVM drivers +Requires: lvm2 +# For ISCSI driver +Requires: iscsi-initiator-utils +# For disk driver +Requires: parted +%if %{with_xen} +BuildRequires: xen-devel +%endif +BuildRequires: libxml2-devel +BuildRequires: xhtml1-dtds +BuildRequires: readline-devel +BuildRequires: ncurses-devel +BuildRequires: gettext +BuildRequires: gnutls-devel +BuildRequires: hal-devel +%if %{with_avahi} +BuildRequires: avahi-devel +%endif +BuildRequires: libselinux-devel +BuildRequires: dnsmasq +BuildRequires: bridge-utils +%if %{with_sasl} +BuildRequires: cyrus-sasl-devel +%endif +%if %{with_polkit} +BuildRequires: PolicyKit-devel >= 0.6 +%endif +# For mount/umount in FS driver +BuildRequires: util-linux +%if %{with_qemu} +# From QEMU RPMs +BuildRequires: /usr/bin/qemu-img +%else +%if %{with_xen} +# From Xen RPMs +BuildRequires: /usr/sbin/qcow-create +%endif +%endif +# For LVM drivers +BuildRequires: lvm2 +# For ISCSI driver +BuildRequires: iscsi-initiator-utils +# For disk driver +BuildRequires: parted-devel +# For QEMU/LXC numa info +BuildRequires: numactl-devel +Obsoletes: libvir + +# Fedora build root suckage +BuildRequires: gawk + +%description +Libvirt is a C toolkit to interact with the virtualization capabilities +of recent versions of Linux (and other OSes). + +%package devel +Summary: Libraries, includes, etc. to compile with the libvirt library +Group: Development/Libraries +Requires: libvirt = %{version} +Requires: pkgconfig +%if %{with_xen} +Requires: xen-devel +%endif +Obsoletes: libvir-devel + +%description devel +Includes and documentations for the C library providing an API to use +the virtualization capabilities of recent versions of Linux (and other OSes). + +%if %{with_python} +%package python +Summary: Python bindings for the libvirt library +Group: Development/Libraries +Requires: libvirt = %{version} +Obsoletes: libvir-python + +%description python +The libvirt-python package contains a module that permits applications +written in the Python programming language to use the interface +supplied by the libvirt library to use the virtualization capabilities +of recent versions of Linux (and other OSes). +%endif + +%prep +%setup -q + +%build +%if ! %{with_xen} +%define _without_xen --without-xen +%endif + +%if ! %{with_qemu} +%define _without_qemu --without-qemu +%endif + +%if ! %{with_openvz} +%define _without_openvz --without-openvz +%endif + +%if ! %{with_lxc} +%define _without_lxc --without-lxc +%endif + +%if ! %{with_sasl} +%define _without_sasl --without-sasl +%endif + +%if ! %{with_avahi} +%define _without_avahi --without-avahi +%endif + +%if ! %{with_polkit} +%define _without_polkit --without-polkit +%endif + +%if ! %{with_python} +%define _without_python --without-python +%endif + +%if ! %{with_libvirtd} +%define _without_libvirtd --without-libvirtd +%endif + +%if ! %{with_uml} +%define _without_uml --without-uml +%endif + +%if %{with_rhel5} +%define _with_rhel5_api --with-rhel5-api +%endif + +%if ! %{with_network} +%define _without_network --without-network +%endif + +%configure %{?_without_xen} \ + %{?_without_qemu} \ + %{?_without_openvz} \ + %{?_without_lxc} \ + %{?_without_sasl} \ + %{?_without_avahi} \ + %{?_without_polkit} \ + %{?_without_python} \ + %{?_without_libvirtd} \ + %{?_without_uml} \ + %{?_without_network} \ + %{?_with_rhel5_api} \ + --with-init-script=redhat \ + --with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \ + --with-remote-file=%{_localstatedir}/run/libvirtd.pid +make %{?_smp_mflags} + +%install +rm -fr %{buildroot} + +%makeinstall +(cd docs/examples ; make clean ; rm -rf .deps Makefile Makefile.in) +(cd docs/examples/python ; rm -rf .deps Makefile Makefile.in) +(cd examples/hellolibvirt ; make clean ; rm -rf .deps .libs Makefile Makefile.in) +(cd examples/domain-events/events-c ; make clean ;rm -rf .deps .libs Makefile Makefile.in) +rm -f $RPM_BUILD_ROOT%{_libdir}/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a + +%if %{with_qemu} +# We don't want to install /etc/libvirt/qemu/networks in the main %files list +# because if the admin wants to delete the default network completely, we don't +# want to end up re-incarnating it on every RPM upgrade. +install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/ +cp $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml \ + $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml +# Strip auto-generated UUID - we need it generated per-install +sed -i -e "//d" $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml +%else +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml +rm -f $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug +%endif +%find_lang %{name} + +%if ! %{with_python} +rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version} +%endif + +%if ! %{with_qemu} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf +%endif + +%clean +rm -fr %{buildroot} + +%post +/sbin/ldconfig + +%if %{with_libvirtd} +%if %{with_qemu} +# We want to install the default network for initial RPM installs +# or on the first upgrade from a non-network aware libvirt only. +# We check this by looking to see if the daemon is already installed +/sbin/chkconfig --list libvirtd 1>/dev/null 2>&1 +if [ $? != 0 -a ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ] +then + UUID=`/usr/bin/uuidgen` + sed -e "s,,\n $UUID," \ + < %{_datadir}/libvirt/networks/default.xml \ + > %{_sysconfdir}/libvirt/qemu/networks/default.xml + ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml +fi +%endif + +/sbin/chkconfig --add libvirtd +%endif + +%preun +%if %{with_libvirtd} +if [ $1 = 0 ]; then + /sbin/service libvirtd stop 1>/dev/null 2>&1 + /sbin/chkconfig --del libvirtd +fi +%endif + +%postun +/sbin/ldconfig + +%files -f %{name}.lang +%defattr(-, root, root) + +%doc AUTHORS ChangeLog NEWS README COPYING.LIB TODO +%doc %{_mandir}/man1/virsh.1* +%{_bindir}/virsh +%{_libdir}/lib*.so.* +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ + +%if %{with_qemu} +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart +%endif + +%if %{with_libvirtd} +%{_sysconfdir}/rc.d/init.d/libvirtd +%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd +%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd +%endif + +%if %{with_qemu} +%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf +%endif + +%if %{with_sasl} +%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf +%endif + +%if %{with_qemu} +%dir %{_datadir}/libvirt/ +%dir %{_datadir}/libvirt/networks/ +%{_datadir}/libvirt/networks/default.xml +%endif + +%dir %{_datadir}/libvirt/ +%dir %{_datadir}/libvirt/schemas/ + +%{_datadir}/libvirt/schemas/domain.rng +%{_datadir}/libvirt/schemas/network.rng +%{_datadir}/libvirt/schemas/storagepool.rng +%{_datadir}/libvirt/schemas/storagevol.rng +%{_datadir}/libvirt/schemas/nodedev.rng +%{_datadir}/libvirt/schemas/capability.rng + +%dir %{_localstatedir}/run/libvirt/ + +%dir %{_localstatedir}/lib/libvirt/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/images/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/boot/ + +%if %{with_qemu} +%dir %{_localstatedir}/run/libvirt/qemu/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/qemu/ +%endif +%if %{with_lxc} +%dir %{_localstatedir}/run/libvirt/lxc/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ +%endif +%if %{with_uml} +%dir %{_localstatedir}/run/libvirt/uml/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/uml/ +%endif +%if %{with_network} +%dir %{_localstatedir}/run/libvirt/network/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/iptables/filter/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/iptables/nat/ +%endif + +%if %{with_qemu} +%{_datadir}/augeas/lenses/libvirtd_qemu.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug +%endif + +%if %{with_libvirtd} +%{_datadir}/augeas/lenses/libvirtd.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd.aug +%endif + +%if %{with_polkit} +%{_datadir}/PolicyKit/policy/org.libvirt.unix.policy +%endif + +%if %{with_qemu} +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/ +%endif + +%if %{with_xen_proxy} +%attr(4755, root, root) %{_libexecdir}/libvirt_proxy +%endif + +%if %{with_lxc} +%attr(0755, root, root) %{_libexecdir}/libvirt_lxc +%endif + +%if %{with_libvirtd} +%attr(0755, root, root) %{_sbindir}/libvirtd +%endif + +%doc docs/*.xml + +%files devel +%defattr(-, root, root) + +%{_libdir}/lib*.so +%dir %{_includedir}/libvirt +%{_includedir}/libvirt/*.h +%{_libdir}/pkgconfig/libvirt.pc +%doc %{_datadir}/gtk-doc/html/libvirt/*.devhelp +%doc %{_datadir}/gtk-doc/html/libvirt/*.html +%doc %{_datadir}/gtk-doc/html/libvirt/*.png +%doc %{_datadir}/gtk-doc/html/libvirt/*.css + +%doc docs/*.html docs/html docs/*.gif +%doc docs/examples +%doc docs/libvirt-api.xml +%doc examples + +%if %{with_python} +%files python +%defattr(-, root, root) + +%doc AUTHORS NEWS README COPYING.LIB +%{_libdir}/python*/site-packages/libvirt.py* +%{_libdir}/python*/site-packages/libvirtmod* +%doc python/tests/*.py +%doc python/TODO +%doc python/libvirtclass.txt +%doc docs/examples/python +%endif + +%changelog +* Tue Nov 25 2008 Daniel Veillard - 0.5.0-1 +- release of 0.5.0 + +* Tue Sep 23 2008 Daniel Veillard - 0.4.6-1 +- release of 0.4.6 + +* Mon Sep 8 2008 Daniel Veillard - 0.4.5-1 +- release of 0.4.5 + +* Wed Jun 25 2008 Daniel Veillard - 0.4.4-1 +- release of 0.4.4 +- mostly a few bug fixes from 0.4.3 + +* Thu Jun 12 2008 Daniel Veillard - 0.4.3-1 +- release of 0.4.3 +- lots of bug fixes and small improvements + +* Tue Apr 8 2008 Daniel Veillard - 0.4.2-1 +- release of 0.4.2 +- lots of bug fixes and small improvements + +* Mon Mar 3 2008 Daniel Veillard - 0.4.1-1 +- Release of 0.4.1 +- Storage APIs +- xenner support +- lots of assorted improvements, bugfixes and cleanups +- documentation and localization improvements + +* Tue Dec 18 2007 Daniel Veillard - 0.4.0-1 +- Release of 0.4.0 +- SASL based authentication +- PolicyKit authentication +- improved NUMA and statistics support +- lots of assorted improvements, bugfixes and cleanups +- documentation and localization improvements + +* Sun Sep 30 2007 Daniel Veillard - 0.3.3-1 +- Release of 0.3.3 +- Avahi support +- NUMA support +- lots of assorted improvements, bugfixes and cleanups +- documentation and localization improvements + +* Tue Aug 21 2007 Daniel Veillard - 0.3.2-1 +- Release of 0.3.2 +- API for domains migration +- APIs for collecting statistics on disks and interfaces +- lots of assorted bugfixes and cleanups +- documentation and localization improvements + +* Tue Jul 24 2007 Daniel Veillard - 0.3.1-1 +- Release of 0.3.1 +- localtime clock support +- PS/2 and USB input devices +- lots of assorted bugfixes and cleanups +- documentation and localization improvements + +* Mon Jul 9 2007 Daniel Veillard - 0.3.0-1 +- Release of 0.3.0 +- Secure remote access support +- unification of daemons +- lots of assorted bugfixes and cleanups +- documentation and localization improvements + +* Fri Jun 8 2007 Daniel Veillard - 0.2.3-1 +- Release of 0.2.3 +- lot of assorted bugfixes and cleanups +- support for Xen-3.1 +- new scheduler API + +* Tue Apr 17 2007 Daniel Veillard - 0.2.2-1 +- Release of 0.2.2 +- lot of assorted bugfixes and cleanups +- preparing for Xen-3.0.5 + +* Thu Mar 22 2007 Jeremy Katz - 0.2.1-2.fc7 +- don't require xen; we don't need the daemon and can control non-xen now +- fix scriptlet error (need to own more directories) +- update description text + +* Fri Mar 16 2007 Daniel Veillard - 0.2.1-1 +- Release of 0.2.1 +- lot of bug and portability fixes +- Add support for network autostart and init scripts +- New API to detect the virtualization capabilities of a host +- Documentation updates + +* Fri Feb 23 2007 Daniel P. Berrange - 0.2.0-4.fc7 +- Fix loading of guest & network configs + +* Fri Feb 16 2007 Daniel P. Berrange - 0.2.0-3.fc7 +- Disable kqemu support since its not in Fedora qemu binary +- Fix for -vnc arg syntax change in 0.9.0 QEMU + +* Thu Feb 15 2007 Daniel P. Berrange - 0.2.0-2.fc7 +- Fixed path to qemu daemon for autostart +- Fixed generation of block in XML +- Pre-create config directory at startup + +* Wed Feb 14 2007 Daniel Veillard 0.2.0-1.fc7 +- support for KVM and QEmu +- support for network configuration +- assorted fixes + +* Mon Jan 22 2007 Daniel Veillard 0.1.11-1.fc7 +- finish inactive Xen domains support +- memory leak fix +- RelaxNG schemas for XML configs + +* Wed Dec 20 2006 Daniel Veillard 0.1.10-1.fc7 +- support for inactive Xen domains +- improved support for Xen display and vnc +- a few bug fixes +- localization updates + +* Thu Dec 7 2006 Jeremy Katz - 0.1.9-2 +- rebuild against python 2.5 + +* Wed Nov 29 2006 Daniel Veillard 0.1.9-1 +- better error reporting +- python bindings fixes and extensions +- add support for shareable drives +- add support for non-bridge style networking +- hot plug device support +- added support for inactive domains +- API to dump core of domains +- various bug fixes, cleanups and improvements +- updated the localization + +* Tue Nov 7 2006 Daniel Veillard 0.1.8-3 +- it's pkgconfig not pgkconfig ! + +* Mon Nov 6 2006 Daniel Veillard 0.1.8-2 +- fixing spec file, added %dist, -devel requires pkgconfig and xen-devel +- Resolves: rhbz#202320 + +* Mon Oct 16 2006 Daniel Veillard 0.1.8-1 +- fix missing page size detection code for ia64 +- fix mlock size when getting domain info list from hypervisor +- vcpu number initialization +- don't label crashed domains as shut off +- fix virsh man page +- blktapdd support for alternate drivers like blktap +- memory leak fixes (xend interface and XML parsing) +- compile fix +- mlock/munlock size fixes + +* Fri Sep 22 2006 Daniel Veillard 0.1.7-1 +- Fix bug when running against xen-3.0.3 hypercalls +- Fix memory bug when getting vcpus info from xend + +* Fri Sep 22 2006 Daniel Veillard 0.1.6-1 +- Support for localization +- Support for new Xen-3.0.3 cdrom and disk configuration +- Support for setting VNC port +- Fix bug when running against xen-3.0.2 hypercalls +- Fix reconnection problem when talking directly to http xend + +* Tue Sep 5 2006 Jeremy Katz - 0.1.5-3 +- patch from danpb to support new-format cd devices for HVM guests + +* Tue Sep 5 2006 Daniel Veillard 0.1.5-2 +- reactivating ia64 support + +* Tue Sep 5 2006 Daniel Veillard 0.1.5-1 +- new release +- bug fixes +- support for new hypervisor calls +- early code for config files and defined domains + +* Mon Sep 4 2006 Daniel Berrange - 0.1.4-5 +- add patch to address dom0_ops API breakage in Xen 3.0.3 tree + +* Mon Aug 28 2006 Jeremy Katz - 0.1.4-4 +- add patch to support paravirt framebuffer in Xen + +* Mon Aug 21 2006 Daniel Veillard 0.1.4-3 +- another patch to fix network handling in non-HVM guests + +* Thu Aug 17 2006 Daniel Veillard 0.1.4-2 +- patch to fix virParseUUID() + +* Wed Aug 16 2006 Daniel Veillard 0.1.4-1 +- vCPUs and affinity support +- more complete XML, console and boot options +- specific features support +- enforced read-only connections +- various improvements, bug fixes + +* Wed Aug 2 2006 Jeremy Katz - 0.1.3-6 +- add patch from pvetere to allow getting uuid from libvirt + +* Wed Aug 2 2006 Jeremy Katz - 0.1.3-5 +- build on ia64 now + +* Thu Jul 27 2006 Jeremy Katz - 0.1.3-4 +- don't BR xen, we just need xen-devel + +* Thu Jul 27 2006 Daniel Veillard 0.1.3-3 +- need rebuild since libxenstore is now versionned + +* Mon Jul 24 2006 Mark McLoughlin - 0.1.3-2 +- Add BuildRequires: xen-devel + +* Wed Jul 12 2006 Jesse Keating - 0.1.3-1.1 +- rebuild + +* Tue Jul 11 2006 Daniel Veillard 0.1.3-1 +- support for HVM Xen guests +- various bugfixes + +* Mon Jul 3 2006 Daniel Veillard 0.1.2-1 +- added a proxy mechanism for read only access using httpu +- fixed header includes paths + +* Wed Jun 21 2006 Daniel Veillard 0.1.1-1 +- extend and cleanup the driver infrastructure and code +- python examples +- extend uuid support +- bug fixes, buffer handling cleanups +- support for new Xen hypervisor API +- test driver for unit testing +- virsh --conect argument + +* Mon Apr 10 2006 Daniel Veillard 0.1.0-1 +- various fixes +- new APIs: for Node information and Reboot +- virsh improvements and extensions +- documentation updates and man page +- enhancement and fixes of the XML description format + +* Tue Feb 28 2006 Daniel Veillard 0.0.6-1 +- added error handling APIs +- small bug fixes +- improve python bindings +- augment documentation and regression tests + +* Thu Feb 23 2006 Daniel Veillard 0.0.5-1 +- new domain creation API +- new UUID based APIs +- more tests, documentation, devhelp +- bug fixes + +* Fri Feb 10 2006 Daniel Veillard 0.0.4-1 +- fixes some problems in 0.0.3 due to the change of names + +* Wed Feb 8 2006 Daniel Veillard 0.0.3-1 +- changed library name to libvirt from libvir, complete and test the python + bindings + +* Sun Jan 29 2006 Daniel Veillard 0.0.2-1 +- upstream release of 0.0.2, use xend, save and restore added, python bindings + fixed + +* Wed Nov 2 2005 Daniel Veillard 0.0.1-1 +- created