summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-06 02:23:36 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-06 02:23:36 +0000
commitab54313828a733a28de9874690292d5453ae3dd3 (patch)
tree846ce566762ae543531f36f8ac3a200d5a75bd22
parent0697b8a45ee168479a8d8a4a70df1c10cc5881dd (diff)
automatic import of libellopeneuler24.03_LTS
-rw-r--r--.gitignore1
-rw-r--r--0001-examples-avoid-using-inet_ntoa.patch33
-rw-r--r--0002-ell-avoid-using-inet_ntoa.patch269
-rw-r--r--acd-client-nodebug.patch12
-rw-r--r--libell.spec195
-rw-r--r--sources1
6 files changed, 511 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..80ef899 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/ell-0.41.tar.xz
diff --git a/0001-examples-avoid-using-inet_ntoa.patch b/0001-examples-avoid-using-inet_ntoa.patch
new file mode 100644
index 0000000..df947fa
--- /dev/null
+++ b/0001-examples-avoid-using-inet_ntoa.patch
@@ -0,0 +1,33 @@
+From 4097c1b862eb59f7110d097df7f719d00869191d Mon Sep 17 00:00:00 2001
+Message-Id: <4097c1b862eb59f7110d097df7f719d00869191d.1624267112.git.davide.caratti@gmail.com>
+From: Davide Caratti <davide.caratti@gmail.com>
+Date: Wed, 16 Jun 2021 21:22:15 +0200
+Subject: [PATCH 1/2] examples: avoid using inet_ntoa()
+
+---
+ examples/https-server-test.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/examples/https-server-test.c b/examples/https-server-test.c
+index 6362722..b626fd2 100644
+--- a/examples/https-server-test.c
++++ b/examples/https-server-test.c
+@@ -199,12 +199,13 @@ int main(int argc, char *argv[])
+ https_tls_ready, https_tls_disconnected, NULL);
+
+ if (getenv("TLS_DEBUG")) {
++ char buf[INET_ADDRSTRLEN];
+ char *str;
+
+ l_tls_set_debug(tls, https_tls_debug_cb, NULL, NULL);
+
+- str = l_strdup_printf("/tmp/ell-certchain-%s.pem",
+- inet_ntoa(client_addr.sin_addr));
++ inet_ntop(AF_INET,&client_addr.sin_addr, buf, INET_ADDRSTRLEN);
++ str = l_strdup_printf("/tmp/ell-certchain-%s.pem", buf);
+ l_tls_set_cert_dump_path(tls, str);
+ l_free(str);
+ }
+--
+2.31.1
+
diff --git a/0002-ell-avoid-using-inet_ntoa.patch b/0002-ell-avoid-using-inet_ntoa.patch
new file mode 100644
index 0000000..415f0f8
--- /dev/null
+++ b/0002-ell-avoid-using-inet_ntoa.patch
@@ -0,0 +1,269 @@
+From e2fa5ae4d6eec61d7ca80e07269f86235cef8d60 Mon Sep 17 00:00:00 2001
+Message-Id: <e2fa5ae4d6eec61d7ca80e07269f86235cef8d60.1624267112.git.davide.caratti@gmail.com>
+In-Reply-To: <4097c1b862eb59f7110d097df7f719d00869191d.1624267112.git.davide.caratti@gmail.com>
+References: <4097c1b862eb59f7110d097df7f719d00869191d.1624267112.git.davide.caratti@gmail.com>
+From: Davide Caratti <davide.caratti@gmail.com>
+Date: Wed, 16 Jun 2021 21:22:14 +0200
+Subject: [PATCH 2/2] ell: avoid using inet_ntoa()
+
+static checkers (like rpminspect) complain about use of inet_ntoa(), as
+it relies on a static buffer. Fix this as follows:
+
+ - use inet_ntop() with a buffer of size INET_ADDRSTRLEN allocated in
+ the stack, similarly to what it is already done for IPv6 addresses
+ - convert IP_STR() to use NIPQUAD() / NIPQUAD_FMT, similarly to what
+ is done with MAC addresses
+---
+ ell/acd.c | 28 +++++++++++++---------------
+ ell/dhcp-lease.c | 3 ++-
+ ell/dhcp-server.c | 37 ++++++++++++++++++-------------------
+ ell/dhcp.c | 6 ++++--
+ ell/rtnl.c | 7 +++++--
+ 5 files changed, 42 insertions(+), 39 deletions(-)
+
+diff --git a/ell/acd.c b/ell/acd.c
+index 6989f82..4216898 100644
+--- a/ell/acd.c
++++ b/ell/acd.c
+@@ -55,14 +55,11 @@
+ #define MAC "%02x:%02x:%02x:%02x:%02x:%02x"
+ #define MAC_STR(a) a[0], a[1], a[2], a[3], a[4], a[5]
+
+-#define IP_STR(uint_ip) \
+-({ \
+- struct in_addr _in; \
+- char *_out; \
+- _in.s_addr = uint_ip; \
+- _out = inet_ntoa(_in); \
+- _out; \
+-})
++#define NIPQUAD_FMT "%u.%u.%u.%u"
++#define NIPQUAD(u32_ip) ((unsigned char *) &u32_ip)[0], \
++ ((unsigned char *) &u32_ip)[1], \
++ ((unsigned char *) &u32_ip)[2], \
++ ((unsigned char *) &u32_ip)[3]
+
+ #define ACD_DEBUG(fmt, args...) \
+ l_util_debug(acd->debug_handler, acd->debug_data, \
+@@ -146,7 +143,8 @@ static int acd_send_packet(struct l_acd *acd, uint32_t source_ip)
+ p.arp_pln = 4;
+ p.arp_op = htons(ARPOP_REQUEST);
+
+- ACD_DEBUG("sending packet with target IP %s", IP_STR(acd->ip));
++ ACD_DEBUG("sending packet with target IP "NIPQUAD_FMT,
++ NIPQUAD(acd->ip));
+
+ memcpy(&p.arp_sha, acd->mac, ETH_ALEN);
+ memcpy(&p.arp_spa, &source_ip, sizeof(p.arp_spa));
+@@ -165,8 +163,8 @@ static void announce_wait_timeout(struct l_timeout *timeout, void *user_data)
+ struct l_acd *acd = user_data;
+
+ if (acd->state == ACD_STATE_PROBE) {
+- ACD_DEBUG("No conflicts found for %s, announcing address",
+- IP_STR(acd->ip));
++ ACD_DEBUG("No conflicts found for "NIPQUAD_FMT ", announcing address",
++ NIPQUAD(acd->ip));
+
+ acd->state = ACD_STATE_ANNOUNCED;
+
+@@ -284,17 +282,17 @@ static bool acd_read_handler(struct l_io *io, void *user_data)
+ !memcmp(arp.arp_tpa, &acd->ip, sizeof(uint32_t));
+
+ if (!source_conflict && !target_conflict) {
+- ACD_DEBUG("No target or source conflict detected for %s",
+- IP_STR(acd->ip));
++ ACD_DEBUG("No target or source conflict detected for "NIPQUAD_FMT,
++ NIPQUAD(acd->ip));
+ return true;
+ }
+
+ switch (acd->state) {
+ case ACD_STATE_PROBE:
+ /* No reason to continue probing */
+- ACD_DEBUG("%s conflict detected for %s",
++ ACD_DEBUG("%s conflict detected for "NIPQUAD_FMT,
+ target_conflict ? "Target" : "Source",
+- IP_STR(acd->ip));
++ NIPQUAD(acd->ip));
+
+ if (acd->event_func)
+ acd->event_func(L_ACD_EVENT_CONFLICT, acd->user_data);
+diff --git a/ell/dhcp-lease.c b/ell/dhcp-lease.c
+index 44c815f..94b67b4 100644
+--- a/ell/dhcp-lease.c
++++ b/ell/dhcp-lease.c
+@@ -178,12 +178,13 @@ error:
+ static inline char *get_ip(uint32_t ip)
+ {
+ struct in_addr addr;
++ char buf[INET_ADDRSTRLEN];
+
+ if (ip == 0)
+ return NULL;
+
+ addr.s_addr = ip;
+- return l_strdup(inet_ntoa(addr));
++ return l_strdup(inet_ntop(AF_INET, &addr, buf, INET_ADDRSTRLEN));
+ }
+
+ LIB_EXPORT char *l_dhcp_lease_get_address(const struct l_dhcp_lease *lease)
+diff --git a/ell/dhcp-server.c b/ell/dhcp-server.c
+index 34512ae..4a6b3f6 100644
+--- a/ell/dhcp-server.c
++++ b/ell/dhcp-server.c
+@@ -92,14 +92,11 @@ struct l_dhcp_server {
+ #define MAC "%02x:%02x:%02x:%02x:%02x:%02x"
+ #define MAC_STR(a) a[0], a[1], a[2], a[3], a[4], a[5]
+
+-#define IP_STR(uint_ip) \
+-({ \
+- struct in_addr _in; \
+- char *_out; \
+- _in.s_addr = uint_ip; \
+- _out = inet_ntoa(_in); \
+- _out; \
+-})
++#define NIPQUAD_FMT "%u.%u.%u.%u"
++#define NIPQUAD(u32_ip) ((unsigned char *) &u32_ip)[0], \
++ ((unsigned char *) &u32_ip)[1], \
++ ((unsigned char *) &u32_ip)[2], \
++ ((unsigned char *) &u32_ip)[3]
+
+ #define SERVER_DEBUG(fmt, args...) \
+ l_util_debug(server->debug_handler, server->debug_data, \
+@@ -286,8 +283,8 @@ static struct l_dhcp_lease *add_lease(struct l_dhcp_server *server,
+ l_queue_push_head(server->lease_list, lease);
+ }
+
+- SERVER_DEBUG("added lease IP %s for "MAC " lifetime=%u",
+- IP_STR(yiaddr), MAC_STR(chaddr),
++ SERVER_DEBUG("added lease IP "NIPQUAD_FMT " for "MAC " lifetime=%u",
++ NIPQUAD(yiaddr), MAC_STR(chaddr),
+ server->lease_seconds);
+
+ return lease;
+@@ -477,8 +474,8 @@ static void send_offer(struct l_dhcp_server *server,
+
+ _dhcp_message_builder_finalize(&builder, &len);
+
+- SERVER_DEBUG("Sending OFFER of %s to "MAC, IP_STR(reply->yiaddr),
+- MAC_STR(reply->chaddr));
++ SERVER_DEBUG("Sending OFFER of "NIPQUAD_FMT " to "MAC,
++ NIPQUAD(reply->yiaddr), MAC_STR(reply->chaddr));
+
+ if (server->transport->l2_send(server->transport, server->address,
+ DHCP_PORT_SERVER,
+@@ -561,7 +558,7 @@ static void send_ack(struct l_dhcp_server *server,
+
+ _dhcp_message_builder_finalize(&builder, &len);
+
+- SERVER_DEBUG("Sending ACK to %s", IP_STR(reply->yiaddr));
++ SERVER_DEBUG("Sending ACK to "NIPQUAD_FMT, NIPQUAD(reply->yiaddr));
+
+ if (server->transport->l2_send(server->transport, server->address,
+ DHCP_PORT_SERVER, reply->ciaddr,
+@@ -628,15 +625,15 @@ static void listener_event(const void *data, size_t len, void *user_data)
+
+ switch (type) {
+ case DHCP_MESSAGE_TYPE_DISCOVER:
+- SERVER_DEBUG("Received DISCOVER, requested IP %s",
+- IP_STR(requested_ip_opt));
++ SERVER_DEBUG("Received DISCOVER, requested IP "NIPQUAD_FMT,
++ NIPQUAD(requested_ip_opt));
+
+ send_offer(server, message, lease, requested_ip_opt);
+
+ break;
+ case DHCP_MESSAGE_TYPE_REQUEST:
+- SERVER_DEBUG("Received REQUEST, requested IP %s",
+- IP_STR(requested_ip_opt));
++ SERVER_DEBUG("Received REQUEST, requested IP "NIPQUAD_FMT,
++ NIPQUAD(requested_ip_opt));
+
+ if (requested_ip_opt == 0) {
+ requested_ip_opt = message->ciaddr;
+@@ -760,6 +757,7 @@ LIB_EXPORT void l_dhcp_server_destroy(struct l_dhcp_server *server)
+
+ LIB_EXPORT bool l_dhcp_server_start(struct l_dhcp_server *server)
+ {
++ char buf[INET_ADDRSTRLEN];
+ struct in_addr ia;
+
+ if (unlikely(!server))
+@@ -846,11 +844,12 @@ LIB_EXPORT bool l_dhcp_server_start(struct l_dhcp_server *server)
+ l_acd_set_defend_policy(server->acd, L_ACD_DEFEND_POLICY_INFINITE);
+
+ ia.s_addr = server->address;
++ inet_ntop(AF_INET, &ia, buf, INET_ADDRSTRLEN);
+
+ /* In case of unit testing we don't want this to be a fatal error */
+- if (!l_acd_start(server->acd, inet_ntoa(ia))) {
++ if (!l_acd_start(server->acd, buf)) {
+ SERVER_DEBUG("Failed to start ACD on %s, continuing without",
+- IP_STR(server->address));
++ buf);
+
+ l_acd_destroy(server->acd);
+ server->acd = NULL;
+diff --git a/ell/dhcp.c b/ell/dhcp.c
+index fff1645..bd346cc 100644
+--- a/ell/dhcp.c
++++ b/ell/dhcp.c
+@@ -778,6 +778,7 @@ static void dhcp_client_rx_message(const void *data, size_t len, void *userdata)
+ struct l_dhcp_client *client = userdata;
+ const struct dhcp_message *message = data;
+ struct dhcp_message_iter iter;
++ char buf[INET_ADDRSTRLEN];
+ uint8_t msg_type = 0;
+ uint8_t t, l;
+ const void *v;
+@@ -911,11 +912,12 @@ static void dhcp_client_rx_message(const void *data, size_t len, void *userdata)
+ l_acd_set_skip_probes(client->acd, true);
+
+ ia.s_addr = client->lease->address;
++ inet_ntop(AF_INET, &ia, buf, INET_ADDRSTRLEN);
+
+ /* For unit testing we don't want this to be a fatal error */
+- if (!l_acd_start(client->acd, inet_ntoa(ia))) {
++ if (!l_acd_start(client->acd, buf)) {
+ CLIENT_DEBUG("Failed to start ACD on %s, continuing",
+- inet_ntoa(ia));
++ buf);
+ l_acd_destroy(client->acd);
+ client->acd = NULL;
+ }
+diff --git a/ell/rtnl.c b/ell/rtnl.c
+index 957e749..2983013 100644
+--- a/ell/rtnl.c
++++ b/ell/rtnl.c
+@@ -752,6 +752,7 @@ LIB_EXPORT uint32_t l_rtnl_set_powered(struct l_netlink *rtnl, int ifindex,
+ LIB_EXPORT void l_rtnl_ifaddr4_extract(const struct ifaddrmsg *ifa, int bytes,
+ char **label, char **ip, char **broadcast)
+ {
++ char buf[INET_ADDRSTRLEN];
+ struct in_addr in_addr;
+ struct rtattr *attr;
+
+@@ -763,7 +764,8 @@ LIB_EXPORT void l_rtnl_ifaddr4_extract(const struct ifaddrmsg *ifa, int bytes,
+ break;
+
+ in_addr = *((struct in_addr *) RTA_DATA(attr));
+- *ip = l_strdup(inet_ntoa(in_addr));
++ *ip = l_strdup(inet_ntop(AF_INET, &in_addr, buf,
++ INET_ADDRSTRLEN));
+
+ break;
+ case IFA_BROADCAST:
+@@ -771,7 +773,8 @@ LIB_EXPORT void l_rtnl_ifaddr4_extract(const struct ifaddrmsg *ifa, int bytes,
+ break;
+
+ in_addr = *((struct in_addr *) RTA_DATA(attr));
+- *broadcast = l_strdup(inet_ntoa(in_addr));
++ *broadcast = l_strdup(inet_ntop(AF_INET, &in_addr, buf,
++ INET_ADDRSTRLEN));
+
+ break;
+ case IFA_LABEL:
+--
+2.31.1
+
diff --git a/acd-client-nodebug.patch b/acd-client-nodebug.patch
new file mode 100644
index 0000000..687ff02
--- /dev/null
+++ b/acd-client-nodebug.patch
@@ -0,0 +1,12 @@
+diff --git a/examples/acd-client.c b/examples/acd-client.c
+index e737288..71e14ef 100644
+--- a/examples/acd-client.c
++++ b/examples/acd-client.c
+@@ -107,7 +107,6 @@ int main(int argc, char *argv[])
+ bool no_probe = false;
+
+ l_log_set_stderr();
+- l_debug_enable("*");
+
+ if (argc < 3) {
+ usage();
diff --git a/libell.spec b/libell.spec
new file mode 100644
index 0000000..a97ad18
--- /dev/null
+++ b/libell.spec
@@ -0,0 +1,195 @@
+Name: libell
+Version: 0.41
+Release: 4%{?dist}
+Summary: Embedded Linux library
+License: LGPLv2+
+URL: https://01.org/ell
+Source0: https://www.kernel.org/pub/linux/libs/ell/ell-%{version}.tar.xz
+
+Patch0: acd-client-nodebug.patch
+Patch1: 0001-examples-avoid-using-inet_ntoa.patch
+Patch2: 0002-ell-avoid-using-inet_ntoa.patch
+
+BuildRequires: gcc
+BuildRequires: make
+
+%description
+The Embedded Linux* Library (ELL) provides core, low-level functionality for
+system daemons. It typically has no dependencies other than the Linux kernel, C
+standard library, and libdl (for dynamic linking). While ELL is designed to be
+efficient and compact enough for use on embedded Linux platforms, it is not
+limited to resource-constrained systems.
+
+
+%package devel
+Summary: Embedded Linux library development files
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+
+%description devel
+Headers for developing against libell.
+
+
+%prep
+%autosetup -p1 -n ell-%{version}
+
+
+%build
+%configure
+%make_build V=1
+
+
+%install
+%make_install
+find %{buildroot} -type f -name "*.la" -delete
+
+
+%ldconfig_scriptlets
+
+
+%files
+%license COPYING
+%doc AUTHORS ChangeLog
+%{_libdir}/libell.so.*
+
+
+%files devel
+%{_includedir}/ell
+%{_libdir}/libell.so
+%{_libdir}/pkgconfig/ell.pc
+
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.41-4
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+ Related: rhbz#1991688
+
+* Thu Jun 24 2021 Davide Caratti <dcaratti@redhat.com> - 0.41-3
+- bump NVR to trigger CI
+
+* Thu Jun 24 2021 Davide Caratti <dcaratti@redhat.com> - 0.41-2
+- add gating test that uses acd-client.c. Related: rhbz#1973511
+- drop tests dependency on libell-devel. Related: rhbz#1973511
+
+* Mon Jun 21 2021 Davide Caratti <dcaratti@redhat.com> - 0.41-1
+- Avoid use of inet_ntoa(). Related: rhbz#1967524
+- Update to 0.41. Related: rhbz#1967524
+
+* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.39-2
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Tue Mar 30 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 0.39-1
+- Update to 0.39
+
+* Thu Feb 18 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 0.38-1
+- Update to 0.38
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.36-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Jan 11 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 0.36-1
+- Update to 0.36
+
+* Tue Dec 1 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 0.35-1
+- Update to 0.35
+
+* Sun Sep 06 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 0.33-1
+- Update to 0.33
+
+* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.32-3
+- Second attempt - Rebuilt for
+ https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.32-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon Jun 15 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 0.32-1
+- Update to 0.32
+
+* Wed Mar 25 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 0.30-1
+- Update to 0.30 release
+
+* Sun Feb 9 2020 Peter Robinson <pbrobinson@fedoraproject.org> 0.28-1
+- Update to 0.28 release
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.27-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Sat Dec 14 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.27-1
+- Update to 0.27 release
+
+* Wed Oct 30 2019 Lubomir Rintel <lkundrak@v3.sk> - 0.26-1
+- Update to 0.26 release
+
+* Fri Oct 25 2019 Peter Robinson <pbrobinson@gmail.com> - 0.25-1
+- Update to 0.25 release
+
+* Fri Oct 11 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.24-1
+- Update to 0.24 release
+
+* Fri Sep 20 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.23-1
+- Update to 0.23 release
+
+* Thu Aug 29 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.22-1
+- Update to 0.22 release
+
+* Mon Aug 05 2019 Lubomir Rintel <lkundrak@v3.sk> - 0.21-1
+- Update to 0.21 release
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.20-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sun May 12 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.20-1
+- Update to 0.20 release
+
+* Mon Apr 15 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.19-1
+- Update to 0.19 release
+
+* Thu Apr 4 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.18-1
+- Update to 0.18 release
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.17-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Thu Jan 17 2019 Peter Robinson <pbrobinson@fedoraproject.org> 0.17-1
+- Update to 0.17 release
+
+* Wed Dec 12 2018 Peter Robinson <pbrobinson@fedoraproject.org> 0.16-1
+- Update to 0.16 release
+
+* Fri Nov 16 2018 Peter Robinson <pbrobinson@fedoraproject.org> 0.15-1
+- Update to 0.15 release
+
+* Sat Nov 10 2018 Peter Robinson <pbrobinson@fedoraproject.org> 0.14-1
+- Update to 0.14 release
+
+* Sat Oct 6 2018 Peter Robinson <pbrobinson@fedoraproject.org> 0.11-1
+- Update to 0.11 release
+
+* Mon Sep 24 2018 Lubomir Rintel <lkundrak@v3.sk> - 0.9-1
+- Update to 0.9 release
+
+* Sat Aug 11 2018 Lubomir Rintel <lkundrak@v3.sk> - 0.8-1
+- Update to 0.8 release
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.5-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Mon May 14 2018 Lubomir Rintel <lkundrak@v3.sk> - 0.5-1
+- Update to 0.5 release
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.2-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Thu Oct 26 2017 Lubomir Rintel <lkundrak@v3.sk> - 0.2-2
+- Renamed to libell to fix a naming conflict
+- Addressed review issues (Igor Gnatenko, #1505237):
+- Added BR gcc
+- Made build verbose
+- Moved pkgconfig file to devel subpackage
+- Fixed license tag
+- Dropped Group tag
+- Packaged changelog
+
+* Sun Oct 22 2017 Lubomir Rintel <lkundrak@v3.sk> - 0.2-1
+- Initial packaging
diff --git a/sources b/sources
new file mode 100644
index 0000000..0e03fde
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+5da1cce0462e285beea534cffffd6bd1 ell-0.41.tar.xz