On 15/08/14 20:57, Clint Byrum wrote: > Excerpts from Brownell, Jonathan C (Corvallis)'s message of 2014-08-15 > 08:11:18 -0700: >> The current DIB element support for downloading tarballs via >> "source-repository" allows an entry in the following form: >> >> <name> tar <targetdir> <url> >> >> Today, this feature is currently used only by the mysql DIB element. You can >> see how it's used here: >> https://github.com/openstack/tripleo-image-elements/blob/master/elements/mysql/source-repository-mysql >> >> However, the underlying diskimage-builder implementation of tarball handling >> is rather odd and inflexible. After downloading the file (or retrieving from >> cache) and unpacking into a tmp directory, it performs: >> >> mv $tmp/*/* $targetdir
iirc the reason this was done was so that tarball support could be used as a replacement for git if needed, eg. if I wanted to install nova from tarball instead of git I could set DIB_REPOTYPE_nova=tar DIB_REPOLOCATION_nova=http://tarballs.openstack.org/nova/nova-2014.1.2.tar.gz The end result should be the same as if it was git clone so that the nova element could continue to work as is. >> >> This does work as long as the tarball follows a structure where all its >> files/directories are contained within a single directory, but it fails if >> the tarball contains no subdirectories. (Even worse is when it contains some >> files and some subdirectories, in which case the files are lost and the >> contents of all subdirs get lumped together in the output folder.) >> >> Since this tarball support is only used today by the mysql DIB element, I >> would love to fix this in both diskimage-builder and tripleo-image-element >> by changing to simply: >> >> mv $tmp/* $targetdir >> >> And then manually tweaking the directory structure of $targetdir from a new >> install.d script in the mysql element to restore the desired layout. >> >> However, it's important to note that this will break backwards compatibility >> if tarball support is used in its current fashion by users with private DIB >> elements. >> >> Personally, I consider the current behavior so egregious that it really >> needs to be fixed across the board rather than preserving backwards >> compatibility. >> >> Do others agree? If not, do you have suggestions as to how to improve this >> mechanism cleanly without sacrificing backwards compatibility? >> > > How about we make a glob to use, so like this: > > mysql tar /usr/local/mysql http://someplace/mysql.tar.gz mysql-5.* > > That would result in > > mv $tmp/mysql-5.*/* $targetdir > > And then we would warn that assuming the glob will be '*' is deprecated, > to be changed in a later release. > > Users who want your proposed behavior would use . until the default > changes. That would result in > > mv $tmp/./* $targetdir this works for me, once the default changes users who use the example above(If there are any) would need to include DIB_REPOREF_nova=nova-2014.1.2 > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev