From: Jakub Bogusz Date: Mon, 7 Jan 2013 18:40:26 +0000 (+0100) Subject: - new X-Git-Tag: auto/th/libldm-0.2.3-1~1 X-Git-Url: http://git.pld-linux.org/gitweb.cgi?p=packages%2Flibldm.git;a=commitdiff_plain;h=f74752307705e49dcf452cd50142588c6eb54d79 - new --- f74752307705e49dcf452cd50142588c6eb54d79 diff --git a/libldm-warnings.patch b/libldm-warnings.patch new file mode 100644 index 0000000..92fea1a --- /dev/null +++ b/libldm-warnings.patch @@ -0,0 +1,171 @@ +--- libldm-0.2.3/src/Makefile.am.orig 2012-09-20 12:31:03.000000000 +0200 ++++ libldm-0.2.3/src/Makefile.am 2013-01-07 19:20:40.782494058 +0100 +@@ -15,7 +15,7 @@ + # along with this program. If not, see . + + AM_CFLAGS = -Wall -Werror -Wshadow -Wextra \ +- -Wno-unused-local-typedefs \ ++ -Wno-missing-field-initializers \ + -Wno-unused-parameter + + libname = libldm-1.0.la +--- libldm-0.2.3/src/mbr.c.orig 2012-07-23 17:47:49.000000000 +0200 ++++ libldm-0.2.3/src/mbr.c 2013-01-07 19:20:16.992494554 +0100 +@@ -47,13 +47,13 @@ + { + struct _mbr _mbr; + +- size_t read = 0; +- while (read < sizeof(_mbr)) { +- ssize_t in = pread(fd, &_mbr + read, sizeof(struct _mbr) - read, read); ++ size_t nread = 0; ++ while (nread < sizeof(_mbr)) { ++ ssize_t in = pread(fd, &_mbr + nread, sizeof(struct _mbr) - nread, nread); + if (in == 0) return -MBR_ERROR_INVALID; + if (in == -1) return -MBR_ERROR_READ; + +- read += in; ++ nread += in; + } + + if (_mbr.magic[0] != 0x55 || _mbr.magic[1] != 0xAA) +--- libldm-0.2.3/src/gpt.c.orig 2012-09-20 12:31:03.000000000 +0200 ++++ libldm-0.2.3/src/gpt.c 2013-01-07 19:29:04.812483553 +0100 +@@ -82,14 +82,14 @@ + const off_t gpt_start = secsize; + + struct _gpt_head head; +- size_t read = 0; +- while (read < sizeof(head)) { +- ssize_t in = pread(fd, &head + read, sizeof(head) - read, +- read + gpt_start); ++ size_t nread = 0; ++ while (nread < sizeof(head)) { ++ ssize_t in = pread(fd, &head + nread, sizeof(head) - nread, ++ nread + gpt_start); + if (in == 0) return -GPT_ERROR_INVALID; + if (in == -1) return -GPT_ERROR_READ; + +- read += in; ++ nread += in; + } + + if (memcmp(head.magic, "EFI PART", 8) != 0) return -GPT_ERROR_INVALID; +@@ -111,9 +111,9 @@ + + struct _gpt *_gpt = (*h)->gpt; + memcpy(_gpt, &head, sizeof(head)); +- while (read < le32toh(head.size)) { +- ssize_t in = pread(fd, (char *)(_gpt) + read, le32toh(head.size) - read, +- read + gpt_start); ++ while (nread < le32toh(head.size)) { ++ ssize_t in = pread(fd, (char *)(_gpt) + nread, le32toh(head.size) - nread, ++ nread + gpt_start); + if (in == 0) { + err = -GPT_ERROR_INVALID; + goto error; +@@ -123,7 +123,7 @@ + goto error; + } + +- read += in; ++ nread += in; + } + + uint32_t header_crc = _gpt->header_crc; +@@ -151,10 +151,10 @@ + if ((*h)->pte_array == NULL) abort(); + + const off_t pte_array_start = _gpt->pte_array_start_lba * secsize; +- read = 0; +- while (read < pte_array_size) { +- ssize_t in = pread(fd, (*h)->pte_array + read, pte_array_size - read, +- read + pte_array_start); ++ nread = 0; ++ while (nread < pte_array_size) { ++ ssize_t in = pread(fd, (*h)->pte_array + nread, pte_array_size - nread, ++ nread + pte_array_start); + if (in == 0) { + err = -GPT_ERROR_INVALID; + goto error; +@@ -164,7 +164,7 @@ + goto error; + } + +- read += in; ++ nread += in; + } + + crc = crc32(0L, Z_NULL, 0); +--- libldm-0.2.3/src/ldm.c.orig 2012-09-21 12:21:17.000000000 +0200 ++++ libldm-0.2.3/src/ldm.c 2013-01-07 19:31:35.259147085 +0100 +@@ -1170,15 +1170,15 @@ + void ** const config, GError ** const err) + { + /* Sanity check ldm_config_start and ldm_config_size */ +- struct stat stat; +- if (fstat(fd, &stat) == -1) { ++ struct stat sstat; ++ if (fstat(fd, &sstat) == -1) { + g_set_error(err, LDM_ERROR, LDM_ERROR_IO, + "Unable to stat %s: %m", path); + return FALSE; + } + +- uint64_t size = stat.st_size; +- if (S_ISBLK(stat.st_mode)) { ++ uint64_t size = sstat.st_size; ++ if (S_ISBLK(sstat.st_mode)) { + if (ioctl(fd, BLKGETSIZE64, &size) == -1) { + g_set_error(err, LDM_ERROR, LDM_ERROR_IO, + "Unable to get block device size for %s: %m", path); +@@ -1205,10 +1205,10 @@ + } + + *config = g_malloc(config_size); +- size_t read = 0; +- while (read < config_size) { +- ssize_t in = pread(fd, *config + read, config_size - read, +- config_start + read); ++ size_t nread = 0; ++ while (nread < config_size) { ++ ssize_t in = pread(fd, *config + nread, config_size - nread, ++ config_start + nread); + if (in == 0) { + g_set_error(err, LDM_ERROR, LDM_ERROR_INVALID, + "%s contains invalid LDM metadata", path); +@@ -1221,7 +1221,7 @@ + goto error; + } + +- read += in; ++ nread += in; + } + + return TRUE; +@@ -1236,11 +1236,11 @@ + const uint64_t ph_start, + struct _privhead * const privhead, GError **err) + { +- size_t read = 0; +- while (read < sizeof(*privhead)) { +- ssize_t in = pread(fd, (char *) privhead + read, +- sizeof(*privhead) - read, +- ph_start + read); ++ size_t nread = 0; ++ while (nread < sizeof(*privhead)) { ++ ssize_t in = pread(fd, (char *) privhead + nread, ++ sizeof(*privhead) - nread, ++ ph_start + nread); + if (in == 0) { + g_set_error(err, LDM_ERROR, LDM_ERROR_INVALID, + "%s contains invalid LDM metadata", path); +@@ -1253,7 +1253,7 @@ + return FALSE; + } + +- read += in; ++ nread += in; + } + + if (memcmp(privhead->magic, "PRIVHEAD", 8) != 0) { diff --git a/libldm.spec b/libldm.spec new file mode 100644 index 0000000..fcdbc4f --- /dev/null +++ b/libldm.spec @@ -0,0 +1,147 @@ +# +# Conditional build: +%bcond_without apidocs # do not build and package API docs +%bcond_without static_libs # don't build static libraries +# +Summary: A tool to manage Windows dynamic disks +Summary(pl.UTF-8): Narzędzie do zarządzania dynamicznymi dyskami Windows +Name: libldm +Version: 0.2.3 +Release: 1 +License: LGPL v3+ (libldm), GPL v3+ (ldmtool) +Group: Libraries +Source0: https://github.com/mdbooth/libldm/downloads/%{name}-%{version}.tar.gz +# Source0-md5: a7771c0a0f84dab6d7ce6a565ede4229 +Patch0: %{name}-warnings.patch +URL: https://github.com/mdbooth/libldm/ +BuildRequires: autoconf >= 2.68 +BuildRequires: automake >= 1.6 +BuildRequires: device-mapper-devel >= 1.0 +BuildRequires: glib2-devel >= 1:2.32.0 +BuildRequires: gtk-doc >= 1.14 +BuildRequires: json-glib-devel >= 0.14.0 +BuildRequires: libtool >= 2:2 +BuildRequires: libuuid-devel >= 2.21.0 +BuildRequires: libxslt-progs +BuildRequires: pkgconfig +BuildRequires: readline-devel +BuildRequires: zlib-devel >= 1.2.5 +Requires: device-mapper >= 1.0 +Requires: glib2 >= 1:2.32.0 +Requires: json-glib >= 0.14.0 +Requires: libuuid >= 2.21.0 +Requires: zlib >= 1.2.5 +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%description +libldm is a library for managing Microsoft Windows dynamic disks, +which use Microsoft's LDM metadata. It can inspect them, and also +create and remove device-mapper block devices which can be mounted. It +includes ldmtool, which exposes this functionality as a command-line +tool. + +%description -l pl.UTF-8 +libldm to biblioteka do zarządzania dyskami dynamicznymi Microsoft +Windows, wykorzystującymi metadane Microsoft LDM. Biblioteka potrafi +odczytywać informacje o nich, a także tworzyć i usuwać urządzenia +blokowe device-mappera, które następnie można zamontować. Pakiet +zawiera także program ldmtool, udostępniający funkcjonalność +biblioteki w postaci narzędzia linii poleceń. + +%package devel +Summary: Header files for libldm library +Summary(pl.UTF-8): Pliki nagłówkowe biblioteki libldm +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Requires: device-mapper-devel >= 1.0 +Requires: glib2-devel >= 1:2.32.0 +Requires: json-glib-devel >= 0.14.0 +Requires: libuuid-devel >= 2.21.0 +Requires: zlib-devel >= 1.2.5 + +%description devel +Header files for libldm library. + +%description devel -l pl.UTF-8 +Pliki nagłówkowe biblioteki libldm. + +%package static +Summary: Static libldm library +Summary(pl.UTF-8): Statyczna biblioteka libldm +Group: Development/Libraries +Requires: %{name}-devel = %{version}-%{release} + +%description static +Static libldm library. + +%description static -l pl.UTF-8 +Statyczna biblioteka libldm. + +%package apidocs +Summary: libldm API documentation +Summary(pl.UTF-8): Dokumentacja API biblioteki libldm +Group: Documentation +Requires: gtk-doc-common + +%description apidocs +API documentation for libldm library. + +%description apidocs -l pl.UTF-8 +Dokumentacja API biblioteki libldm. + +%prep +%setup -q +%patch0 -p1 + +%build +%{__libtoolize} +%{__aclocal} -I m4 +%{__autoconf} +%{__autoheader} +%{__automake} +%configure \ + %{?with_apidocs:--enable-gtk-doc} \ + --disable-silent-rules \ + %{!?with_static_libs:--disable-static} \ + --with-html-dir=%{_gtkdocdir} +%{__make} + +%install +rm -rf $RPM_BUILD_ROOT + +%{__make} install \ + DESTDIR=$RPM_BUILD_ROOT + +# obsoleted by pkg-config +%{__rm} $RPM_BUILD_ROOT%{_libdir}/libldm-1.0.la + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(644,root,root,755) +%attr(755,root,root) %{_bindir}/ldmtool +%attr(755,root,root) %{_libdir}/libldm-1.0.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/libldm-1.0.so.0 +%{_mandir}/man1/ldmtool.1* + +%files devel +%defattr(644,root,root,755) +%attr(755,root,root) %{_libdir}/libldm-1.0.so +%{_includedir}/ldm.h +%{_pkgconfigdir}/ldm-1.0.pc + +%if %{with static_libs} +%files static +%defattr(644,root,root,755) +%{_libdir}/libldm-1.0.a +%endif + +%if %{with apidocs} +%files apidocs +%defattr(644,root,root,755) +%{_gtkdocdir}/libldm +%endif