|
From: | Kenneth Loafman |
Subject: | Re: [Duplicity-talk] Duplicity 1.0.1 Released |
Date: | Mon, 10 Oct 2022 10:42:24 -0500 |
So there are two major failures in testing. One is four failures in the tahoe backend, (which I don’t use).testing/unit/test_backend_instance.py ..............................FF.. [ 10%]FF........................ssssssssss [ 18%]This shows a “Key Error” so is something wrong with my GPG version?self = <duplicity.backends.tahoebackend.TAHOEBackend object at 0x10f58deb0>
commandline = 'tahoe cp /var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/local var:folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output/file-a'
def subprocess_popen(self, commandline):
u"""
Execute the given command line with error check.
Returns int Exitcode, string StdOut, string StdErr
Raise a BackendException on failure.
"""
import shlex
if isinstance(commandline, (list, tuple)):
logstr = u' '.join(commandline)
args = commandline
else:
logstr = commandline
args = shlex.split(commandline)
logstr = self.munge_password(logstr)
log.Info(_(u"Reading results of '%s'") % logstr)
result, stdout, stderr = self.__subprocess_popen(args)
if result != 0:
try:
> ignores = self.popen_breaks[args[0]]
E KeyError: '/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/testing/overrides/bin/tahoe'
/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/backend.py:522: KeyError
During handling of the above exception, another exception occurred:The second testing error is more general, so many of the tests pass and then starting at the “bad upload” test it all goes south.testing/functional/test_badupload.py F [ 70%]testing/functional/test_cleanup.py FFF [ 71%]testing/functional/test_final.py FFFFFFFFFFFFFFFFFFFFFFFFFFF [ 77%]testing/functional/test_log.py F [ 77%]testing/functional/test_rdiffdir.py F [ 77%]testing/functional/test_replicate.py FFF [ 78%]testing/functional/test_restart.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 86%]testing/functional/test_selection.py .FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [ 94%]FFFFssFFFFFFFssss [ 98%]This test has a long back trace, But I think that the basic problem is that duplicity cannot import “librsynch”??? The end of the traceback has the text "b"ImportError: cannot import name '_librsync' from 'duplicity' (/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/__init__.py)"...return_val: 1"/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/backend.py:527: BackendException_______________________ BadUploadTest.test_missing_file ________________________self = <testing.functional.test_badupload.BadUploadTest testMethod=test_missing_file>@pytest.mark.slowdef test_missing_file(self):u"""Test basic lost file"""try:> self.backup(u"full", u"{0}/testfiles/dir1".format(_runtest_dir), options=[u"--skip-volume=1"])/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/testing/functional/test_badupload.py:44:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _self = <testing.functional.test_badupload.BadUploadTest testMethod=test_missing_file>type = 'full'input_dir = '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/dir1'options = ['full', '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/dir1', 'file:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output', '--volsize', '1', '--skip-volume=1']kwargs = {}, before_files = set(), now = 1664937609.016365def backup(self, type, input_dir, options=[], **kwargs): # pylint: disable=redefined-builtinu"""Run duplicity backup to default directory"""options = [type, input_dir, self.backend_url, u"--volsize", u"1"] + optionsbefore_files = self.get_backend_files()# If a chain ends with time X and the next full chain begins at time X,# we may trigger an assert in dup_collections.py. If needed, sleep to# avoid such problemsnow = time.time()if self.last_backup == int(now):time.sleep(1)> self.run_duplicity(options=options, **kwargs)/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/testing/functional/__init__.py:189:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _self = <testing.functional.test_badupload.BadUploadTest testMethod=test_missing_file>options = ['full', '/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/dir1', 'file:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output', '--volsize', '1', '--skip-volume=1']current_time = None, fail = None, passphrase_input = []def run_duplicity(self, options=[], current_time=None, fail=None,passphrase_input=[]):u"""Run duplicity binary with given arguments and options"""# We run under setsid and take input from /dev/null (below) because# this way we force a failure if duplicity tries to read from the# console unexpectedly (like for gpg password or such).# Check all string inputs are unicode -- we will convert to system encoding before running the commandfor item in options:if sys.version_info.major == 2:assert not isinstance(item, str), u"item " + unicode(item) + u" in options is not unicode"for item in passphrase_input:assert isinstance(item, u"".__class__), u"item " + unicode(item) + u" in passphrase_input is not unicode"if platform.platform().startswith(u'Linux'):cmd_list = [u'setsid']if self._setsid_w:cmd_list.extend([u"-w"])else:cmd_list = []basepython = os.environ.get(u'TOXPYTHON', None)if basepython is not None:cmd_list.extend([basepython])run_coverage = os.environ.get(u'RUN_COVERAGE', None)if run_coverage is not None:cmd_list.extend([u"-m", u"coverage", u"run", u"--source=duplicity", u"-p"])cmd_list.extend([u"{0}/bin/duplicity".format(_top_dir)])cmd_list.extend(options)cmd_list.extend([u"-v0"])cmd_list.extend([u"--no-print-statistics"])cmd_list.extend([u"--allow-source-mismatch"])cmd_list.extend([u"--archive-dir={0}/testfiles/cache".format(_runtest_dir)])if current_time:cmd_list.extend([u"--current-time", current_time])cmd_list.extend(self.class_args)if fail:cmd_list.extend([u"--fail", u"".__class__(fail)])cmdline = u" ".join([u'"%s"' % x for x in cmd_list])cmdline = u" ".join([u'"%s"' % x for x in cmd_list])if not passphrase_input:cmdline += u" < /dev/null"# The immediately following block is the nicer way to execute pexpect with# unicode strings, but we need to have the pre-4.0 version for some time yet,# so for now this is commented out so tests execute the same way on all systems.# if parse_version(pexpect.__version__) >= parse_version("4.0"):# # pexpect.spawn only supports unicode from version 4.0# # there was a separate pexpect.spawnu in 3.x, but it has an error on readline# child = pexpect.spawn(u'/bin/sh', [u'-c', cmdline], timeout=None, encoding=sys.getfilesystemencoding())## for passphrase in passphrase_input:# child.expect(u'passphrase.*:')# child.sendline(passphrase)# else:# Manually encode to filesystem encoding and send to spawn as bytes# ToDo: Remove this once we no longer have to support systems with pexpect < 4.0if sys.version_info.major > 2:child = pexpect.spawn(u'/bin/sh', [u'-c', cmdline], timeout=None)else:child = pexpect.spawn(b'/bin/sh', [b'-c', cmdline.encode(sys.getfilesystemencoding(),u'replace')], timeout=None)for passphrase in passphrase_input:child.expect(b'passphrase.*:')child.sendline(passphrase)# if the command fails, we need to clear its output# so it will terminate cleanly.child.expect_exact(pexpect.EOF)lines = child.before.splitlines()child.wait()child.ptyproc.delayafterclose = 0.0return_val = child.exitstatusif fail:self.assertEqual(30, return_val)elif return_val:print(u"\n...command:", cmdline, file=sys.stderr)print(u"...cwd:", os.getcwd(), file=sys.stderr)print(u"...output:", file=sys.stderr)for line in lines:line = line.rstrip()if line:print(line, file=sys.stderr)print(u"...return_val:", return_val, file=sys.stderr)> raise CmdError(return_val)E testing.functional.CmdError: 1/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/testing/functional/__init__.py:175: CmdErrorDuring handling of the above exception, another exception occurred:self = <testing.functional.test_badupload.BadUploadTest testMethod=test_missing_file>@pytest.mark.slowdef test_missing_file(self):u"""Test basic lost file"""try:self.backup(u"full", u"{0}/testfiles/dir1".format(_runtest_dir), options=[u"--skip-volume=1"])self.fail()except CmdError as e:> self.assertEqual(e.exit_status, 44, str(e))E AssertionError: 1 != 44 : 1/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/testing/functional/test_badupload.py:47: AssertionError----------------------------- Captured stderr call -----------------------------...command: "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/bin/duplicity" "full" "/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/dir1" "file:///var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/output" "--volsize" "1" "--skip-volume=1" "-v0" "--no-print-statistics" "--allow-source-mismatch" "--archive-dir=/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T/testfiles/cache" < /dev/null...cwd: /private/var/folders/6b/85yg9bp94rv55dzbdp78thp40000kr/T...output:b'Traceback (most recent call last):'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/bin/duplicity", line 37, in <module>'b' from duplicity.dup_main import main'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/dup_main.py", line 50, in <module>'b' from duplicity import commandline'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/commandline.py", line 43, in <module>'b' from duplicity import backend'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/backend.py", line 44, in <module>'b' from duplicity import dup_temp'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/dup_temp.py", line 34, in <module>'b' from duplicity import path'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/path.py", line 49, in <module>'b' from duplicity import librsync'b' File "/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/librsync.py", line 36, in <module>'b' from . import _librsync'b"ImportError: cannot import name '_librsync' from 'duplicity' (/opt/sw/src/fink.build/duplicity-1.0.1-1/duplicity-1.0.1/duplicity/__init__.py)"...return_val: 1On Oct 9, 2022, at 11:26 AM, Kenneth Loafman <kenneth@loafman.com> wrote:Ok, sounds good. Any progress?...KenOn Thu, Oct 6, 2022 at 3:15 PM Scott Hannahs <sth@p-hall.net> wrote:I will try to reinstall Xcode and the command line tools. I had been using py38 which is installed in both the standard and an updated version in the non-standard location.On Oct 6, 2022, at 14:57, Kenneth Loafman <kenneth@loafman.com> wrote:OK,I could not remember what version of Python 3 you were running, so py3x meant for you to fill it in. I'm guessing either py38 or py39 for Python 3.8 and Python 3.9 respectively. Others follow the same model, py27,py35,...py310.I am not sure why it's trying to build for anything but x86_64 if you have Intel silicone and not Apple silicone.Here's what mine looks like for py38:ken@dione:~/workspace/duplicity-origin$ python3.8 ./setup.py build_extUnable to get SCM version: defaulting to 1.0.1running build_extBuilding extension for librsync...building 'duplicity._librsync' extensioncreating build/temp.macosx-12-x86_64-cpython-38creating build/temp.macosx-12-x86_64-cpython-38/duplicityclang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -I/usr/local/include -I/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c duplicity/_librsyncmodule.c -o build/temp.macosx-12-x86_64-cpython-38/duplicity/_librsyncmodule.ocreating build/lib.macosx-12-x86_64-cpython-38creating build/lib.macosx-12-x86_64-cpython-38/duplicityclang -bundle -undefined dynamic_lookup -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk build/temp.macosx-12-x86_64-cpython-38/duplicity/_librsyncmodule.o -L/usr/local/lib -lrsync -o build/lib.macosx-12-x86_64-cpython-38/duplicity/_librsync.cpython-38-darwin.sold: warning: -undefined dynamic_lookup may not work with chained fixupscopying build/lib.macosx-12-x86_64-cpython-38/duplicity/_librsync.cpython-38-darwin.so -> duplicityIt looks like your xcode libs are out of date, and it also looks like you're not using the standard locations for software. That's gonna complicate matters.I'm on Monterey 12.6 with the current Xcode from Apple, all in standard places....KenOn Thu, Oct 6, 2022 at 1:13 PM Scott Hannahs <sth@p-hall.net> wrote:Ken,I will leave fink out, but it should be doing exactly the same thing! :-)the following doesn’t even build duplicity correctly, so I don’t get to the tox command.% tar xf duplicity-1.0.1.tar% cd duplicity-1.0.1% % C_INCLUDE_PATH=/opt/sw/include LIBRARY_PATH=/opt/sw/lib python3 ./setup.py build_ext > build.out.txt 2>&1
This gives the following output.Unable to get SCM version: defaulting to 1.0.1running build_extBuilding extension for librsync...building 'duplicity._librsync' extensionclang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -iwithsysroot/System/Library/Frameworks/System.framework/PrivateHeaders -iwithsysroot/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Headers -arch arm64 -arch x86_64 -Werror=implicit-function-declaration -I/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/include/python3.9 -c duplicity/_librsyncmodule.c -o build/temp.macosx-10.9-universal2-3.9/duplicity/_librsyncmodule.oclang -bundle -undefined dynamic_lookup -arch arm64 -arch x86_64 -Wl,-headerpad,0x1000 build/temp.macosx-10.9-universal2-3.9/duplicity/_librsyncmodule.o -lrsync -o build/lib.macosx-10.9-universal2-3.9/duplicity/_librsync.cpython-39-darwin.sold: warning: ignoring file /opt/sw/lib/librsync.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64ld: warning: dylib (/opt/sw/lib/librsync.dylib) was built for newer macOS version (12.4) than being linked (10.9)copying build/lib.macosx-10.9-universal2-3.9/duplicity/_librsync.cpython-39-darwin.so -> duplicityI am building on an X86 machine and my libraries are x86 and I am not trying to build a universal arm 64 system. But with warnings it tries to build.tox does not like the py3x value% tox -epy3py3 create: /Users/sth/Downloads/duplicity-1.0.1/.tox/py3py3 installdeps: -rrequirements.txtand I ran out of time this AM waiting for more output.-ScottOn Oct 5, 2022, at 11:54 AM, Kenneth Loafman <kenneth@loafman.com> wrote:Could you try just building and running the tests in a 'normal' user environment? Leave Fink out of the picture.do this:
- $ tar xf duplicity-1.01.tar.gz
- $ ./setup.py build_ext
- $ tox -e py3x
...Thanks,...Ken
[Prev in Thread] | Current Thread | [Next in Thread] |