Plugin issue while installing version 0.13.0 of OpenMDAO - openmdao

I recently posted about a cobyla problem with version 0.10.3 of OpenMDAO. Since then I've realized I need version 0.13.0. (This is for eventually using WISDEM). This go around, I am having trouble with plugins.
Here's the log for the installation of 0.13.0: http://pastebin.com/UAg2b7YG
Additionally, here's the output of executing 'openmdao test':
$ openmdao test
...S.....S................................................................S..................S......................................................................................................S.S..S................................................................................................................................................................................................................................................................................................................................S..............................................................S...............................................................................................S........................S..SS.....................................................................................................................................................SS.S...........F..F...............................................................................................................................................................................................................
======================================================================
FAIL: test_basic (openmdao.main.test.test_plugins.PluginsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/matt/Downloads/openmdao-0.13.0/lib/python2.7/site-packages/openmdao.main-0.13.0-py2.7.egg/openmdao/main/test/test_plugins.py", line 169, in test_basic
self.assertTrue('foobar.foobar.Foobar' in captured_stdout)
AssertionError: False is not true
-------------------- >> begin captured logging << --------------------
root: D:
root: D: test_basic
root: D:
root: D: quickstart
root: D:
root: D: makedist
root: I: Generating grammar tables from /home/matt/Downloads/openmdao-0.13.0/local/lib/python2.7/site-packages/Sphinx-1.2.2-py2.7.egg/sphinx/pycode/Grammar-py2.txt
root: I: Writing grammar tables to /home/matt/Downloads/openmdao-0.13.0/local/lib/python2.7/site-packages/Sphinx-1.2.2-py2.7.egg/sphinx/pycode/Grammar-py2-sphinx1.2.pickle
root: D: captured stdout:
root: D: Making output directory...
Running Sphinx v1.2.2
loading intersphinx inventory from http://docs.python.org/dev/objects.inv...
building [html]: all source files
updating environment: 4 added, 0 changed, 0 removed
reading sources... [ 25%] index
reading sources... [ 50%] pkgdocs
reading sources... [ 75%] srcdocs
reading sources... [100%] usage
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [ 25%] index
writing output... [ 50%] pkgdocs
writing output... [ 75%] srcdocs
writing output... [100%] usage
writing additional files... (2 module code pages) _modules/index genindex py-modindex search
copying static files... done
copying extra files... done
dumping search index... done
dumping object inventory... done
build succeeded.
collecting entry point information...
Created distribution foobar-0.1.tar.gz
root: D: captured stderr:
root: D:
root: D: captured subprocess output:
root: D: running sdist
running egg_info
creating src/foobar.egg-info
writing requirements to src/foobar.egg-info/requires.txt
writing src/foobar.egg-info/PKG-INFO
writing top-level names to src/foobar.egg-info/top_level.txt
writing dependency_links to src/foobar.egg-info/dependency_links.txt
writing manifest file 'src/foobar.egg-info/SOURCES.txt'
reading manifest file 'src/foobar.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/foobar.egg-info/SOURCES.txt'
running check
warning: check: missing required meta-data: url
warning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied
creating foobar-0.1
creating foobar-0.1/src
creating foobar-0.1/src/foobar
creating foobar-0.1/src/foobar.egg-info
creating foobar-0.1/src/foobar/sphinx_build
creating foobar-0.1/src/foobar/sphinx_build/html
creating foobar-0.1/src/foobar/sphinx_build/html/_modules
creating foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar
creating foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar/test
creating foobar-0.1/src/foobar/sphinx_build/html/_sources
creating foobar-0.1/src/foobar/sphinx_build/html/_static
creating foobar-0.1/src/foobar/test
making hard links in foobar-0.1...
hard linking MANIFEST.in -> foobar-0.1
hard linking README.txt -> foobar-0.1
hard linking setup.cfg -> foobar-0.1
hard linking setup.py -> foobar-0.1
hard linking src/foobar/__init__.py -> foobar-0.1/src/foobar
hard linking src/foobar/foobar.py -> foobar-0.1/src/foobar
hard linking src/foobar.egg-info/PKG-INFO -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/SOURCES.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/dependency_links.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/not-zip-safe -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/requires.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/top_level.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar/sphinx_build/html/.buildinfo -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/genindex.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/index.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/objects.inv -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/pkgdocs.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/py-modindex.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/search.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/searchindex.js -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/srcdocs.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/usage.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/_modules/index.html -> foobar-0.1/src/foobar/sphinx_build/html/_modules
hard linking src/foobar/sphinx_build/html/_modules/foobar/foobar.html -> foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar
hard linking src/foobar/sphinx_build/html/_modules/foobar/test/test_foobar.html -> foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar/test
hard linking src/foobar/sphinx_build/html/_sources/index.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_sources/pkgdocs.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_sources/srcdocs.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_sources/usage.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_static/ajax-loader.gif -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/basic.css -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/comment-bright.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/comment-close.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/comment.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/default.css -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/doctools.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/down-pressed.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/down.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/file.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/jquery.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/minus.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/plus.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/pygments.css -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/searchtools.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/sidebar.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/underscore.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/up-pressed.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/up.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/websupport.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/test/__init__.py -> foobar-0.1/src/foobar/test
hard linking src/foobar/test/test_foobar.py -> foobar-0.1/src/foobar/test
copying setup.cfg -> foobar-0.1
Writing foobar-0.1/setup.cfg
Creating tar archive
removing 'foobar-0.1' (and everything under it)
root: D:
root: D: makedist overwrite
root: D: captured stdout:
root: D: Running Sphinx v1.2.2
loading intersphinx inventory from http://docs.python.org/dev/objects.inv...
building [html]: all source files
updating environment: 4 added, 0 changed, 0 removed
reading sources... [ 25%] index
reading sources... [ 50%] pkgdocs
reading sources... [ 75%] srcdocs
reading sources... [100%] usage
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [ 25%] index
writing output... [ 50%] pkgdocs
writing output... [ 75%] srcdocs
writing output... [100%] usage
writing additional files... (2 module code pages) _modules/index genindex py-modindex search
copying static files... done
copying extra files... done
dumping search index... done
dumping object inventory... done
build succeeded.
collecting entry point information...
Removing existing distribution foobar-0.1.tar.gz
Created distribution foobar-0.1.tar.gz
root: D: captured stderr:
root: D:
root: D: captured subprocess output:
root: D: running sdist
running egg_info
writing requirements to src/foobar.egg-info/requires.txt
writing src/foobar.egg-info/PKG-INFO
writing top-level names to src/foobar.egg-info/top_level.txt
writing dependency_links to src/foobar.egg-info/dependency_links.txt
reading manifest file 'src/foobar.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'src/foobar.egg-info/SOURCES.txt'
running check
warning: check: missing required meta-data: url
warning: check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied
creating foobar-0.1
creating foobar-0.1/src
creating foobar-0.1/src/foobar
creating foobar-0.1/src/foobar.egg-info
creating foobar-0.1/src/foobar/sphinx_build
creating foobar-0.1/src/foobar/sphinx_build/html
creating foobar-0.1/src/foobar/sphinx_build/html/_modules
creating foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar
creating foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar/test
creating foobar-0.1/src/foobar/sphinx_build/html/_sources
creating foobar-0.1/src/foobar/sphinx_build/html/_static
creating foobar-0.1/src/foobar/test
making hard links in foobar-0.1...
hard linking MANIFEST.in -> foobar-0.1
hard linking README.txt -> foobar-0.1
hard linking setup.cfg -> foobar-0.1
hard linking setup.py -> foobar-0.1
hard linking src/foobar/__init__.py -> foobar-0.1/src/foobar
hard linking src/foobar/foobar.py -> foobar-0.1/src/foobar
hard linking src/foobar.egg-info/PKG-INFO -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/SOURCES.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/dependency_links.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/not-zip-safe -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/requires.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar.egg-info/top_level.txt -> foobar-0.1/src/foobar.egg-info
hard linking src/foobar/sphinx_build/html/.buildinfo -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/genindex.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/index.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/objects.inv -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/pkgdocs.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/py-modindex.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/search.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/searchindex.js -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/srcdocs.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/usage.html -> foobar-0.1/src/foobar/sphinx_build/html
hard linking src/foobar/sphinx_build/html/_modules/index.html -> foobar-0.1/src/foobar/sphinx_build/html/_modules
hard linking src/foobar/sphinx_build/html/_modules/foobar/foobar.html -> foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar
hard linking src/foobar/sphinx_build/html/_modules/foobar/test/test_foobar.html -> foobar-0.1/src/foobar/sphinx_build/html/_modules/foobar/test
hard linking src/foobar/sphinx_build/html/_sources/index.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_sources/pkgdocs.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_sources/srcdocs.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_sources/usage.txt -> foobar-0.1/src/foobar/sphinx_build/html/_sources
hard linking src/foobar/sphinx_build/html/_static/ajax-loader.gif -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/basic.css -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/comment-bright.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/comment-close.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/comment.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/default.css -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/doctools.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/down-pressed.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/down.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/file.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/jquery.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/minus.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/plus.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/pygments.css -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/searchtools.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/sidebar.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/underscore.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/up-pressed.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/up.png -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/sphinx_build/html/_static/websupport.js -> foobar-0.1/src/foobar/sphinx_build/html/_static
hard linking src/foobar/test/__init__.py -> foobar-0.1/src/foobar/test
hard linking src/foobar/test/test_foobar.py -> foobar-0.1/src/foobar/test
copying setup.cfg -> foobar-0.1
Writing foobar-0.1/setup.cfg
Creating tar archive
removing 'foobar-0.1' (and everything under it)
root: D:
root: D: install
root: D: captured stdout:
root: D:
root: D: captured stderr:
root: D:
root: D: captured subprocess output:
root: D: Processing foobar
Writing /tmp/tmpvM_j_j/foobar/setup.cfg
Running setup.py -q bdist_egg --dist-dir /tmp/tmpvM_j_j/foobar/egg-dist-tmp-whUqTd
creating /home/matt/Downloads/openmdao-0.13.0/lib/python2.7/site-packages/foobar-0.1-py2.7.egg
Extracting foobar-0.1-py2.7.egg to /home/matt/Downloads/openmdao-0.13.0/lib/python2.7/site-packages
Adding foobar 0.1 to easy-install.pth file
Installed /home/matt/Downloads/openmdao-0.13.0/lib/python2.7/site-packages/foobar-0.1-py2.7.egg
Processing dependencies for foobar==0.1
Finished processing dependencies for foobar==0.1
root: D:
root: D: list
root: D: captured subprocess output:
root: D:
Installed external driver and component plugins
-----------------------------------------------
root: D:
root: D: uninstall
root: D: captured stdout:
root: D: Uninstalling foobar-0.1:
/home/matt/Downloads/openmdao-0.13.0/lib/python2.7/site-packages/foobar-0.1-py2.7.egg
Proceed (y/n)? Successfully uninstalled foobar-0.1
--------------------- >> end captured logging << ---------------------
======================================================================
FAIL: test_find_plugins (openmdao.main.test.test_plugins.PluginsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/matt/Downloads/openmdao-0.13.0/lib/python2.7/site-packages/openmdao.main-0.13.0-py2.7.egg/openmdao/main/test/test_plugins.py", line 448, in test_find_plugins
self.assertEqual(sorted(expected.keys()), sorted(plugins.keys()))
AssertionError: Lists differ: ['openmdao.component', 'openmd... != []
First list contains 2 additional elements.
First extra element 0:
openmdao.component
- ['openmdao.component', 'openmdao.container']
+ []
----------------------------------------------------------------------
Ran 1086 tests in 235.278s
FAILED (SKIP=16, failures=2)
Numpy comes up a lot, but I've verified I have it installed and updated. Any guidance with this issue would be greatly appreciated.

This isn't an answer but I can't comment. As far as I know wisdem is not compatible with v0.13 and requires 0.10.x. So before you spend too much time on 0.13 I'd suggest that you check that you've got the right version.

Related

Can Ansible unarchive be made to write static folder modification times?

I am writing a build process for a WordPress installation using Ansible. It doesn't have a application-level build system at the moment, and I've chosen Ansible so that it can cleanly integrate with server build scripts, so I can bring up a working server at the touch of a button.
Most of my WordPress plugins are being installed with the unarchive feature, pointing to versioned plugin builds on the official wordpress.org installation server. I've encountered a problem with just one of these, which is that it is always being marked as "changed" even though the files are exactly the same.
Having examined the state of ls -Rl before and after, I noticed that this plugin (WordPress HTTPS) is the only one to use internal sub-directories, and upon each decompression, the modification time of folders is getting bumped.
It may be useful to know that this is a project build script, with a connection of local. I guess therefore that means that SSH is not being used.
Here is a snippet of my playbook:
- name: Install the W3 Total Cache plugin
unarchive: >
src=https://downloads.wordpress.org/plugin/w3-total-cache.0.9.4.1.zip
dest=wp-content/plugins
copy=no
- name: Install the WP DB Manager plugin
unarchive: >
src=https://downloads.wordpress.org/plugin/wp-dbmanager.2.78.1.zip
dest=wp-content/plugins
copy=no
# #todo Since this has internal sub-folders, need to work out
# how to preserve timestamps of the original folders rather than
# re-writing them, which forces Ansible to record a change of
# server state.
- name: Install the WordPress HTTPS plugin
unarchive: >
src=https://downloads.wordpress.org/plugin/wordpress-https.3.3.6.zip
dest=wp-content/plugins
copy=no
One hacky way of fixing this is to use ls -R before and after, using options to include file sizes but not timestamps, and then md5sum that output. I could then mark it as changed if there is a change in checksum. It'd work but it's not very elegant (and I'd want to do that for all plugins, for consistency).
Another approach is to abandon the task if a plugin file already exists, but that would cause problems when I bump the plugin version number to the latest copy.
Thus, ideally, I am looking for a switch to present to unarchive to say that I want the folder modification times from the zip file, not from playbook runtime. Is it possible?
Update: a commenter asked if the file contents could have changed in any way. To determine whether they have, I wrote this script, which creates a checksum for (1) all file contents and (2) all file/directory timestamps:
#!/bin/bash
# Save pwd and then change dir to root location
STARTDIR=`pwd`
cd `dirname $0`/../..
# Clear collation file
echo > /tmp/wp-checksum
# List all files recursively
find wp-content/plugins/wordpress-https/ -type f | while read file
do
#echo $file
cat $file >> /tmp/wp-checksum
done
# Get checksum of file contents
sha1sum /tmp/wp-checksum
# Get checksum of file sizes
ls -Rl wp-content/plugins/wordpress-https/ | sha1sum
# Go back to original dir
cd $STARTDIR
I ran this as part of my playbook (running it in isolation using tags) and received this:
PLAY [Set this playbook to run locally] ****************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [jonblog : Run checksum command] ******************************************
changed: [localhost]
TASK [jonblog : debug] *********************************************************
ok: [localhost] => {
"checksum_before.stdout_lines": [
"374fadc4df1578f78fd60b1be6758477c2c533fa /tmp/wp-checksum",
"10d66f7bdbbdd3af531d1b11a3db3059a5868838 -"
]
}
TASK [jonblog : Install the WordPress HTTPS plugin] ***************
changed: [localhost]
TASK [jonblog : Run checksum command] ******************************************
changed: [localhost]
TASK [jonblog : debug] *********************************************************
ok: [localhost] => {
"checksum_after.stdout_lines": [
"374fadc4df1578f78fd60b1be6758477c2c533fa /tmp/wp-checksum",
"719c9da94b525e723b1abe188ee9f5bbaf121f3f -"
]
}
PLAY RECAP *********************************************************************
localhost : ok=6 changed=3 unreachable=0 failed=0
The debug lines reflect the checksum hash of the contents of the files (this is identical) and then the checksum hash of ls -Rl of the file structure (this has changed). This is in keeping with my prior manual finding that directory checksums are changing.
So, what can I do next to track down why folder modification times are incorrectly flagging this operation as changed?
Rather than overwriting all files each time and find a way to keep the same modification datetime, you may want to use the creates option of the unarchive module.
As you maybe already know, this tells Ansible that a specific file/folder will be created as a result of the task. Thus, next time the task will not be run again if that file/folder already exists.
See http://docs.ansible.com/ansible/unarchive_module.html#options
My solution is to modify the checksum script and to make that a permanent feature of the Ansible process. It feels a bit hacky to do my own checksumming, when Ansible should do it for me, but it works.
New answers that explain that I am doing something wrong, or that a new version of Ansible fixes the problem, would be most welcome.
If I get a moment, I will raise this as a possible bug with the Ansible team. However I do sometimes wonder about the effort/reward ratio when raising bugs on a busy tracker - I already have one item outstanding, it has been waiting a while, and I've chosen to work around that too.
Update (18 months later)
This Ansible build system never made it into live. It felt like I was always working around something. Recently, when I decided I needed to move my blog to another server, I finally Dockerised it. This took several weeks (since there is a surprising amount of things to think about in a real WordPress installation) but in general I found the process much nicer than using orchestration tools.

What does it mean: WARNING! Excluded dependencies (not part of the Hex package)?

When I try to publish a new version of my package on hex, it prints the following warning:
WARNING! Excluded dependencies (not part of the Hex package):
ex_doc
Full text of me running the command:
$ mix hex.publish
Publishing usefulness 0.0.5
Dependencies:
earmark >= 0.0.0
Files:
lib/usefulness.ex
lib/usefulness/stream.ex
lib/usefulness/string.ex
config/config.exs
test/test_helper.exs
test/usefulness_test.exs
mix.exs
README.md
LICENSE
App: usefulness
Name: usefulness
Description: Useful things
Version: 0.0.5
Build tools: mix
Licenses: Apache 2.0
Maintainers: afasdasd
Links:
Github: https://github.com/b-filip/usefulness
Elixir: ~> 1.2
WARNING! Excluded dependencies (not part of the Hex package):
ex_doc
Before publishing, please read Hex Code of Conduct: https://hex.pm/docs/codeofconduct
Proceed? [Yn]
I have no idea what this warning means
Here is what my project.deps in mix.exs consists of:
defp deps do
[
{:ex_doc, "~> 0.11", only: :dev},
{:earmark, ">= 0.0.0"}
]
end
It means you have a dependency in your project that will not be a dependency of your package that you publish to hex. This is normal, projects often have development dependencies for testing, static analysis, generating documentation etc.
Hex lists them so you can have a quick look and make sure you didn't leave out an actual dependency of your code, that would result in a broken package.
ExDoc should most likely not be a dependency of your package. You're good to go. Good work creating your hex package!

Why does 0.13.6 download Scala 2.10.4 by default?

Why SBT 0.13.6 is downloading Scala 2.10.4 by default?
Even if in C:\Program Files (x86)\sbt\conf\sbtopts it is written Scala version (default: latest release) which seems to not be true.
C:\Users\Joan>sbt scala-version
Getting org.fusesource.jansi jansi 1.11 ...
:: retrieving :: org.scala-sbt#boot-jansi
confs: [default]
1 artifacts copied, 0 already retrieved (111kB/15ms)
Getting org.scala-sbt sbt 0.13.6 ...
:: retrieving :: org.scala-sbt#boot-app
confs: [default]
44 artifacts copied, 0 already retrieved (13750kB/563ms)
Getting Scala 2.10.4 (for sbt)...
:: retrieving :: org.scala-sbt#boot-scala
confs: [default]
5 artifacts copied, 0 already retrieved (24459kB/375ms)
[info] Set current project to joan (in build file:/C:/Users/Joan/)
[info] 2.10.4
Cheers
Because sbt is built on scala 2.10.4, as you can easily verify here.
In your own project, simply specify the scala version you indend to use in the same way sbt does, i.e. providing the scalaVersion build setting.
It's generally speaking a good idea not to depend on a default.

What's the purpose of sbt-rc-probe-0-13 and sbt-rc-ui-interface-0-13 in Activator?

When starting Typesafe Activator using activator ui, there are messages starting with Getting. What do sbt-rc-probe-0-13 and sbt-rc-ui-interface-0-13 do for activator?
➜ no-trace-deps activator ui
Checking for a newer version of Activator (current version 1.2.10)...
... our current version 1.2.10 looks like the latest.
Found previous process id: 36033
FOUND REPO = activator-local # file:/usr/local/Cellar/typesafe-activator/1.2.10/libexec/repository
Play server process ID is 39625
[info] play - Application started (Prod)
[info] play - Listening for HTTP on /127.0.0.1:8888
[info] a.e.s.Slf4jLogger - Slf4jLogger started
Getting com.typesafe.sbtrc sbt-rc-probe-0-13 1.0-c50ddab5e1332398049a2a649261e1ca24577479 ...
downloading file:/usr/local/Cellar/typesafe-activator/1.2.10/libexec/repository/com.typesafe.sbtrc/sbt-rc-probe-0-13/1.0-c50ddab5e1332398049a2a649261e1ca24577479/jars/sbt-rc-probe-0-13.jar ...
[SUCCESSFUL ] com.typesafe.sbtrc#sbt-rc-probe-0-13;1.0-c50ddab5e1332398049a2a649261e1ca24577479!sbt-rc-probe-0-13.jar (12ms)
:: retrieving :: org.scala-sbt#boot-app
confs: [default]
2 artifacts copied, 0 already retrieved (414kB/8ms)
Getting com.typesafe.sbtrc sbt-rc-ui-interface-0-13 1.0-c50ddab5e1332398049a2a649261e1ca24577479 ...
downloading file:/usr/local/Cellar/typesafe-activator/1.2.10/libexec/repository/com.typesafe.sbtrc/sbt-rc-ui-interface-0-13/1.0-c50ddab5e1332398049a2a649261e1ca24577479/jars/sbt-rc-ui-interface-0-13.jar ...
[SUCCESSFUL ] com.typesafe.sbtrc#sbt-rc-ui-interface-0-13;1.0-c50ddab5e1332398049a2a649261e1ca24577479!sbt-rc-ui-interface-0-13.jar (4ms)
:: retrieving :: org.scala-sbt#boot-app
confs: [default]
1 artifacts copied, 0 already retrieved (32kB/4ms)
[info] application - error getting name from sbt: sbt process never got in touch, so unable to handle request NameRequest(true)
[info] application - using file basename as app name: no-trace-deps
[INFO] [09/26/2014 19:41:14.587] [default-akka.actor.default-dispatcher-3] [akka://default/user/app-no-trace-deps-1/socket] Firing up web socket
These were part of the old sbt-remote-control API (the prototype for sbt server).
The "probe" is what sits inside sbt and communicates task results/commands to/from the activator process and the sbt server.
The 'ui-interface' is an API where plugins can directly send messages to activator from within sbt.
These will make a bit more sense with the new sbt-server pre-release where "ui-interface" is renamed "server-interface" (I think) and the Play plugin can directly communicate to clients (like IDEs/Activator).

Version information on Xserver modules

I am trying to find a tool that will extract the module version information (a part of the module record) fron an Xserver module. For example, in the Xorg logs I can see the following information for the librecord module in my Xorg.0.log file...
[ 39.892] (II) Loading /usr/lib/xorg/modules/extensions/librecord.so
[ 39.905] (II) Module record: vendor="X.Org Foundation"
[ 39.905] compiled for 1.9.0, module version = 1.13.0
[ 39.905] Module class: X.Org Server Extension
[ 39.905] ABI class: X.Org Server Extension, version 4.0
Is there a tools that would allow me to easily extract the aforementioned information. Sometimes you can use modinfo on the module and that will have version information, but that does not always work. The only consistent way I know of now is to parse the xorg log file. Thanks.
Yes, there is and you can also try to write a small one.
http://gitorious.org/xdriverprobe
The problem is that xdriverprobe won't compile on newer servers since I didn't update it to the newest ABIs. Also, xdriverprobe is only used for video drivers, but it can be adapted to be used on other modules. The main source code file (xdriverprobe.c) has less than 500 lines, so you can easily learn by reading it.
It works in Ubuntu 11.10... ./xdriverprobe -o moduledata gives the information you want.
Look at its source code. It does:
dlopen() the module
find a symbol called modulenameModuleData (if your module is called modulename)
that symbol is a XF86ModuleData* See /usr/include/xorg/xf86Module.h
check its member named vers
Spend a few hours and you'll be able to write a very tiny code that does what you want.
More information: http://www.xfree86.org/current/DESIGN17.html#65 (very old document, but most of what's written there is still true today). If you're not happy with that document, you have to read the Xorg source code.
Happy hacking!

Resources