Hello. I was hit by a infamous "replace a symlink to a directory with a directory" problem in https://bugzilla.redhat.com/show_bug.cgi?id=1787079
/usr/lib/python3.8/site-packages/notebook/static/components/moment
This was a symbolic link, but now it is a directory. The error is:
Error: Transaction test error: file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/moment-with-locales.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package python3-notebook-6.0.2-1.fc32.noarch
When I add:
$ rpm -q --scripts -p python3-notebook-6.0.2-3.fc32.noarch.rpm pretrans scriptlet (using <lua>): path = "/usr/lib/python3.8/site-packages/notebook/static/components/moment" st = posix.stat(path) if st and st.type == "link" then os.remove(path) end
Code: https://src.fedoraproject.org/rpms/python-notebook/pull-request/17
I still get:
Error: Transaction test error: file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/moment-with-locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch
What am I doing wrong?
Note that I have tried to add this workaround instead:
mv moment moment.bundled ln -vfs moment.bundled moment
But that clears the update path from 6.0.2-1, but breaks it from 6.0.2-2.
Error: Transaction test error: file /usr/lib/python3.8/site-packages/notebook/static/components/moment from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package python3-notebook-6.0.2-2.fc32.noarch
And I would need to add the other (uglier) scriptlet to replace a directory with a symbolic link :(
On Tue, 2019-12-31 at 11:24 +0100, Miro Hrončok wrote:
Hello. I was hit by a infamous "replace a symlink to a directory with a directory" problem in https://bugzilla.redhat.com/show_bug.cgi?id=1787079
/usr/lib/python3.8/site-packages/notebook/static/components/moment
This was a symbolic link, but now it is a directory. The error is:
Error: Transaction test error: file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/moment-with- locales.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package python3-notebook-6.0.2-1.fc32.noarch
When I add:
$ rpm -q --scripts -p python3-notebook-6.0.2-3.fc32.noarch.rpm pretrans scriptlet (using <lua>): path = "/usr/lib/python3.8/site- packages/notebook/static/components/moment" st = posix.stat(path) if st and st.type == "link" then os.remove(path) end
Code: https://src.fedoraproject.org/rpms/python-notebook/pull-request/17
I still get:
Error: Transaction test error: file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/moment-with- locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch
What am I doing wrong?
Note that I have tried to add this workaround instead:
mv moment moment.bundled ln -vfs moment.bundled moment
But that clears the update path from 6.0.2-1, but breaks it from 6.0.2-2.
Error: Transaction test error: file /usr/lib/python3.8/site- packages/notebook/static/components/moment from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package python3-notebook-6.0.2-2.fc32.noarch
And I would need to add the other (uglier) scriptlet to replace a directory with a symbolic link :(
I had the same problem and you already have found the answer [1]
Thank you
[1] https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacem...
-- Miro Hrončok -- Phone: +420777974800 IRC: mhroncok _______________________________________________ packaging mailing list -- packaging@lists.fedoraproject.org To unsubscribe send an email to packaging-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/packaging@lists.fedoraproject....
On 08. 01. 20 2:56, Sérgio Basto wrote:>> I still get:
Error: Transaction test error: file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/moment-with- locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch
What am I doing wrong?
I had the same problem and you already have found the answer [1]
Thank you
[1] https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacem...
Nope, I have not. This *does not* fix the problem in this case and I don't understand why not. I'm seeking help.
On Wed, 2020-01-08 at 08:09 +0100, Miro Hrončok wrote:
On 08. 01. 20 2:56, Sérgio Basto wrote:>> I still get:
Error: Transaction test error: file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/moment-with- locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site- packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch
What am I doing wrong?
I had the same problem and you already have found the answer [1]
Thank you
[1] https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacem...
Nope, I have not. This *does not* fix the problem in this case and I don't understand why not. I'm seeking help.
yep , I replied to soon , sorry
-- Miro Hrončok -- Phone: +420777974800 IRC: mhroncok _______________________________________________ packaging mailing list -- packaging@lists.fedoraproject.org To unsubscribe send an email to packaging-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/packaging@lists.fedoraproject....
On Tue, 2019-12-31 at 11:24 +0100, Miro Hrončok wrote:
file /usr/lib/python3.8/site- packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch
Seems an rpm bug js-moment doesn't have any file under /usr/lib/python3.8/site-packages/notebook/static/components/
and package js-moment just appears in this second group of messages, which is strange ...
On 31. 12. 19 11:24, Miro Hrončok wrote:
Hello. I was hit by a infamous "replace a symlink to a directory with a directory" problem in https://bugzilla.redhat.com/show_bug.cgi?id=1787079
/usr/lib/python3.8/site-packages/notebook/static/components/moment
This was a symbolic link, but now it is a directory. The error is:
Error: Transaction test error: file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/moment-with-locales.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package python3-notebook-6.0.2-1.fc32.noarch
When I add:
$ rpm -q --scripts -p python3-notebook-6.0.2-3.fc32.noarch.rpm pretrans scriptlet (using <lua>): path = "/usr/lib/python3.8/site-packages/notebook/static/components/moment" st = posix.stat(path) if st and st.type == "link" then os.remove(path) end
Code: https://src.fedoraproject.org/rpms/python-notebook/pull-request/17
I still get:
Error: Transaction test error: file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/min/moment-with-locales.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch file /usr/lib/python3.8/site-packages/notebook/static/components/moment/moment.js from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package js-moment-2.18.1-6.fc30.noarch
What am I doing wrong?
Note that I have tried to add this workaround instead:
mv moment moment.bundled ln -vfs moment.bundled moment
But that clears the update path from 6.0.2-1, but breaks it from 6.0.2-2.
Error: Transaction test error: file /usr/lib/python3.8/site-packages/notebook/static/components/moment from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package python3-notebook-6.0.2-2.fc32.noarch
And I would need to add the other (uglier) scriptlet to replace a directory with a symbolic link :(
Does anybody know what's wrong with this? I am clueless. Thanks.
Hello,
This seems to be a bug from RPM, have you tried bothering https://github.com/rpm-software-management/rpm about it?
On Tuesday, 21 January 2020 17:22:14 CET you wrote:
Hello,
This seems to be a bug from RPM, have you tried bothering https://github.com/rpm-software-management/rpm about it?
This commit might shed some light of what's happening:
https://github.com/rpm-software-management/rpm/commit/ 00d82f1322c6dbf471f61bca7a5cc347fc2fca0a
On Tuesday, 21 January 2020 15:47:52 CET Miro Hrončok wrote:
On 31. 12. 19 11:24, Miro Hrončok wrote:
Hello. I was hit by a infamous "replace a symlink to a directory with a directory" problem in https://bugzilla.redhat.com/show_bug.cgi?id=1787079
/usr/lib/python3.8/site-packages/notebook/static/components/moment
This was a symbolic link, but now it is a directory. The error is:
Error: Transaction test error:
file
/usr/lib/python3.8/site-packages/notebook/static/components/moment/min/loc ales.js from
install of python3-notebook-6.0.2-2.fc32.noarch conflicts
with file from package js-moment-2.18.1-6.fc30.noarch
file
/usr/lib/python3.8/site-packages/notebook/static/components/moment/min/mom ent-with-locales.js
from install of python3-notebook-6.0.2-2.fc32.noarch
conflicts with file from package js-moment-2.18.1-6.fc30.noarch
file
/usr/lib/python3.8/site-packages/notebook/static/components/moment/moment. js
from install of python3-notebook-6.0.2-2.fc32.noarch conflicts with
file from package js-moment-2.18.1-6.fc30.noarch
file /usr/lib/python3.8/site-packages/notebook/static/components/moment from
install of python3-notebook-6.0.2-2.fc32.noarch conflicts with file from package
python3-notebook-6.0.2-1.fc32.noarch
When I add:
$ rpm -q --scripts -p python3-notebook-6.0.2-3.fc32.noarch.rpm pretrans scriptlet (using <lua>): path = "/usr/lib/python3.8/site-packages/notebook/static/components/moment"
st
= posix.stat(path) if st and st.type == "link" then
os.remove(path)
end
Code: https://src.fedoraproject.org/rpms/python-notebook/pull-request/17
I still get:
Error: Transaction test error:
file
/usr/lib/python3.8/site-packages/notebook/static/components/moment/min/loc ales.js from
install of python3-notebook-6.0.2-3.fc32.noarch conflicts
with file from package js-moment-2.18.1-6.fc30.noarch
file
/usr/lib/python3.8/site-packages/notebook/static/components/moment/min/mom ent-with-locales.js
from install of python3-notebook-6.0.2-3.fc32.noarch
conflicts with file from package js-moment-2.18.1-6.fc30.noarch
file
/usr/lib/python3.8/site-packages/notebook/static/components/moment/moment. js
from install of python3-notebook-6.0.2-3.fc32.noarch conflicts with
file from package js-moment-2.18.1-6.fc30.noarch
What am I doing wrong?
Note that I have tried to add this workaround instead:
mv moment moment.bundled ln -vfs moment.bundled moment
But that clears the update path from 6.0.2-1, but breaks it from 6.0.2-2.
Error: Transaction test error:
file /usr/lib/python3.8/site-packages/notebook/static/components/moment from
install of python3-notebook-6.0.2-3.fc32.noarch conflicts with file from package
python3-notebook-6.0.2-2.fc32.noarch
And I would need to add the other (uglier) scriptlet to replace a directory with
a symbolic link :(
Does anybody know what's wrong with this? I am clueless. Thanks.
-- Miro Hrončok -- Phone: +420777974800 IRC: mhroncok _______________________________________________ packaging mailing list -- packaging@lists.fedoraproject.org To unsubscribe send an email to packaging-leave@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/packaging@lists.fedoraproject .org
Workaround:
===================================================================== %global pypi_name notebook
Name: python-%{pypi_name} %global _docdir_fmt %{name}
# Updating this package? Update the list of bundled things bellow Version: 6.0.2
# a tag like rc1, set to %%{nil} if stable %global tag %{nil}
# upstream version, like 1.2.3rc1 %global uversion %{version}%{tag}
Release: 3%{tag}%{?dist} Summary: A web-based notebook environment for interactive computing License: BSD URL: http://jupyter.org Source0: %pypi_source %{pypi_name} %{uversion}
# Patch to use the TeX fonts from the MathJax package rather than STIXWeb # See BZ: 1581899, 1580129 Patch0: 0001-Use-MathJax-TeX-fonts-rather-than-STIXWeb.patch
BuildArch: noarch
BuildRequires: python3-setuptools BuildRequires: python3-devel
BuildRequires: git-core
# rebuilding js and css BuildRequires: /usr/bin/node
# Tests: BuildRequires: pandoc
BuildRequires: python3-dateutil BuildRequires: python3-ipykernel >= 4.8 BuildRequires: python3-ipython_genutils BuildRequires: python3-jupyter-client >= 5.2.0 BuildRequires: python3-jupyter-core >= 4.4.0 BuildRequires: python3-nbconvert BuildRequires: python3-nbformat BuildRequires: python3-nose BuildRequires: python3-nose-exclude BuildRequires: python3-nose_warnings_filters BuildRequires: python3-pandocfilters BuildRequires: python3-prometheus_client BuildRequires: python3-send2trash BuildRequires: python3-terminado >= 0.8.1 BuildRequires: python3-testpath BuildRequires: python3-tornado BuildRequires: python3-traitlets >= 4.2.1
# Docs: BuildRequires: python3-nbsphinx BuildRequires: python3-sphinx BuildRequires: python3-sphinx_rtd_theme BuildRequires: python3-sphinxcontrib-github-alt BuildRequires: python3-ipython-sphinx
%?python_enable_dependency_generator
%global _description \ The Jupyter Notebook is a web application that allows you to create and \ share documents that contain live code, equations, visualizations, and \ explanatory text. The Notebook has support for multiple programming \ languages, sharing, and interactive widgets.
%description %_description
%package -n python3-%{pypi_name} Summary: A web-based notebook environment for interactive computing %{?python_provide:%python_provide python3-%{pypi_name}} %{?python_provide:%python_provide python3-jupyter-%{pypi_name}} %{?python_provide:%python_provide python3-ipython-%{pypi_name}} Provides: python3-jupyter-%{pypi_name} = %{version}-%{release} Provides: python3-ipython-%{pypi_name} = %{version}-%{release} Obsoletes: python3-ipython-%{pypi_name} < 4 Provides: %{pypi_name} = %{version}-%{release} Provides: jupyter-%{pypi_name} = %{version}-%{release}
Requires: fontawesome-fonts Requires: fontawesome-fonts-web Requires: mathjax >= 2.6 Requires: js-backbone >= 1.2 Requires: js-marked >= 0.3 Requires: js-underscore >= 1.8.3
# Versions from bower.json Provides: bundled(bootstrap) = 3.4 Provides: bundled(bootstrap-tour) = 0.9.0 Provides: bundled(codemirror) = 5.48.4 Provides: bundled(create-react-class) = 15.6.3 Provides: bundled(es6-promise) = 1.0 Provides: bundled(google-caja) = 5669 Provides: bundled(jed) = 1.1.1 Provides: bundled(jquery) = 3.4.1 Provides: bundled(jquery-typeahead) = 2.0.0 Provides: bundled(jquery-ui) = 1.12 Provides: bundled(moment) = 2.19.3 Provides: bundled(react) = 16.0.0 Provides: bundled(requirejs) = 2.2 Provides: bundled(requirejs-text) = 2.0.15 Provides: bundled(requirejs-plugins) = 1.0.3 Provides: bundled(text-encoding) = 0.1 Provides: bundled(xterm.js) = 2.9.2 # See https://bugzilla.redhat.com/show_bug.cgi?id=1580129 #Provides: bundled(mathjax) = 2.7.4
%description -n python3-%{pypi_name} %_description
%package -n python-%{pypi_name}-doc Summary: notebook documentation %description -n python-%{pypi_name}-doc Documentation for notebook
%prep %autosetup -n %{pypi_name}-%{uversion} -S git
%build %py3_build
# generate html docs sphinx-build-3 -D intersphinx_timeout=1 docs/source html # remove the sphinx-build leftovers rm -rf html/.{doctrees,buildinfo}
%install %py3_install
# https://github.com/jupyter/notebook/issues/2373 rm -f %{buildroot}%{_bindir}/less-watch
# unbundle stuff pushd %{buildroot}%{python3_sitelib}/%{pypi_name}/static/components
rm -r font-awesome/fonts ln -vfs %{_datadir}/fonts/fontawesome font-awesome/fonts
#temporarily kept bundled to workaround #1580129 rm -r MathJax ln -vfs %{_datadir}/javascript/mathjax MathJax
rm -r backbone ln -vfs %{_datadir}/javascript/backbone backbone
rm -r marked/lib ln -vfs %{_datadir}/javascript/marked marked/lib
rm -r underscore ln -vfs %{_datadir}/javascript/underscore underscore
popd
mv %{buildroot}%{python3_sitelib}/%{pypi_name}/static/components/moment % {buildroot}%{python3_sitelib}/%{pypi_name}/static/components/moment2
%check # Workaround: OSError: [Errno 18] Invalid cross-device link: b'/tmp/...' -> b'/builddir/.local/share/Trash/files/...' mkdir .tmp export TMPDIR=$(pwd)/.tmp
nosetests-3 -v --exclude-dir notebook/tests/selenium
# This was previously unbundled, but no more # See https://docs.fedoraproject.org/en-US/packaging-guidelines/ Directory_Replacement/ %pretrans -n python3-%{pypi_name} -p <lua> path = "%{python3_sitelib}/%{pypi_name}/static/components/moment" st = posix.stat(path) if st and st.type == "link" then os.remove(path) end
%posttrans -n python3-%{pypi_name} -p <lua> originalpath = "%{python3_sitelib}/%{pypi_name}/static/components/moment" path = "%{python3_sitelib}/%{pypi_name}/static/components/moment2" st = posix.stat(path) if st and st.type == "directory" then os.rename(path, originalpath) end
%files -n python3-%{pypi_name} %doc README.md %license LICENSE %{_bindir}/jupyter-bundlerextension %{_bindir}/jupyter-nbextension %{_bindir}/jupyter-serverextension %{_bindir}/jupyter-notebook %{python3_sitelib}/%{pypi_name}-%{uversion}-py*.egg-info %{python3_sitelib}/%{pypi_name}/ %ghost %{python3_sitelib}/%{pypi_name}/static/components/moment
%files -n python-%{pypi_name}-doc %doc html %license LICENSE
%changelog =====================================================================
You will get message like this at update/uninstall but there are not fatal:
warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/moment.js: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/min/moment.min.js: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/min/moment-with-locales.min.js: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/min/moment-with-locales.js: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/min/locales.min.js: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/min/locales.js: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2/min: remove failed: No such file or directory warning: file /usr/lib/python3.8/site-packages/notebook/static/components/ moment2: remove failed: No such file or directory
This work because we are triggering the beingRemoved and have RPMTAG_PRETRANS path of the code which cause rConflicts to be 0:
if (beingRemoved) { rConflicts = handleRemovalConflict(fi, fx, otherFi, ofx); if (rConflicts && rpmteHaveTransScript(p, RPMTAG_PRETRANS)) { if (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST) rConflicts = 0; } }
Still I think the issue should be reported upstream.
Don't forget the %ghost directive so that the correct path is effectively handled by rpm on future removal/upgrade.
packaging@lists.fedoraproject.org