libloc: Import latest upstream patches.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
This commit is contained in:
Stefan Schantl
2020-06-01 21:13:03 +02:00
parent 5127276ba1
commit 89be703297
3 changed files with 123 additions and 0 deletions

View File

@@ -72,6 +72,11 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar xvf $(DIR_DL)/$(DL_FILE)
# Add upstream patches.
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/libloc-0.9.1-location-downloader-do-not-change-content-of-open-database.patch
cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/libloc-0.9.1-remove-python-path-overrides-for-debian.patch
cd $(DIR_APP) && ./autogen.sh
cd $(DIR_APP) && ./configure \
--prefix=/usr \

View File

@@ -0,0 +1,81 @@
commit 679e5ae2e45b98e254c651cb3102a4331c2c22eb
Author: Michael Tremer <michael.tremer@ipfire.org>
Date: Mon Jun 1 13:47:44 2020 +0000
location-downloader: Do not change content of open database files
The database might be opened by another process. When modified,
it will return random results.
Fixes: #12420
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
diff --git a/src/python/location-downloader.in b/src/python/location-downloader.in
index 7d06030..bf0d682 100644
--- a/src/python/location-downloader.in
+++ b/src/python/location-downloader.in
@@ -24,6 +24,7 @@ import lzma
import os
import random
import shutil
+import stat
import sys
import tempfile
import time
@@ -116,7 +117,7 @@ class Downloader(object):
return res
- def download(self, url, public_key, timestamp=None, **kwargs):
+ def download(self, url, public_key, timestamp=None, tmpdir=None, **kwargs):
headers = {}
if timestamp:
@@ -124,7 +125,7 @@ class Downloader(object):
"%a, %d %b %Y %H:%M:%S GMT",
)
- t = tempfile.NamedTemporaryFile(delete=False)
+ t = tempfile.NamedTemporaryFile(dir=tmpdir, delete=False)
with t:
# Try all mirrors
for mirror in self.mirrors:
@@ -175,6 +176,9 @@ class Downloader(object):
t.truncate()
continue
+ # Make the file readable for everyone
+ os.chmod(t.name, stat.S_IRUSR|stat.S_IRGRP|stat.S_IROTH)
+
# Return temporary file
return t
@@ -296,10 +300,13 @@ class CLI(object):
except FileNotFoundError as e:
db = None
+ # Download the database into the correct directory
+ tmpdir = os.path.dirname(ns.database)
+
# Try downloading a new database
try:
t = self.downloader.download("%s/%s" % (self.version, DATABASE_FILENAME),
- public_key=ns.public_key, timestamp=timestamp)
+ public_key=ns.public_key, timestamp=timestamp, tmpdir=tmpdir)
# If no file could be downloaded, log a message
except FileNotFoundError as e:
@@ -310,11 +317,8 @@ class CLI(object):
if not t:
return 3
- # Write temporary file to destination
- shutil.copyfile(t.name, ns.database)
-
- # Remove temporary file
- os.unlink(t.name)
+ # Move temporary file to destination
+ shutil.move(t.name, ns.database)
return 0

View File

@@ -0,0 +1,37 @@
commit 9df8db2ae6268b0901961625fd27b4dde1ed451f
Author: Michael Tremer <michael.tremer@ipfire.org>
Date: Mon Jun 1 18:23:50 2020 +0000
Makefile: Remove Python path overrides for Debian
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
diff --git a/Makefile.am b/Makefile.am
index 570ec3a..31869e0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -54,10 +54,6 @@ SED_PROCESS = \
databasedir = $(localstatedir)/lib/location
pkgconfigdir = $(libdir)/pkgconfig
-# XXX hardcode path for Debian
-pythondir = $(prefix)/lib/python3/dist-packages
-pyexecdir = $(prefix)/lib/python$(PYTHON_VERSION)/lib-dynload
-
# Overwrite Python path
pkgpythondir = $(pythondir)/location
diff --git a/debian/libloc.install b/debian/libloc.install
index eb3b49a..30bbeca 100644
--- a/debian/libloc.install
+++ b/debian/libloc.install
@@ -2,8 +2,7 @@ usr/bin/location-downloader
usr/bin/location-exporter
usr/bin/location-query
usr/lib/*/libloc.so.*
-usr/lib/python3*/dist-packages
-usr/lib/python3*/lib-dynload/*.so
+usr/lib/python3*/site-packages
src/systemd/*.service /lib/systemd/system/
src/systemd/*.timer /lib/systemd/system/
var/lib/location/signing-key.pem