-
-
Notifications
You must be signed in to change notification settings - Fork 482
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Let iconv build on Cygwin without installing Cygwin libiconv package #13912
Comments
This comment has been minimized.
This comment has been minimized.
Reviewer: Jeroen Demeyer |
comment:2
I cannot test on Cygwin, but I assumes this solves your problem. Anyway, the patch itself looks good. |
comment:3
Hang on, isn't this a typo:
|
comment:4
Also, the URL gives |
comment:5
Indeed, I'll fix both issues. |
Attachment: iconv-1.13.1.p4.diff.gz Spkg diff, for review only. |
comment:6
Done, diff and spkg updated. |
comment:7
It will take me too long at this point of the semester to be able to check whether this is necessary to review it, but it would be nice if you could post a link to exactly what this change does in the configuration and why it works; otherwise Jeroen's review is fine with me. |
comment:8
Basically this just adds --disable-nls (we don't use nls anyway) to configure so that we don't link against libintl which would imply to install the ... libiconv devel package. |
comment:9
Okay, I just don't know what nls is, which is what I was really asking. After a significant amount of searching, I found this which explained it, and I definitely agree that we don't need internationalization - well, not at this time, though it would be awesome and amazing if someone somehow internationalized all of Sage. Which sounds like a very large job. |
Merged: sage-5.7.beta0 |
comment:11
I don't know why it only hit at beta1, not beta0, but rebasing has kind of destroyed my cygwin install, as now even bash breaks with fork errors at libiconv*.dll. My only guess it could be several instances of dlls with the same name... |
comment:12
I'd like to reopen this ticket. The same issue as here applies to the rest of Sage packages that create dlls with names clashing with dlls from Cygwin packages (or perhaps other ones). Creating a dll which has the same name as a Cygwin dll is asking for big trouble. In a nutshell, Windows is so dump that an application request to load a dll with a certain name is handled by searching certain sub-directories, in certain order. (Some of these subdirectories are actually specifies in Windows registry). In some cases the order of sub-directores in the PATH matters. I.e. when you link to a dlls, no full path information on the dll is stored. |
comment:13
Replying to @dimpase:
You mean unmerge it? |
comment:14
Replying to @jdemeyer:
It probably does not matter too much, whether it is unmerged immediately or not, as there are more tickets like this. It's the whole Cygwin port strategy that needs to be re-evaluated. By the way, a typical symptom of this problem, dll name clash, is a Cygwin fork failure... |
comment:15
In other words, we should go for maximal Cygwin packages (more like Sage-on-Gentoo) and not minimal (like the usual Sage Linux Distro)? |
comment:16
This could also be the problem I start encountering after a while... |
comment:17
Replying to @kcrisman:
this would be the most obvious solution to this, although not the only one possible; and actually it's not quite a solution, as Sage still has to include some dlls which can potentially conflict with ones from Cygwin, e.g. Singular and ECL are available as Cygwin packages, and there could (potentially) be naming clashes. Another way is to take more care with PATH contents, although this would require a better understanding of the issue, and in particular how rebaseall affects this (and whether rebaseall can handle this). There is a certain database of Cygwin dlls maintained by rebase/rebaseall (as I gather from e.g. here), and we need to understand what is stored there etc. Our situation reminds me of the one discussed here, but I don't understand the details. Note that there are lots of dlls that are produced on the fly when building We can also considering a special dll naming scheme. E.g. we can give all the dlls produced by Sage a certain prefix, e.g. "sagecyg", just as Cygwin's dlls all get prefix "cyg" (much more work, but it looks like a really watertight way to deal with this). The biggest problem now seems that we don't (at least I don't) have a good understanding how Windows loader, Cygwin rebase package (and that mysterios to me database), and Cygwin itself work together with dlls and where exactly the name clashes problem can hit. A related unanswered question is whether the 32-bit emulation on 64-bit Windows systems in the only environment in which Sage can be made to reliably work with the present Cygwin. (Leaving ancient Windows versions like XP alone). |
comment:18
Replying to @dimpase:
I'm aware of this problem, but I think you're being a little dramatic here. And I think that on linux we still have libraries without RPATH so that LD_LIBRARY_PATH is used and that's not that worse than the situation on windows. |
comment:19
Replying to @kcrisman:
Even on my seemingly lucky install, when I do install and reinstall too much things reabsing can go crazy and everything get useless and mined by fork errors, but I really fear its only a name clash issue, that just the forking hell which is clearly described on Cygwin pages. |
comment:20
Replying to @dimpase:
I don't think name clash is the main issue.
Our PATH looks pretty sane now, we look first in the Sage directories where the libraries we linked to are installed. I think the problem of forking, address clash issues, arises with or without name clashes. I also encountered such situations when I was tweaking max heap memory with peflags to let PARI's doctests pass.
Yep, that would make things easier hopefully.
I don't really get what you're thinking about.
|
comment:21
Replying to @jpflori:
An alternative theory is that my Cygwin install got nuked as I did not remove the previously built version of Sage, and the address space for the Cygwin dlls was not able to accommodate that much (my Cygwin install is almost full, I think). So I have removed /etc/rebase* database files and the previous Sage installs, and after re-running cygwin setup I was able to run rebaseall without errors. |
Crafting a somehow minimal Cygwin install, I got the libiconv2 package with binaries installed but the libiconv one with dev things is not.
Because of that building our libiconv spkg fails because it uses the system libintl which points to libiconv files provided in the dev libiconv package (and not the libiconv2).
Maybe the easiest solution is to prereq the installation of the dev libiconv package, but we can also go by passing --disable-nls to configure.
Use spkg at
http://boxen.math.washington.edu/home/jpflori/iconv-1.13.1.p4.spkg
(I'll investigate in a follow-up ticket if building our own libiconv is actually needed on Cygwin nowadays.)
CC: @kcrisman
Component: packages: standard
Keywords: cygwin iconv spkg
Author: Jean-Pierre Flori
Reviewer: Jeroen Demeyer
Merged: sage-5.7.beta0
Issue created by migration from https://trac.sagemath.org/ticket/13912
The text was updated successfully, but these errors were encountered: