* Re: [dpdk-users] SyntaxError in setup.sh during binding ethernet device
@ 2016-01-27 13:44 dawid_jurek
2016-01-27 13:48 ` Thomas Monjalon
0 siblings, 1 reply; 5+ messages in thread
From: dawid_jurek @ 2016-01-27 13:44 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: users
W dniu 2016-01-19 11:54:24 użytkownik dawid_jurek <dawid_jurek@vp.pl> napisał:
>
>
> W dniu 2016-01-19 11:19:55 użytkownik Thomas Monjalon <thomas.monjalon@6wind.com> napisał:
> > Hi
> >
> > 2016-01-19 10:45, dawid_jurek:
> > > Hello DPDK developers,
> > > I experienced issue when I ran tools/setup.sh and chose option [23]: Bind Ethernet device to IGB UIO module.
> > > Script Output:
> > > File ".../dpdk/dpdk-2.2.0/tools/dpdk_nic_bind.py", line 113
> > > """ % locals() # replace items from local variables
> > > ^
> > > SyntaxError: invalid syntax
> > > It turned out that python 2.7 set as default in system was needed.
> > > So I added python2 to every line with dpdk_nic_bind.py call in tools/setup.sh and now it works fine.
> > > But the question is: is it expected behaviour? Shouldn't it be fixed by simple patch in way I did it?
> >
> > Yes a patch would be appreciated to make it python 3 friendly.
> > Thanks
> >
>
> OK. I will prepare patch for dpdk_nic_bind.py soon.
> Regards,
> Dawid
>
>
Hello again,
patch for this issue was prepared and tested on Arch (Python 3 is default) and Ubuntu (Python 2 is default) distros.
In both cases syntax errors from dpdk_nic_bind.py disappeared and everything worked as expected.
Patch is very simple and in most cases just adds extra brackets to print functions.
Anyway please review this.
Regards,
Dawid
diff --git a/tools/dpdk_nic_bind.py b/tools/dpdk_nic_bind.py
index f02454e..9f7c848 100755
--- a/tools/dpdk_nic_bind.py
+++ b/tools/dpdk_nic_bind.py
@@ -54,7 +54,7 @@ args = []
def usage():
'''Print usage information for the program'''
argv0 = basename(sys.argv[0])
- print """
+ print ("""
Usage:
------
@@ -110,7 +110,7 @@ To unbind 0000:01:00.0 from using any driver
To bind 0000:02:00.0 and 0000:02:00.1 to the ixgbe kernel driver
%(argv0)s -b ixgbe 02:00.0 02:00.1
- """ % locals() # replace items from local variables
+ """ % locals()) # replace items from local variables
# This is roughly compatible with check_output function in subprocess module
# which is only available in python 2.7.
@@ -156,7 +156,7 @@ def check_modules():
'''Checks that igb_uio is loaded'''
global dpdk_drivers
- fd = file("/proc/modules")
+ fd = open("/proc/modules", 'r')
loaded_mods = fd.readlines()
fd.close()
@@ -176,10 +176,10 @@ def check_modules():
# check if we have at least one loaded module
if True not in [mod["Found"] for mod in mods] and b_flag is not None:
if b_flag in dpdk_drivers:
- print "Error - no supported modules(DPDK driver) are loaded"
+ print ("Error - no supported modules(DPDK driver) are loaded")
sys.exit(1)
else:
- print "Warning - no supported modules(DPDK driver) are loaded"
+ print ("Warning - no supported modules(DPDK driver) are loaded")
# change DPDK driver list to only contain drivers that are loaded
dpdk_drivers = [mod["Name"] for mod in mods if mod["Found"]]
@@ -198,7 +198,7 @@ def get_pci_device_details(dev_id):
for line in extra_info:
if len(line) == 0:
continue
- name, value = line.split("\t", 1)
+ name, value = line.decode().split("\t", 1)
name = name.strip(":") + "_str"
device[name] = value
# check for a unix interface name
@@ -234,7 +234,7 @@ def get_nic_details():
dev["Device"] = int(dev["Device"],16)
devices[dev["Slot"]] = dict(dev) # use dict to make copy of dev
else:
- name, value = dev_line.split("\t", 1)
+ name, value = dev_line.decode().split("\t", 1)
dev[name.rstrip(":")] = value
# check what is the interface if any for an ssh connection if
@@ -243,17 +243,17 @@ def get_nic_details():
route = check_output(["ip", "-o", "route"])
# filter out all lines for 169.254 routes
route = "\n".join(filter(lambda ln: not ln.startswith("169.254"),
- route.splitlines()))
+ route.decode().splitlines()))
rt_info = route.split()
- for i in xrange(len(rt_info) - 1):
+ for i in range(len(rt_info) - 1):
if rt_info[i] == "dev":
ssh_if.append(rt_info[i+1])
# based on the basic info, get extended text details
for d in devices.keys():
# get additional info and add it to existing data
- devices[d] = dict(devices[d].items() +
- get_pci_device_details(d).items())
+ devices[d] = devices[d].copy()
+ devices[d].update(get_pci_device_details(d).items())
for _if in ssh_if:
if _if in devices[d]["Interface"].split(","):
@@ -293,22 +293,22 @@ def dev_id_from_dev_name(dev_name):
if dev_name in devices[d]["Interface"].split(","):
return devices[d]["Slot"]
# if nothing else matches - error
- print "Unknown device: %s. " \
- "Please specify device in \"bus:slot.func\" format" % dev_name
+ print ("Unknown device: %s. " \
+ "Please specify device in \"bus:slot.func\" format" % dev_name)
sys.exit(1)
def unbind_one(dev_id, force):
'''Unbind the device identified by "dev_id" from its current driver'''
dev = devices[dev_id]
if not has_driver(dev_id):
- print "%s %s %s is not currently managed by any driver\n" % \
- (dev["Slot"], dev["Device_str"], dev["Interface"])
+ print ("%s %s %s is not currently managed by any driver\n" % \
+ (dev["Slot"], dev["Device_str"], dev["Interface"]))
return
# prevent us disconnecting ourselves
if dev["Ssh_if"] and not force:
- print "Routing table indicates that interface %s is active" \
- ". Skipping unbind" % (dev_id)
+ print ("Routing table indicates that interface %s is active" \
+ ". Skipping unbind" % (dev_id))
return
# write to /sys to unbind
@@ -316,7 +316,7 @@ def unbind_one(dev_id, force):
try:
f = open(filename, "a")
except:
- print "Error: unbind failed for %s - Cannot open %s" % (dev_id, filename)
+ print ("Error: unbind failed for %s - Cannot open %s" % (dev_id, filename))
sys/exit(1)
f.write(dev_id)
f.close()
@@ -329,14 +329,14 @@ def bind_one(dev_id, driver, force):
# prevent disconnection of our ssh session
if dev["Ssh_if"] and not force:
- print "Routing table indicates that interface %s is active" \
- ". Not modifying" % (dev_id)
+ print ("Routing table indicates that interface %s is active" \
+ ". Not modifying" % (dev_id))
return
# unbind any existing drivers we don't want
if has_driver(dev_id):
if dev["Driver_str"] == driver:
- print "%s already bound to driver %s, skipping\n" % (dev_id, driver)
+ print ("%s already bound to driver %s, skipping\n" % (dev_id, driver))
return
else:
saved_driver = dev["Driver_str"]
@@ -349,14 +349,14 @@ def bind_one(dev_id, driver, force):
try:
f = open(filename, "w")
except:
- print "Error: bind failed for %s - Cannot open %s" % (dev_id, filename)
+ print ("Error: bind failed for %s - Cannot open %s" % (dev_id, filename))
return
try:
f.write("%04x %04x" % (dev["Vendor"], dev["Device"]))
f.close()
except:
- print "Error: bind failed for %s - Cannot write new PCI ID to " \
- "driver %s" % (dev_id, driver)
+ print ("Error: bind failed for %s - Cannot write new PCI ID to " \
+ "driver %s" % (dev_id, driver))
return
# do the bind by writing to /sys
@@ -364,7 +364,7 @@ def bind_one(dev_id, driver, force):
try:
f = open(filename, "a")
except:
- print "Error: bind failed for %s - Cannot open %s" % (dev_id, filename)
+ print ("Error: bind failed for %s - Cannot open %s" % (dev_id, filename))
if saved_driver is not None: # restore any previous driver
bind_one(dev_id, saved_driver, force)
return
@@ -378,7 +378,7 @@ def bind_one(dev_id, driver, force):
tmp = get_pci_device_details(dev_id)
if "Driver_str" in tmp and tmp["Driver_str"] == driver:
return
- print "Error: bind failed for %s - Cannot bind to driver %s" % (dev_id, driver)
+ print ("Error: bind failed for %s - Cannot bind to driver %s" % (dev_id, driver))
if saved_driver is not None: # restore any previous driver
bind_one(dev_id, saved_driver, force)
return
@@ -423,8 +423,8 @@ def display_devices(title, dev_list, extra_params = None):
%()s fields in it for replacement by the named fields in each device's
dictionary.'''
strings = [] # this holds the strings to print. We sort before printing
- print "\n%s" % title
- print "="*len(title)
+ print ("\n%s" % title)
+ print ("="*len(title))
if len(dev_list) == 0:
strings.append("<none>")
else:
@@ -436,7 +436,7 @@ def display_devices(title, dev_list, extra_params = None):
strings.append("%s '%s'" % (dev["Slot"], dev["Device_str"]))
# sort before printing, so that the entries appear in PCI order
strings.sort()
- print "\n".join(strings) # print one per line
+ print ("\n".join(strings)) # print one per line
def show_status():
'''Function called when the script is passed the "--status" option. Displays
@@ -480,9 +480,9 @@ def parse_args():
opts, args = getopt.getopt(sys.argv[1:], "b:us",
["help", "usage", "status", "force",
"bind=", "unbind"])
- except getopt.GetoptError, error:
- print str(error)
- print "Run '%s --usage' for further information" % sys.argv[0]
+ except (getopt.GetoptError, error):
+ print (str(error))
+ print ("Run '%s --usage' for further information" % sys.argv[0])
sys.exit(1)
for opt, arg in opts:
@@ -495,7 +495,7 @@ def parse_args():
force_flag = True
if opt == "-b" or opt == "-u" or opt == "--bind" or opt == "--unbind":
if b_flag is not None:
- print "Error - Only one bind or unbind may be specified\n"
+ print ("Error - Only one bind or unbind may be specified\n")
sys.exit(1)
if opt == "-u" or opt == "--unbind":
b_flag = "none"
@@ -510,13 +510,13 @@ def do_arg_actions():
global args
if b_flag is None and not status_flag:
- print "Error: No action specified for devices. Please give a -b or -u option"
- print "Run '%s --usage' for further information" % sys.argv[0]
+ print ("Error: No action specified for devices. Please give a -b or -u option")
+ print ("Run '%s --usage' for further information" % sys.argv[0])
sys.exit(1)
if b_flag is not None and len(args) == 0:
- print "Error: No devices specified."
- print "Run '%s --usage' for further information" % sys.argv[0]
+ print ("Error: No devices specified.")
+ print ("Run '%s --usage' for further information" % sys.argv[0])
sys.exit(1)
if b_flag == "none" or b_flag == "None":
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-users] SyntaxError in setup.sh during binding ethernet device
2016-01-27 13:44 [dpdk-users] SyntaxError in setup.sh during binding ethernet device dawid_jurek
@ 2016-01-27 13:48 ` Thomas Monjalon
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2016-01-27 13:48 UTC (permalink / raw)
To: dawid_jurek; +Cc: users
2016-01-27 14:44, dawid_jurek:
> W dniu 2016-01-19 11:54:24 użytkownik dawid_jurek <dawid_jurek@vp.pl> napisał:
> >
> >
> > W dniu 2016-01-19 11:19:55 użytkownik Thomas Monjalon <thomas.monjalon@6wind.com> napisał:
> > > Hi
> > >
> > > 2016-01-19 10:45, dawid_jurek:
> > > > Hello DPDK developers,
> > > > I experienced issue when I ran tools/setup.sh and chose option [23]: Bind Ethernet device to IGB UIO module.
> > > > Script Output:
> > > > File ".../dpdk/dpdk-2.2.0/tools/dpdk_nic_bind.py", line 113
> > > > """ % locals() # replace items from local variables
> > > > ^
> > > > SyntaxError: invalid syntax
> > > > It turned out that python 2.7 set as default in system was needed.
> > > > So I added python2 to every line with dpdk_nic_bind.py call in tools/setup.sh and now it works fine.
> > > > But the question is: is it expected behaviour? Shouldn't it be fixed by simple patch in way I did it?
> > >
> > > Yes a patch would be appreciated to make it python 3 friendly.
> > > Thanks
> > >
> >
> > OK. I will prepare patch for dpdk_nic_bind.py soon.
> > Regards,
> > Dawid
> >
> >
>
> Hello again,
> patch for this issue was prepared and tested on Arch (Python 3 is default) and Ubuntu (Python 2 is default) distros.
> In both cases syntax errors from dpdk_nic_bind.py disappeared and everything worked as expected.
> Patch is very simple and in most cases just adds extra brackets to print functions.
> Anyway please review this.
It looks simple and good.
Please could you send it on dev@dpdk.org?
The procedure is described here:
http://dpdk.org/dev#send
and detailed here:
http://dpdk.org/doc/guides/contributing/patches.html
Thanks
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-users] SyntaxError in setup.sh during binding ethernet device
@ 2016-01-29 13:00 dawid_jurek
0 siblings, 0 replies; 5+ messages in thread
From: dawid_jurek @ 2016-01-29 13:00 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: users
W dniu 2016-01-27 14:48:05 użytkownik Thomas Monjalon <thomas.monjalon@6wind.com> napisał:
> 2016-01-27 14:44, dawid_jurek:
> > W dniu 2016-01-19 11:54:24 użytkownik dawid_jurek <dawid_jurek@vp.pl> napisał:
> > >
> > >
> > > W dniu 2016-01-19 11:19:55 użytkownik Thomas Monjalon <thomas.monjalon@6wind.com> napisał:
> > > > Hi
> > > >
> > > > 2016-01-19 10:45, dawid_jurek:
> > > > > Hello DPDK developers,
> > > > > I experienced issue when I ran tools/setup.sh and chose option [23]: Bind Ethernet device to IGB UIO module.
> > > > > Script Output:
> > > > > File ".../dpdk/dpdk-2.2.0/tools/dpdk_nic_bind.py", line 113
> > > > > """ % locals() # replace items from local variables
> > > > > ^
> > > > > SyntaxError: invalid syntax
> > > > > It turned out that python 2.7 set as default in system was needed.
> > > > > So I added python2 to every line with dpdk_nic_bind.py call in tools/setup.sh and now it works fine.
> > > > > But the question is: is it expected behaviour? Shouldn't it be fixed by simple patch in way I did it?
> > > >
> > > > Yes a patch would be appreciated to make it python 3 friendly.
> > > > Thanks
> > > >
> > >
> > > OK. I will prepare patch for dpdk_nic_bind.py soon.
> > > Regards,
> > > Dawid
> > >
> > >
> >
> > Hello again,
> > patch for this issue was prepared and tested on Arch (Python 3 is default) and Ubuntu (Python 2 is default) distros.
> > In both cases syntax errors from dpdk_nic_bind.py disappeared and everything worked as expected.
> > Patch is very simple and in most cases just adds extra brackets to print functions.
> > Anyway please review this.
>
> It looks simple and good.
> Please could you send it on dev@dpdk.org?
> The procedure is described here:
> http://dpdk.org/dev#send
> and detailed here:
> http://dpdk.org/doc/guides/contributing/patches.html
>
> Thanks
>
Done. Available here:
http://dpdk.org/ml/archives/dev/2016-January/032148.html
Regards,
Dawid
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dpdk-users] SyntaxError in setup.sh during binding ethernet device
@ 2016-01-19 10:54 dawid_jurek
0 siblings, 0 replies; 5+ messages in thread
From: dawid_jurek @ 2016-01-19 10:54 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: users
W dniu 2016-01-19 11:19:55 użytkownik Thomas Monjalon <thomas.monjalon@6wind.com> napisał:
> Hi
>
> 2016-01-19 10:45, dawid_jurek:
> > Hello DPDK developers,
> > I experienced issue when I ran tools/setup.sh and chose option [23]: Bind Ethernet device to IGB UIO module.
> > Script Output:
> > File ".../dpdk/dpdk-2.2.0/tools/dpdk_nic_bind.py", line 113
> > """ % locals() # replace items from local variables
> > ^
> > SyntaxError: invalid syntax
> > It turned out that python 2.7 set as default in system was needed.
> > So I added python2 to every line with dpdk_nic_bind.py call in tools/setup.sh and now it works fine.
> > But the question is: is it expected behaviour? Shouldn't it be fixed by simple patch in way I did it?
>
> Yes a patch would be appreciated to make it python 3 friendly.
> Thanks
>
OK. I will prepare patch for dpdk_nic_bind.py soon.
Regards,
Dawid
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dpdk-users] SyntaxError in setup.sh during binding ethernet device
@ 2016-01-19 9:45 dawid_jurek
0 siblings, 0 replies; 5+ messages in thread
From: dawid_jurek @ 2016-01-19 9:45 UTC (permalink / raw)
To: users
Hello DPDK developers,
I experienced issue when I ran tools/setup.sh and chose option [23]: Bind Ethernet device to IGB UIO module.
Script Output:
File ".../dpdk/dpdk-2.2.0/tools/dpdk_nic_bind.py", line 113
""" % locals() # replace items from local variables
^
SyntaxError: invalid syntax
It turned out that python 2.7 set as default in system was needed.
So I added python2 to every line with dpdk_nic_bind.py call in tools/setup.sh and now it works fine.
But the question is: is it expected behaviour? Shouldn't it be fixed by simple patch in way I did it?
Regards,
Dawid
From thomas.monjalon@6wind.com Tue Jan 19 11:20:56 2016
Return-Path: <thomas.monjalon@6wind.com>
Received: from mail-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52])
by dpdk.org (Postfix) with ESMTP id ED85537A8
for <users@dpdk.org>; Tue, 19 Jan 2016 11:20:55 +0100 (CET)
Received: by mail-wm0-f52.google.com with SMTP id r129so83601557wmr.0
for <users@dpdk.org>; Tue, 19 Jan 2016 02:20:55 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=6wind-com.20150623.gappssmtp.com; s 150623;
h=from:to:cc:subject:date:message-id:organization:user-agent
:in-reply-to:references:mime-version:content-transfer-encoding
:content-type; bh=vj5fH7jYQUvkSqWHEcnFw6cZUs4tqhjcykbcZLWo1tI=;
b=i+bZr0eFQH5am4tMN7++IgBECTRciGlx2JHfP/j8P1a0gW56ueuvnmqbTzvZqRJRST
CsYrxr7rq3fKQgK4ktRX4KEZLMOzfRf7CbLmyPzu3V4yg+EosI1MDHuWmk76khHM0y9J
kEYcMsl3w0JdrkKGbzpx7Xih5Ei9yPN8IPLKHgq03bx9sTPkfa5uI3WUz/GVFhEpQDej
IG9oqHdS/Nh2Aiw4qSA82WaG6SB6+IMVEbqeaHCFo7B8ZPLzUSweZ91WAIOZ8izV9PcJ
j8LQhVNfejs24njvCWCdIqHAA4f8iQFtXTGZ5WqWPkNHSeTvfOTZZZ2tVnntgAFPckft
44KQ=X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d\x1e100.net; s 130820;
h=x-gm-message-state:from:to:cc:subject:date:message-id:organization
:user-agent:in-reply-to:references:mime-version
:content-transfer-encoding:content-type;
bh=vj5fH7jYQUvkSqWHEcnFw6cZUs4tqhjcykbcZLWo1tI=;
b=Us1Qb4WWlGfcX4CsoG8bMxnfuS8czwLeUg5Lfwbevk2Rtofr1BS/9BsFKHxL24pRAi
/XELcpApxURq2Eyy03BXrwEVCY9auCxZUzjsQzVAvEGNirjqG+FN4eRbAM8jaa3KisRg
MO3HYiw92MBfy68JwGBSZKKg5BZTdITR5/4m0jquUoCixEBhZfAbXck/+oIVEnJ4tS+E
L+UeyYkDpqoM1vFRmy1lBl1XdN52MKf1A0cwy+2U1gOiW3un5hazlJIyt/bDfydric2v
99pNguSLkflDbOUmOItqHqwDNq30HO+QVhBcouWUrcyIdeORqlMxKKr4jOeVicwjH6uM
MGyQ=X-Gm-Message-State: AG10YOQVpDUCoVF7spDBlv1IaoLNpxdXXYIMmwoJTzYwsSV5a1JXnjf3xBEMCHYFB3rqE7aq
X-Received: by 10.28.21.6 with SMTP id 6mr19592955wmv.46.1453198855782;
Tue, 19 Jan 2016 02:20:55 -0800 (PST)
Received: from xps13.localnet (guy78-3-82-239-227-177.fbx.proxad.net.
[82.239.227.177])
by smtp.gmail.com with ESMTPSA id jm4sm27814383wjb.7.2016.01.19.02.20.55
(version=TLSv1/SSLv3 cipher=OTHER);
Tue, 19 Jan 2016 02:20:55 -0800 (PST)
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: dawid_jurek <dawid_jurek@vp.pl>
Date: Tue, 19 Jan 2016 11:19:55 +0100
Message-ID: <2804006.FCTLJeXkXC@xps13>
Organization: 6WIND
User-Agent: KMail/4.14.10 (Linux/4.1.6-1-ARCH; KDE/4.14.11; x86_64; ; )
In-Reply-To: <121884132-6808cdc3243c1d5e8d3c7d6646ce9ac1@pmq3v.m5r2.onet>
References: <121884132-6808cdc3243c1d5e8d3c7d6646ce9ac1@pmq3v.m5r2.onet>
MIME-Version: 1.0
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="us-ascii"
Cc: users@dpdk.org
Subject: Re: [dpdk-users] SyntaxError in setup.sh during binding ethernet
device
X-BeenThere: users@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: usage discussions <users.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/users>,
<mailto:users-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/users/>
List-Post: <mailto:users@dpdk.org>
List-Help: <mailto:users-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/users>,
<mailto:users-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 19 Jan 2016 10:20:56 -0000
Hi
2016-01-19 10:45, dawid_jurek:
> Hello DPDK developers,
> I experienced issue when I ran tools/setup.sh and chose option [23]: Bind Ethernet device to IGB UIO module.
> Script Output:
> File ".../dpdk/dpdk-2.2.0/tools/dpdk_nic_bind.py", line 113
> """ % locals() # replace items from local variables
> ^
> SyntaxError: invalid syntax
> It turned out that python 2.7 set as default in system was needed.
> So I added python2 to every line with dpdk_nic_bind.py call in tools/setup.sh and now it works fine.
> But the question is: is it expected behaviour? Shouldn't it be fixed by simple patch in way I did it?
Yes a patch would be appreciated to make it python 3 friendly.
Thanks
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-01-29 13:00 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-27 13:44 [dpdk-users] SyntaxError in setup.sh during binding ethernet device dawid_jurek
2016-01-27 13:48 ` Thomas Monjalon
-- strict thread matches above, loose matches on Subject: below --
2016-01-29 13:00 dawid_jurek
2016-01-19 10:54 dawid_jurek
2016-01-19 9:45 dawid_jurek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).