| Summary: | app-accessibility/espeak-1.47-11: portage complains about /usr/share/espeak-data/voices/en being replaced with a file on upgrade | ||
|---|---|---|---|
| Product: | Gentoo Linux | Reporter: | Juergen Rose <rose> |
| Component: | Current packages | Assignee: | William Hubbs <williamh> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | accessibility, bkohler, chris, dev-portage, fabio.coatti, zeekec |
| Priority: | Normal | ||
| Version: | unspecified | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Package list: | Runtime testing required: | --- | |
| Attachments: |
/var/tmp/portage/app-accessibility/espeak-1.47.11/temp/build.log
upgrade-without-preinst.txt |
||
|
Description
Juergen Rose
2013-07-11 10:52:10 UTC
Confirmed here, same behaviour. Ditto Seems you can workaround this by "rm -r /usr/share/espeak-data/voices/en" before the upgrade. Is something going wrong in this check?
pkg_preinst() {
local voicedir="${ROOT}/usr/share/${PN}-data/voices/en"
local errormsg="${voicedir} not empty. Please remove it manually."
if [ -d "${voicedir}" ]; then
rmdir "${voicedir}" || die "${errormsg}"
fi
}
Nevermind, I think we all just missed this in the original build.log: [31;01m*[0m ERROR: app-accessibility/espeak-1.47.11 failed (preinst phase): [31;01m*[0m //usr/share/espeak-data/voices/en not empty. Please remove it manually. Is there anything else to do here? Created attachment 353132 [details]
upgrade-without-preinst.txt
@portage:
The reason I put the pkg_preinst function in this version of espeak is
shown in this attachment.
The directory /usr/share/espeak-data/voices/en is replaced by a file by
the same name in this upgrade and portage does not like that.
What is the proper way to handle this?
Why don't you simply have it rm -rf the directory in pkg_preinst? Alternatively, you could use a "hard" blocker like !!app-accessibility/espeak to force the user to uninstall the old version in advance. This was fixed weeks ago by rm -rf in pkg_preinst. Closing. |