JuliaLang / julia

The Julia Programming Language
https://julialang.org/
MIT License
45.16k stars 5.45k forks source link

Packages will not install in the Julia.app 0.1.2 Mac OS X distribution #2518

Closed cwneville closed 11 years ago

cwneville commented 11 years ago

Issue: Packages such as Gadfly won't install due to repeated statements such as prefix=/Users/viral/.julia/Cairo/deps/usr (in cairo-script.pc) and

/Users/viral/.julia/Cairo/deps/usr/var/cache/fontconfig (in fonts.conf) scattered throughout numerous files in the OS X Julia.app (version 0.1.2) distribution. The problem is that unless you happen to be user viral, the directories do not exist. Possible solution: rewrite the package configuration files in Julia.app to install packages in the Julia.app directory, say in Julia.app/Contents/Contents. For portability (so Julia.app could be installed in a directory such as LocalApps rather than Applications), give the user a choice as to where it should be installed so the prefixes could be adjusted at install time. In fact, the script could be written in Julia and run, not during installation, but when Julia is first run. This would also give the user the ability to change things by rerunning the script if he or she wanted to adjust things later.
cwneville commented 11 years ago

In fact, NO Packages seem to be installable with this version of OS X Julia (0.1.2). Examples:

Pkg.add("ArgParse") ERROR: ArgParse has no versions compatible with your fixed requirements (e.g. julia version). in ReqsStruct at pkg/resolve.jl:100 in resolve at pkg/resolve.jl:1204 in _resolve at pkg.jl:265 in anonymous at no file:155 in cd at file.jl:26 in cd_pkgdir at pkg.jl:34 in add at pkg.jl:135 in add at pkg.jl:167

Pkg.add("Gaston") ERROR: key not found: ArgParse in ref at dict.jl:420 in gen_pvers at pkg/resolve.jl:188 in PkgStruct at pkg/resolve.jl:167 in resolve at pkg/resolve.jl:1207 in _resolve at pkg.jl:265 in anonymous at no file:155 in cd at file.jl:26 in cd_pkgdir at pkg.jl:34 in add at pkg.jl:135 in add at pkg.jl:167

Installation of Pkg.add("Gadfly") and Pkg.add("Winston") fail the same way.

pao commented 11 years ago

cc @StefanKarpinski

ViralBShah commented 11 years ago

Does anyone know how to make platform independent builds of Cairo and other libraries? I am just using what is built through BinDeps when installing Cairo.jl, and copying the files into the mac folder. Perhaps there are environment variables that can be set.

StefanKarpinski commented 11 years ago

What's the contents of your ~/.julia/REQUIRE file and what version of Julia are you using?

cwneville commented 11 years ago

Julia version is latest OS X .dmg release, version 0.1.2

The ~/.julia/REQUIRE file is empty.

cwneville commented 11 years ago

Viral -- I don't know how without going through the code built through BinDeps with a text editor and replacing instances of /User/viral with a PATH variable, maybe something like ${PREFIX_PATH}, then setting PREFIX_PATH in the sh script julia.app/Contents/Resources/script you wrote. You would also have to copy at least part of the BinDeps directory into the Mac folder so the font repository was accessible, and be sure the fonts were actually included.

Right now, many fonts are linked to files that don't exist, except on your system. A good way to start might be to actually include the fonts in the julia.app/Contents/Resources/julia/etc/fonts/conf.d directory, or maybe you could symlink link to fonts in existing directories such as /usr/X11R6/lib/X11/fonts. You might also include the lines:

/System/Library/Fonts
<dir>/Library/Fonts</dir>
<dir>~/Library/Fonts

in the julia.app/Contents/Resources/julia/etc/fonts/fonts.conf file. But there must be a more elegant solution.

This raises another question: If we have Cairo already installed, why did Pkg.add("Gadfly") try to install Cairo when I tried to install Gadfly on the Julia OS X release immediately previous to the present one (present one is version 0.1.2)?

Thanks for all the work you have already done on this. -- Chip Neville (cwneville)

ViralBShah commented 11 years ago

I will see if the fonts stuff can be fixed somehow.

There is an issue open for both Cairo.jl and Tk.jl, where they should not prompt the user to install, if the libraries are found. There is no way for someone who downloads Julia.app to know that they should choose "skip" here.

ViralBShah commented 11 years ago

It seems that the issue about the paths in cairo.pc can be resolved by setting PKG_CONFIG_PATH.

cwneville commented 11 years ago

Viral - What do I set it to? And where do I set it?

cwneville commented 11 years ago

Viral - Perhaps ArgParse is working properly: Is it already installed? See:

julia> Pkg.add("ArgParse")
ERROR: ArgParse has no versions compatible with your fixed requirements (e.g. julia version).
 in ReqsStruct at pkg/resolve.jl:100
 in resolve at pkg/resolve.jl:1204
 in _resolve at pkg.jl:265
 in anonymous at no file:155
 in cd at file.jl:26
 in cd_pkgdir at pkg.jl:34
 in add at pkg.jl:135
 in add at pkg.jl:167

julia>

Maybe the error message simply needs to be improved to "ArgParse is already installed and should not be reinstalled."

[pao: formatting]

cwneville commented 11 years ago

Maybe fixing PKG_CONFIG_PATH will also fix this problem:

julia> Pkg.add("Calculus")
ERROR: key not found: ArgParse
 in ref at dict.jl:420
 in gen_pvers at pkg/resolve.jl:188
 in PkgStruct at pkg/resolve.jl:167
 in resolve at pkg/resolve.jl:1207
 in _resolve at pkg.jl:265
 in anonymous at no file:155
 in cd at file.jl:26
 in cd_pkgdir at pkg.jl:34
 in add at pkg.jl:135
 in add at pkg.jl:167

julia>

[pao: formatting; use triple backtics to set off code sections]

cwneville commented 11 years ago

Last comment of the day: In the file julia.app/Contents/Resources/script , should

GIT_TEMPLATE_DIR={ROOT}/julia/share/git-core exec '${ROOT}/julia/bin/julia' be changed to GIT_TEMPLATE_DIR=${ROOT}/julia/share/git-core exec '${ROOT}/julia/bin/julia'

ViralBShah commented 11 years ago

The PKG_CONFIG_PATH needs to be set the same way as GIT_TEMPLATE_DIR and others.

ViralBShah commented 11 years ago

Could you update script with PKG_CONFIG_PATH and see if it helps? If so, I will add it and build new packages.

As for ArgParse, could you do Pkg.update() and try again? Does your ~/.julia have an ArgParse already? This is something that @pao or @StefanKarpinski can help debug.

ViralBShah commented 11 years ago

BTW, PKG_CONFIG_PATH has nothing do with Julia's pkg. It is a config path for the system pkg-config, that should resolve the issue of cairo.pc and such.

ViralBShah commented 11 years ago

Could you also nuke your entire ~/.julia, do Pkg.update(), try installing Gadfly and Calculus, and post the entire output?

cwneville commented 11 years ago

I set PKG_CONFIG_PATH in both places in Julia.app/Contents/Resources/script as follows: PKG_CONFIG_PATH=${ROOT}/julia/share/git-core

Should it instead be PKG_CONFIG_PATH=${ROOT}/julia/share/git-core:$PKG_CONFIG_PATH to preserve any system prior PKG_CONFIG_PATH values? $PKG_CONFIG_PATH is not configured on my system. Here is an experiment:

$ PKG_CONFIG_PATH=/usr/share:$PKG_CONFIG_PATH
$ echo $PKG_CONFIG_PATH
/usr/share:

Will the colon at the end cause a problem?

As you asked, I nuked my .julia directory and double clicked on Julia.app. Here is the output:

PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin
PKG_CONFIG_PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/share/git-core
GIT_EXEC_PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/libexec/git-core GIT_TEMPLATE_DIR=/Applications/LocalApps/Julia.app/Contents/Resources/julia/share/git-core exec '/Applications/LocalApps/Julia.app/Contents/Resources/julia/bin/julia'
Athena:~ chip$ PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin
Athena:~ chip$ PKG_CONFIG_PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/share/git-core
Athena:~ chip$ GIT_EXEC_PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/libexec/git-core GIT_TEMPLATE_DIR=/Applications/LocalApps/Julia.app/Contents/Resources/julia/share/git-core exec '/Applications/LocalApps/Julia.app/Contents/Resources/julia/bin/julia'

julia> Pkg.add("Calculus")
MESSAGE: Auto-initializing default package repository /Users/chip/.julia.
Initialized empty Git repository in /Users/chip/.julia/.git/
[master (root-commit) 3a4a4a7] Initial empty commit
Cloning into 'METADATA'...
remote: Counting objects: 3850, done.
remote: Compressing objects: 100% (1791/1791), done.
remote: Total 3850 (delta 587), reused 3819 (delta 560)
Receiving objects: 100% (3850/3850), 314.03 KiB | 190 KiB/s, done.
Resolving deltas: 100% (587/587), done.
[master f74a68a] Empty package repo
 3 files changed, 4 insertions(+)
 create mode 100644 .gitmodules
 create mode 160000 METADATA
 create mode 100644 REQUIRE
ERROR: key not found: ArgParse
 in ref at dict.jl:420
 in gen_pvers at pkg/resolve.jl:188
 in PkgStruct at pkg/resolve.jl:167
 in resolve at pkg/resolve.jl:1207
 in _resolve at pkg.jl:265
 in anonymous at no file:155
 in cd at file.jl:26
 in cd_pkgdir at pkg.jl:34
 in add at pkg.jl:135
 in add at pkg.jl:167

julia> quit()

[Process completed]

So it doesn't work. Next, I nuked my .julia directory again, started up Julia, and ran Pkg.update()

julia> Pkg.update()
MESSAGE: Auto-initializing default package repository /Users/chip/.julia.
Initialized empty Git repository in /Users/chip/.julia/.git/
[master (root-commit) 04a06aa] Initial empty commit
Cloning into 'METADATA'...
remote: Counting objects: 3850, done.
remote: Compressing objects: 100% (1791/1791), done.
remote: Total 3850 (delta 587), reused 3819 (delta 560)
Receiving objects: 100% (3850/3850), 314.03 KiB | 225 KiB/s, done.
Resolving deltas: 100% (587/587), done.
[master 40d6016] Empty package repo
 3 files changed, 4 insertions(+)
 create mode 100644 .gitmodules
 create mode 160000 METADATA
 create mode 100644 REQUIRE
Already up-to-date.
ERROR: key not found: ArgParse
 in ref at dict.jl:420
 in gen_pvers at pkg/resolve.jl:188
 in PkgStruct at pkg/resolve.jl:167
 in resolve at pkg/resolve.jl:1207
 in _resolve at pkg.jl:265
 in anonymous at no file:524
 in cd at file.jl:26
 in cd_pkgdir at pkg.jl:34
 in update at pkg.jl:499

julia> Pkg.add("ArgParse")
ERROR: ArgParse has no versions compatible with your fixed requirements (e.g. julia version).
 in ReqsStruct at pkg/resolve.jl:100
 in resolve at pkg/resolve.jl:1204
 in _resolve at pkg.jl:265
 in anonymous at no file:155
 in cd at file.jl:26
 in cd_pkgdir at pkg.jl:34
 in add at pkg.jl:135
 in add at pkg.jl:167
julia> Pkg.add("Calculus")
ERROR: key not found: ArgParse
 in ref at dict.jl:420
 in gen_pvers at pkg/resolve.jl:188
 in PkgStruct at pkg/resolve.jl:167
 in resolve at pkg/resolve.jl:1207
 in _resolve at pkg.jl:265
 in anonymous at no file:155
 in cd at file.jl:26
 in cd_pkgdir at pkg.jl:34
 in add at pkg.jl:135
 in add at pkg.jl:167

julia> quit()

[Process completed]

So it still doesn't work.

By the way, there is a simple way to get a clean system to test your installation on your development machine, without going to the expense of buying another Mac. Download VirtualBox, do a clean install of the Mac OS X operating system on it, copy your Julia.dmg file to your new virtual machine's /Applications folder, double click, and see what happens. VirtualBox is available for free from Oracle at https://www.virtualbox.org. You can also find information on the BOINC website at http://boinc.berkeley.edu/trac/wiki/VmServer

[pao: formatting]

cwneville commented 11 years ago

Viral - I can now load packages. The problem was that I keep all applications I download and install in a subdirectory of /Applications named LocalApps. When I nuked my .julia file, reinstalled Julia.app in /Applications (from the .dmg file) and modified the script file as directed, I was able to install applications using Pkg.add. But installing Gadfly causes all its dependencies, including Cairo and ArgParse, to be reinstalled. I could use Calculus, but still cannot use Compose or Gadfly. So there are three problems:

  1. One with Cairo, which can't seem to figure out that ArgParse is already installed. (At least, I think that ArgParse is already installed because I was getting error messages from it earlier. Is there a Pkg.list() or something to get a list of already installed packages? Note that I never installed ArgParse until I tried installing Gadfly.) Note that when asked how to compile Cairo, I chose the skip option.
  2. Still one with fontconfig in "using Compose". I did not change the conf.d files or the fonts.conf file in the Julia.app/Contents/Resources/julia/etc./fonts directory. The links in conf.d still lead to files which don't exist.
  3. Another problem with julia.app itself. It cannot be moved but must reside in /Applications folder. All other apps I have installed can be moved into the /Applications/LocalApps folder.

Here is the terminal output from my first Julia.app terminal session with my new installation of Julia.app and a nuked .julia directory:

$ PATH=/Applications/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin $ PKG_CONFIG_PATH=/Applications/Julia.app/Contents/Resources/julia/share/git-core $ GIT_EXEC_PATH=/Applications/Julia.app/Contents/Resources/julia/libexec/git-core GIT_TEMPLATEDIR=/Applications/Julia.app/Contents/Resources/julia/share/git-core exec '/Applications/Julia.app/Contents/Resources/julia/bin/julia' () | A fresh approach to technical computing () | () () | Documentation: http://docs.julialang.org | | | Type "help()" to list help topics | | | | | | |/ ` | | | | || | | | (| | | Version 0.1.2+111718311.r1187 / |_'||_|'_| | Commit 1187040d02 (2013-03-08 10:00:57) |__/ |

julia> Pkg.add("Calculus") MESSAGE: Installing Calculus v0.0.0 Cloning into 'Calculus'... remote: Counting objects: 143, done. remote: Compressing objects: 100% (116/116), done. remote: Total 143 (delta 78), reused 88 (delta 23) Receiving objects: 100% (143/143), 29.73 KiB, done. Resolving deltas: 100% (78/78), done.

julia> Pkg.add("Gadfly") MESSAGE: Installing ArgParse v0.1.0 Cloning into 'ArgParse'... remote: Counting objects: 109, done. remote: Compressing objects: 100% (61/61), done. remote: Total 109 (delta 48), reused 85 (delta 24) Receiving objects: 100% (109/109), 29.65 KiB, done. Resolving deltas: 100% (48/48), done. MESSAGE: Installing BinDeps v0.0.0 Cloning into 'BinDeps'... remote: Counting objects: 26, done. remote: Compressing objects: 100% (13/13), done. remote: Total 26 (delta 7), reused 24 (delta 5) Receiving objects: 100% (26/26), 7.01 KiB, done. Resolving deltas: 100% (7/7), done. MESSAGE: Installing Cairo v0.0.0 Cloning into 'Cairo'... remote: Counting objects: 180, done. remote: Compressing objects: 100% (130/130), done. remote: Total 180 (delta 72), reused 134 (delta 26) Receiving objects: 100% (180/180), 39.66 KiB, done. Resolving deltas: 100% (72/72), done. MESSAGE: Running build script for package Cairo /Users/chip/.julia/Cairo/deps MESSAGE: There are multiple options available for installing this dependency:

julia> using Compose Fontconfig error: Cannot load default config file

julia> using Gadfly Warning: New definition ref(DataArray{T,N},Union(BitArray{1},Array{Bool,1})) is ambiguous with ref(DataArray{T<:Number,N},Union(Ranges{T},BitArray{1},Array{T,1})) at /Users/chip/.julia/DataFrames/src/dataarray.jl:339. Make sure ref(DataArray{T<:Number,N},Union(BitArray{1},Array{Bool,1})) is defined first. ERROR: could not open file /Users/chip/gzip.jl in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 in include_from_node1 at loading.jl:76 in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 at /Users/chip/.julia/DataFrames/src/RDA.jl:4

julia> quit()

[Process completed]

Here is a directory listing for my .julia directory:

$ cd .julia $ ls -al total 16 drwxr-xr-x 22 chip staff 748 Mar 11 21:22 . drwxr-xr-x+ 26 chip staff 884 Mar 11 21:18 .. drwxr-xr-x 11 chip staff 374 Mar 11 21:22 .git -rw-r--r-- 1 chip staff 1495 Mar 11 21:22 .gitmodules drwxr-xr-x 9 chip staff 306 Mar 11 21:21 ArgParse drwxr-xr-x 7 chip staff 238 Mar 11 21:21 BinDeps drwxr-xr-x 8 chip staff 272 Mar 11 21:21 Cairo drwxr-xr-x 10 chip staff 340 Mar 11 21:21 Calculus drwxr-xr-x 7 chip staff 238 Mar 11 21:21 Codecs drwxr-xr-x 5 chip staff 170 Mar 11 21:21 Color drwxr-xr-x 11 chip staff 374 Mar 11 21:21 Compose drwxr-xr-x 17 chip staff 578 Mar 11 21:21 DataFrames drwxr-xr-x 7 chip staff 238 Mar 11 21:21 Distributions drwxr-xr-x 12 chip staff 408 Mar 11 21:21 Gadfly drwxr-xr-x 5 chip staff 170 Mar 11 21:21 Iterators drwxr-xr-x 7 chip staff 238 Mar 11 21:21 JSON drwxr-xr-x 119 chip staff 4046 Mar 11 21:18 METADATA drwxr-xr-x 10 chip staff 340 Mar 11 21:21 Mustache drwxr-xr-x 9 chip staff 306 Mar 11 21:21 Options -rw-r--r-- 1 chip staff 16 Mar 11 21:21 REQUIRE drwxr-xr-x 8 chip staff 272 Mar 11 21:21 Stats drwxr-xr-x 7 chip staff 238 Mar 11 21:22 TextWrap

Here is a directory listing for ArgParse:

$ cd ArgParse $ ls -al total 40 drwxr-xr-x 9 chip staff 306 Mar 11 21:21 . drwxr-xr-x 22 chip staff 748 Mar 11 21:22 .. -rw-r--r-- 1 chip staff 33 Mar 11 21:21 .git -rw-r--r-- 1 chip staff 1158 Mar 11 21:21 LICENSE.md -rw-r--r-- 1 chip staff 76 Mar 11 21:21 README.md -rw-r--r-- 1 chip staff 33 Mar 11 21:21 REQUIRE -rw-r--r-- 1 chip staff 6 Mar 11 21:21 VERSION drwxr-xr-x 9 chip staff 306 Mar 11 21:21 examples drwxr-xr-x 3 chip staff 102 Mar 11 21:21 src

Here is a directory listing for src:

$ cd src $ ls -al drwxr-xr-x 3 chip staff 102 Mar 11 21:21 . drwxr-xr-x 9 chip staff 306 Mar 11 21:21 .. -rw-r--r-- 1 chip staff 63730 Mar 11 21:21 ArgParse.jl

Here is a directory listing for Cairo (I'll leave out the cd's):

drwxr-xr-x 8 chip staff 272 Mar 11 21:21 . drwxr-xr-x 22 chip staff 748 Mar 11 21:22 .. -rw-r--r-- 1 chip staff 30 Mar 11 21:21 .git -rw-r--r-- 1 chip staff 58 Mar 11 21:21 .gitignore -rw-r--r-- 1 chip staff 40 Mar 11 21:21 README.md -rw-r--r-- 1 chip staff 13 Mar 11 21:21 REQUIRE drwxr-xr-x 4 chip staff 136 Mar 11 21:21 deps drwxr-xr-x 4 chip staff 136 Mar 11 21:21 src

For deps:

drwxr-xr-x 8 chip staff 272 Mar 11 21:21 .. -rw-r--r-- 1 chip staff 5192 Mar 11 21:21 build.jl -rw-r--r-- 1 chip staff 973 Mar 11 21:21 ext.jl

For src:

drwxr-xr-x 4 chip staff 136 Mar 11 21:21 . drwxr-xr-x 8 chip staff 272 Mar 11 21:21 .. -rw-r--r-- 1 chip staff 30981 Mar 11 21:21 Cairo.jl -rw-r--r-- 1 chip staff 12675 Mar 11 21:21 constants.jl

ViralBShah commented 11 years ago

I am going to set up a VirtualBox with a clean install. I am upgrading my computer to 10.8 anyways, and will create a cleanroom in VirtualBox too. This may take a few days though.

Some of these problems are package related problems, which I don't think have to do with the mac application. The fontconfig thing is definitely something I need to address in the app bundle.

I need to see why Julia.app can only work from Applications. In fact, I have Julia.app on my desktop, and I never put anything in Applications. There is nothing in there that depends on /Applications as far as I can tell.

Thanks for staying with this.

cwneville commented 11 years ago

Viral - Should GIT_TEMPLATE_DIR=${ROOT}/julia/share/git-core in the file julia.app/Contents/Resources/script be changed to GIT_TEMPLATE_DIR=${ROOT}/julia/share/git-core/templates

ViralBShah commented 11 years ago

I don't know for sure - I had done a bit of experimentation but still have to get a clean OS X image. Does it still give the error about templates, and changing to the new path fix it?

cwneville commented 11 years ago

Viral - made change, nuked .julia directory, ran julia, and didn't get error about templates. Also fixed stuff in fonts.h, etc and didn't get the fontconfig error. But still got errors:

$ PATH=/Applications/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin $ FONTCONFIG_PATH=/Applications/Julia.app/Contents/Resources/julia/etc/fonts $ PKG_CONFIG_PATH=/Applications/Julia.app/Contents/Resources/julia/share/git-core $ GIT_EXEC_PATH=/Applications/Julia.app/Contents/Resources/julia/libexec/git-core GIT_TEMPLATE_DIR=/Applications/Julia.app/Contents/Resources/julia/share/git-core/templates exec '/Applications/Julia.app/Contents/Resources/julia/bin/julia'

julia> Pkg.update() MESSAGE: Auto-initializing default package repository /Users/chip/.julia. Initialized empty Git repository in /Users/chip/.julia/.git/ [master (root-commit) 2e94664] Initial empty commit Cloning into 'METADATA'... remote: Counting objects: 4073, done. remote: Compressing objects: 100% (1900/1900), done. remote: Total 4073 (delta 625), reused 4047 (delta 603) Receiving objects: 100% (4073/4073), 333.66 KiB | 299 KiB/s, done. Resolving deltas: 100% (625/625), done. [master bdd330c] Empty package repo 3 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 METADATA create mode 100644 REQUIRE Already up-to-date.

julia> Pkg.add("Compose") MESSAGE: Installing BinDeps v0.0.0 Cloning into 'BinDeps'... remote: Counting objects: 26, done. remote: Compressing objects: 100% (15/15), done. remote: Total 26 (delta 7), reused 22 (delta 3) Receiving objects: 100% (26/26), 7.02 KiB, done. Resolving deltas: 100% (7/7), done. MESSAGE: Installing Cairo v0.0.0 Cloning into 'Cairo'... remote: Counting objects: 180, done. remote: Compressing objects: 100% (130/130), done. remote: Total 180 (delta 72), reused 134 (delta 26) Receiving objects: 100% (180/180), 39.66 KiB, done. Resolving deltas: 100% (72/72), done. MESSAGE: Running build script for package Cairo /Users/chip/.julia/Cairo/deps MESSAGE: There are multiple options available for installing this dependency:

julia> using(Compose) ERROR: could not open file /Users/chip/Iterators.jl in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 at /Users/chip/.julia/Compose/src/Compose.jl:3

julia> ENV GIT_TEMPLATE_DIR=/Applications/Julia.app/Contents/Resources/julia/share/git-core/templates GIT_EXEC_PATH=/Applications/Julia.app/Contents/Resources/julia/libexec/git-core TERM_PROGRAM=Apple_Terminal TERM=xterm-256color SHELL=/bin/bash TMPDIR=/var/folders/1f/cttwr45x5vjg1c19wmg8n2sm0000gn/T/ Apple_PubSub_Socket_Render=/tmp/launch-aEKhIQ/Render TERM_PROGRAM_VERSION=303.2 TERM_SESSION_ID=10D38F47-ADF8-4030-9A57-C8731DC428AF USER=chip COMMAND_MODE=unix2003 SSH_AUTH_SOCK=/tmp/launch-lSFvGR/Listeners __CF_USER_TEXT_ENCODING=0x1F5:0:0 Apple_Ubiquity_Message=/tmp/launch-3Hiskd/Apple_Ubiquity_Message PATH=/Users/chip/.julia/Cairo/deps/usr/bin:/Applications/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin PWD=/Users/chip LANG=en_US.UTF-8 SHLVL=0 HOME=/Users/chip LOGNAME=chip DISPLAY=/tmp/launch-T4bwqj/org.x:0 LINES=24 COLUMNS=80 PKG_CONFIG_PATH=/Users/chip/.julia/Cairo/deps/usr/lib/pkgconfig PKG_CONFIG_LIBDIR=/Users/chip/.julia/Cairo/deps/usr/lib/pkgconfig

Note that FONTCONFIG_PATH environment variable is not available to julia. Could explain lots of fontconfig errors.

Used the skip option when Pkg.add("Compose) came to Cairo

And here's what I did to try to make the fontconfig configuration files visible and let julia access Mac system fonts:

  1. Added 05-osx-fonts.conf from Mac X11 distribution to the file julia.app/Contents/Resources/julia/share/fontconfig/conf.avail
  2. For portability, changed /Users/viral/.julia/Cairo/deps/usr/etc/fonts/conf.d

    to

    conf.d

    in the file julia.app/Contents/Resources/julia/etc/fonts/fonts.conf fixed the broken links in /Applications/julia.app/Contents/Resources/julia/etc/fonts/conf.d by removing the file julia.app/Contents/Resources/julia/etc/fonts/conf.d and then (in the julia.app/Contents/Resources/julia/etc/fonts directory) using relative symbolic links by doing ln -s ../../share/fontconfig/conf.avail conf.d

  3. For portability, changed /Users/viral/.julia/Cairo/deps/usr/var/cache/fontconfig

    to

    fontconfigcache

    in the file julia.app/Contents/Resources/julia/etc/fonts/fonts.conf and use relative symbolic links by doing ln -s ../../var/cache/fontconfig fontconfigcache in the directory julia.app/Contents/Resources/julia/etc/fonts

  4. Fix the font configuration file path by adding FONTCONFIG_PATH=${ROOT}/julia/etc/fonts to the /script file

Note: From the file /Applications/julia.app/Contents/Resources/julia/share/doc/fontconfig/fontconfig-user.pdf:

Environment variables

FONTCONFIG_FILE is used to override the default configuration file. FONTCONFIG_PATH is used to override the default configuration directory.

ViralBShah commented 11 years ago

Thanks - this is useful. I need a way to use environment variables rather than editing stuff in config files, to the extent possible. Also, X11 is usually only installed when you get Xcode - and hence I am trying to avoid using any of X11 stuff.

cwneville commented 11 years ago

Viral -

There are a large number of broken links in julia.app/Contents/Resources/julia/share/julia

Does git use the .pc files in julia.app/Contents/Resources/julia/lib/pkgconfig to tell added packages where to find their libraries? Probably not, but in case we need to compile packages from source, maybe the .pc files need to have their prefixes changed from, eg, /Users/viral/.julia/Cairo/deps/usr to a relative paths in the julia.app directory?

Removed both FONTCONFIG_PATH=${ROOT}/julia/etc/fonts and both PKG_CONFIG_PATH=${ROOT}/julia/share/git-core lines from Julia.app/Contents/Resources/script to see what would happen because ENV indicates that julia does not recognize these variables. Maybe I need to export them? But ENV shows that GIT_EXEC_PATH and GIT_TEMPLATE_DIR are recognized without being exported, so maybe not.

With these changes, julia> using(Compose) gives me the same could not open file /Users/chip/Iterators.jl error.

Nuked my .julia_history and .julia directories and started over: Reran Julia.app and eventually got the same error. I think my short term solution is to not add any packages with dependencies on Cairo. If I want to graph something, I'll save the data to a file and use an external graphing program.

Here is the result of rerunning Julia.app:

$ PATH=/Applications/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin $ GIT_EXEC_PATH=/Applications/Julia.app/Contents/Resources/julia/libexec/git-core GIT_TEMPLATE_DIR=/Applications/Julia.app/Contents/Resources/julia/share/git-core/templates exec '/Applications/Julia.app/Contents/Resources/julia/bin/julia'

julia> ENV GIT_TEMPLATE_DIR=/Applications/Julia.app/Contents/Resources/julia/share/git-core/templates GIT_EXEC_PATH=/Applications/Julia.app/Contents/Resources/julia/libexec/git-core TERM_PROGRAM=Apple_Terminal TERM=xterm-256color SHELL=/bin/bash TMPDIR=/var/folders/1f/cttwr45x5vjg1c19wmg8n2sm0000gn/T/ Apple_PubSub_Socket_Render=/tmp/launch-OZ3b4T/Render TERM_PROGRAM_VERSION=303.2 TERM_SESSION_ID=69644F65-A5FA-43DF-B2FC-BA5BCA8CB5A9 USER=chip COMMAND_MODE=unix2003 SSH_AUTH_SOCK=/tmp/launch-ZXYE7D/Listeners __CF_USER_TEXT_ENCODING=0x1F5:0:0 Apple_Ubiquity_Message=/tmp/launch-qILQWA/Apple_Ubiquity_Message PATH=/Applications/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin PWD=/Users/chip LANG=en_US.UTF-8 SHLVL=1 HOME=/Users/chip LOGNAME=chip DISPLAY=/tmp/launch-eDjdsT/org.x:0 LINES=24 COLUMNS=80

julia> Pkg.update() MESSAGE: Auto-initializing default package repository /Users/chip/.julia. Initialized empty Git repository in /Users/chip/.julia/.git/ [master (root-commit) 6d0cf42] Initial empty commit Cloning into 'METADATA'... remote: Counting objects: 4079, done. remote: Compressing objects: 100% (1904/1904), done. remote: Total 4079 (delta 626), reused 4052 (delta 603) Receiving objects: 100% (4079/4079), 334.13 KiB | 260 KiB/s, done. Resolving deltas: 100% (626/626), done. [master faceff6] Empty package repo 3 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 METADATA create mode 100644 REQUIRE Already up-to-date.

julia> Pkg.add("Compose") MESSAGE: Installing BinDeps v0.0.0 Cloning into 'BinDeps'... remote: Counting objects: 35, done. remote: Compressing objects: 100% (20/20), done. remote: Total 35 (delta 11), reused 29 (delta 5) Receiving objects: 100% (35/35), 8.00 KiB, done. Resolving deltas: 100% (11/11), done. MESSAGE: Installing Cairo v0.0.0 Cloning into 'Cairo'... remote: Counting objects: 180, done. remote: Compressing objects: 100% (130/130), done. remote: Total 180 (delta 72), reused 134 (delta 26) Receiving objects: 100% (180/180), 39.66 KiB, done. Resolving deltas: 100% (72/72), done. MESSAGE: Running build script for package Cairo /Users/chip/.julia/Cairo/deps MESSAGE: There are multiple options available for installing this dependency:

and I got the same error:

julia> using(Compose) ERROR: could not open file /Users/chip/Iterators.jl

cwneville commented 11 years ago

Viral -

Good News! Amazingly enough, when I nuked my .julia_history and .julia directories and moved Julia.app to my LocalApps subdirectory, I could ADD PACKAGES!! Unfortunately, I got an error when I attempted to use the very useful DataFrames package:

julia> ENV GIT_TEMPLATE_DIR=/Applications/LocalApps/Julia.app/Contents/Resources/julia/share/git-core/templates GIT_EXEC_PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/libexec/git-core TERM_PROGRAM=Apple_Terminal TERM=xterm-256color SHELL=/bin/bash TMPDIR=/var/folders/1f/cttwr45x5vjg1c19wmg8n2sm0000gn/T/ Apple_PubSub_Socket_Render=/tmp/launch-OZ3b4T/Render TERM_PROGRAM_VERSION=303.2 TERM_SESSION_ID=E404FE75-4F92-4823-96EC-221EE384499C USER=chip COMMAND_MODE=unix2003 SSH_AUTH_SOCK=/tmp/launch-ZXYE7D/Listeners __CF_USER_TEXT_ENCODING=0x1F5:0:0 Apple_Ubiquity_Message=/tmp/launch-qILQWA/Apple_Ubiquity_Message PATH=/Applications/LocalApps/Julia.app/Contents/Resources/julia/bin:/usr/bin:/bin:/usr/sbin:/sbin PWD=/Users/chip LANG=en_US.UTF-8 SHLVL=1 HOME=/Users/chip LOGNAME=chip DISPLAY=/tmp/launch-eDjdsT/org.x:0 LINES=24 COLUMNS=80

julia> using(DataFrames) Warning: New definition ref(DataArray{T,N},Union(Array{Bool,1},BitArray{1})) is ambiguous with ref(DataArray{T<:Number,N},Union(Ranges{T},BitArray{1},Array{T,1})) at /Users/chip/.julia/DataFrames/src/dataarray.jl:339. Make sure ref(DataArray{T<:Number,N},Union(Array{Bool,1},BitArray{1})) is defined first. ERROR: could not open file /Users/chip/gzip.jl in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 in include_from_node1 at loading.jl:76 in include_from_node1 at loading.jl:76 in reload_path at loading.jl:96 in require at loading.jl:48 at /Users/chip/.julia/DataFrames/src/RDA.jl:4

julia> Pkg.add("Calculus") MESSAGE: Installing Calculus v0.0.0 Cloning into 'Calculus'... remote: Counting objects: 143, done. remote: Compressing objects: 100% (116/116), done. remote: Total 143 (delta 78), reused 88 (delta 23) Receiving objects: 100% (143/143), 29.73 KiB, done. Resolving deltas: 100% (78/78), done.

julia> using(Calculus)

julia> derivative(x -> sin(x), 0.0) 0.9999999999938886

julia> cos(0.00) 1.0

cwneville commented 11 years ago

Viral - On my wife's system (10.6 still) where NO DEVELOPER TOOLS have been installed, she still has the X11 directories. Anyway, I didn't use any X11 stuff, but simply copied an XML font configuration file and installed it in conf.avail or whatever, which allows fontconfig to access Library and System/Library fonts.

I'm very happy you found this way overly verbose stuff useful.

On Sat, Mar 16, 2013 at 4:59 AM, Viral B. Shah notifications@github.comwrote:

Thanks - this is useful. I need a way to use environment variables rather than editing stuff in config files, to the extent possible. Also, X11 is usually only installed when you get Xcode - and hence I am trying to avoid using any of X11 stuff.

— Reply to this email directly or view it on GitHubhttps://github.com/JuliaLang/julia/issues/2518#issuecomment-15001751 .

ViralBShah commented 11 years ago

I think that the DataFrames error is due to recent changes in julia master. @johnmyleswhite ? It should really have tried to pull a version compatible with 0.1.

cwneville commented 11 years ago

I get a similar error from Cairo via Compose, that it can't find something in my HOME directory, not in the .julia repository. See my previous comments with julia output.

cwneville commented 11 years ago

Viral - Here are copies of the changed files:

Julia.app/Contents/Resources/script:

#!/bin/sh
# Copyright (C) 2007, Thomas Treichl and Paul Kienzle
# Copyright (C) 2008-2009, Thomas Treichl
# Copyright (C) 2013, Viral B. Shah (Adapted for Julia from Octave)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see <http://www.gnu.org/licenses/>.

ROOT="${0%/script}"

# This is the startup procedure written as AppleScript to open a
# Terminal.app (if the Terminal.app is not already running) and start
# the Julia program.
# 20071007 removed: open -a /Applications/Utilities/Terminal.app
osascript 2>&1>/dev/null <<EOF
  tell application "System Events" to set ProcessList to get name of every process
  tell application "Terminal" 
    activate
    if ProcessList contains "Terminal" then
      do script ("PATH=${ROOT}/julia/bin:${PATH}
GIT_EXEC_PATH=${ROOT}/julia/libexec/git-core GIT_TEMPLATE_DIR=${ROOT}/julia/share/git-core/templates exec '${ROOT}/julia/bin/julia'")
    else
      do script ("PATH=${ROOT}/julia/bin:${PATH}
GIT_EXEC_PATH=${ROOT}/julia/libexec/git-core GIT_TEMPLATE_DIR=${ROOT}/julia/share/git-core/templates exec '${ROOT}/julia/bin/julia'") in front window
    end if
  end tell
EOF

# Quit the Julia.application immediately after startup (ie. quitting
# it in the taskbar) because once it is started it cannot be restarted
# a second time. If Julia.app stays (eg. because of a crash) opened
# then restarting is not possible.
osascript 2>&1>/dev/null <<EOF
  tell application "julia"
    quit
  end tell
EOF

--------

Julia.app/Contents/Resources/julia/etc/fonts/fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig>

<!--
    DO NOT EDIT THIS FILE.
    IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
    LOCAL CHANGES BELONG IN 'local.conf'.

    The intent of this standard configuration file is to be adequate for
    most environments.  If you have a reasonably normal environment and
    have found problems with this configuration, they are probably
    things that others will also want fixed.  Please submit any
    problems to the fontconfig bugzilla system located at fontconfig.org

    Note that the normal 'make install' procedure for fontconfig is to
    replace any existing fonts.conf file with the new version.  Place
    any local customizations in local.conf which this file references.

    Keith Packard
-->

<!-- Font directory list -->

    <dir>/usr/share/fonts</dir>
    <dir>/usr/X11R6/lib/X11/fonts</dir>
    <dir prefix="xdg">fonts</dir>
    <!-- the following element will be removed in the future -->
    <dir>~/.fonts</dir>

<!--
  Accept deprecated 'mono' alias, replacing it with 'monospace'
-->
    <match target="pattern">
        <test qual="any" name="family">
            <string>mono</string>
        </test>
        <edit name="family" mode="assign" binding="same">
            <string>monospace</string>
        </edit>
    </match>

<!--
  Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
-->
    <match target="pattern">
        <test qual="any" name="family">
            <string>sans serif</string>
        </test>
        <edit name="family" mode="assign" binding="same">
            <string>sans-serif</string>
        </edit>
    </match>

<!--
  Accept deprecated 'sans' alias, replacing it with 'sans-serif'
-->
    <match target="pattern">
        <test qual="any" name="family">
            <string>sans</string>
        </test>
        <edit name="family" mode="assign" binding="same">
            <string>sans-serif</string>
        </edit>
    </match>

<!--
  Load local system customization file
-->
<include ignore_missing="yes">conf.d</include>

<!-- Font cache directory list -->

    <cachedir>fontconfigcache</cachedir>
    <cachedir prefix="xdg">fontconfig</cachedir>
    <!-- the following element will be removed in the future -->
    <cachedir>~/.fontconfig</cachedir>

    <config>
<!--
  These are the default Unicode chars that are expected to be blank
  in fonts.  All other blank chars are assumed to be broken and
  won't appear in the resulting charsets
 -->
        <blank>
            <int>0x0020</int>   <!-- SPACE -->
            <int>0x00A0</int>   <!-- NO-BREAK SPACE -->
            <int>0x00AD</int>   <!-- SOFT HYPHEN -->
            <int>0x034F</int>   <!-- COMBINING GRAPHEME JOINER -->
            <int>0x0600</int>   <!-- ARABIC NUMBER SIGN -->
            <int>0x0601</int>   <!-- ARABIC SIGN SANAH -->
            <int>0x0602</int>   <!-- ARABIC FOOTNOTE MARKER -->
            <int>0x0603</int>   <!-- ARABIC SIGN SAFHA -->
            <int>0x06DD</int>   <!-- ARABIC END OF AYAH -->
            <int>0x070F</int>   <!-- SYRIAC ABBREVIATION MARK -->
            <int>0x115F</int>   <!-- HANGUL CHOSEONG FILLER -->
            <int>0x1160</int>   <!-- HANGUL JUNGSEONG FILLER -->
            <int>0x1680</int>   <!-- OGHAM SPACE MARK -->
            <int>0x17B4</int>   <!-- KHMER VOWEL INHERENT AQ -->
            <int>0x17B5</int>   <!-- KHMER VOWEL INHERENT AA -->
            <int>0x180E</int>   <!-- MONGOLIAN VOWEL SEPARATOR -->
            <int>0x2000</int>   <!-- EN QUAD -->
            <int>0x2001</int>   <!-- EM QUAD -->
            <int>0x2002</int>   <!-- EN SPACE -->
            <int>0x2003</int>   <!-- EM SPACE -->
            <int>0x2004</int>   <!-- THREE-PER-EM SPACE -->
            <int>0x2005</int>   <!-- FOUR-PER-EM SPACE -->
            <int>0x2006</int>   <!-- SIX-PER-EM SPACE -->
            <int>0x2007</int>   <!-- FIGURE SPACE -->
            <int>0x2008</int>   <!-- PUNCTUATION SPACE -->
            <int>0x2009</int>   <!-- THIN SPACE -->
            <int>0x200A</int>   <!-- HAIR SPACE -->
            <int>0x200B</int>   <!-- ZERO WIDTH SPACE -->
            <int>0x200C</int>   <!-- ZERO WIDTH NON-JOINER -->
            <int>0x200D</int>   <!-- ZERO WIDTH JOINER -->
            <int>0x200E</int>   <!-- LEFT-TO-RIGHT MARK -->
            <int>0x200F</int>   <!-- RIGHT-TO-LEFT MARK -->
            <int>0x2028</int>   <!-- LINE SEPARATOR -->
            <int>0x2029</int>   <!-- PARAGRAPH SEPARATOR -->
            <int>0x202A</int>   <!-- LEFT-TO-RIGHT EMBEDDING -->
            <int>0x202B</int>   <!-- RIGHT-TO-LEFT EMBEDDING -->
            <int>0x202C</int>   <!-- POP DIRECTIONAL FORMATTING -->
            <int>0x202D</int>   <!-- LEFT-TO-RIGHT OVERRIDE -->
            <int>0x202E</int>   <!-- RIGHT-TO-LEFT OVERRIDE -->
            <int>0x202F</int>   <!-- NARROW NO-BREAK SPACE -->
            <int>0x205F</int>   <!-- MEDIUM MATHEMATICAL SPACE -->
            <int>0x2060</int>   <!-- WORD JOINER -->
            <int>0x2061</int>   <!-- FUNCTION APPLICATION -->
            <int>0x2062</int>   <!-- INVISIBLE TIMES -->
            <int>0x2063</int>   <!-- INVISIBLE SEPARATOR -->
            <int>0x206A</int>   <!-- INHIBIT SYMMETRIC SWAPPING -->
            <int>0x206B</int>   <!-- ACTIVATE SYMMETRIC SWAPPING -->
            <int>0x206C</int>   <!-- INHIBIT ARABIC FORM SHAPING -->
            <int>0x206D</int>   <!-- ACTIVATE ARABIC FORM SHAPING -->
            <int>0x206E</int>   <!-- NATIONAL DIGIT SHAPES -->
            <int>0x206F</int>   <!-- NOMINAL DIGIT SHAPES -->
            <int>0x2800</int>   <!-- BRAILLE PATTERN BLANK -->
            <int>0x3000</int>   <!-- IDEOGRAPHIC SPACE -->
            <int>0x3164</int>   <!-- HANGUL FILLER -->
            <int>0xFEFF</int>   <!-- ZERO WIDTH NO-BREAK SPACE -->
            <int>0xFFA0</int>   <!-- HALFWIDTH HANGUL FILLER -->
            <int>0xFFF9</int>   <!-- INTERLINEAR ANNOTATION ANCHOR -->
            <int>0xFFFA</int>   <!-- INTERLINEAR ANNOTATION SEPARATOR -->
            <int>0xFFFB</int>   <!-- INTERLINEAR ANNOTATION TERMINATOR -->
        </blank>
<!--
  Rescan configuration every 30 seconds when FcFontSetList is called
 -->
        <rescan>
            <int>30</int>
        </rescan>
    </config>

</fontconfig>

-----

Here is a selection from ls -al showing the links conf.d and fontconfigcache in the directory Julia.app/Contents/Resources/julia/etc/fonts:

lrwxr-xr-x  1 chip  admin    33 Mar 15 23:46 conf.d -> ../../share/fontconfig/conf.avail
lrwxr-xr-x  1 chip  admin    26 Mar 15 23:40 fontconfigcache -> ../../var/cache/fontconfig

-----

Julia.app/Contents/Resources/julia/share/fontconfig/conf.avail/05-osx-fonts.conf (the one file added to conf.avail, copied from the OS X user X11 distribution):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/System/Library/Fonts</dir>
    <dir>/Library/Fonts</dir>
    <dir>~/Library/Fonts</dir>
</fontconfig>

The dashes indicate the end of one file and the beginning of another.

Comments:

I think the julia.app/Contents/Resources/julia/lib/pkgconfig directory is simply left over from compilation and can be deleted.

I wonder how julia knows to find its font configuration files in Julia.app/Contents/Resources/julia/etc/fonts, since this is a non-standard place and julia appears not to read the FONTCONFIG_PATH variable I tried to set. Note that I have now deleted it from the script file, and everything works (or doesn't work) as before. What seems to have fixed the fontconfig errors was making the Julia.app/Contents/Resources/julia/etc/fonts/conf.d directory a relative link to Julia.app/Contents/Resources/julia/share/fontconfig/conf.avail, and introducint relative links into the Julia.app/Contents/Resources/julia/etc/fonts/fonts.conf file.

I have no idea why I can move Julia.app around now and still add packages. Maybe it was that the GIT_TEMPLATE_DIR is now set properly, but I don't see why that would help. Less likely, it was because the fonts directories and config files were set up with relative links.

ViralBShah commented 11 years ago

The packages go in ~/.julia and hence moving around of the Julia.app should not matter.

ViralBShah commented 11 years ago

I believe most of these issues are now fixed in 0.2. Could you try the latest 0.2-pre binaries, and see if it works well? We can reopen this issue if necessary.

cwneville commented 11 years ago

Will try to do so this weekend. -- Best, Chip

On Mon, May 27, 2013 at 7:07 AM, Viral B. Shah notifications@github.comwrote:

I believe most of these issues are now fixed in 0.2. Could you try the latest 0.2-pre binaries, and see if it works well? We can reopen this issue if necessary.

— Reply to this email directly or view it on GitHubhttps://github.com/JuliaLang/julia/issues/2518#issuecomment-18493488 .

cwneville commented 11 years ago

I just downloaded OS X prebinaries and looked at julia.app. The basic stuff runs well.

As for fonts needed by Cairo, the fonts.conf file in the /LocalApps/Julia.app/Contents/Resources/julia/etc/fonts/ directory looks good, but the links in the fonts.conf subdirectory still point to the wrong place, as in /Users/viral/.julia/Cairo/deps/usr/share/fontconfig/conf.avail/45-latin.conf

A simple solution would be to change fonts.conf from a directory to a link pointing to the conf.avail subdirectory of /LocalApps/Julia.app/Contents/Resources/julia/share/fontconfig

Looking down the road, there are going to be other X-windows binary dependencies in stuff ported to julia. Maybe the long term solution is to include Homebrew in the the OS X package and require package developers to include provide working homebrew scripts and an automatic way at install time to invoke the script. That way, the responsibility devolves onto package developers rather than the OS X packager.

Or, you could break the OS X self-contained package paradigm, as well as the GitHub put-everything in the .julia directory, and put X-windows dependencies in /usr/local as Homebrew does by default. This would simplify Homebrew script development.

Best, Chip

On Wed, May 29, 2013 at 10:01 PM, Chip Neville chip.neville@gmail.comwrote:

Will try to do so this weekend. -- Best, Chip

On Mon, May 27, 2013 at 7:07 AM, Viral B. Shah notifications@github.comwrote:

I believe most of these issues are now fixed in 0.2. Could you try the latest 0.2-pre binaries, and see if it works well? We can reopen this issue if necessary.

— Reply to this email directly or view it on GitHubhttps://github.com/JuliaLang/julia/issues/2518#issuecomment-18493488 .

ViralBShah commented 11 years ago

So long as you get a plot with some fonts that are readable, I will declare victory for now. :-)

cwneville commented 11 years ago

[pao: see below copy of the comment; it's unreadable and won't format because it came over email]

pao commented 11 years ago

[pao: this was @cwneville's comment immediately above]

I installed DataFrames successfully. But the installation of Winston failed. I chose the skip option when asked to compile dependencies because they (Cairo, Pango, Tk) are supposed to be pre-installed. Here's what happened:

julia> Pkg.add("Winston")
MESSAGE: Installing BinDeps v0.0.1
 in anonymous at no file:163
Cloning into 'BinDeps'...
remote: Counting objects: 57, done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 57 (delta 21), reused 53 (delta 19)
Receiving objects: 100% (57/57), 12.00 KiB, done.
Resolving deltas: 100% (21/21), done.
MESSAGE: Installing Cairo v0.2.2
 in anonymous at no file:163
Cloning into 'Cairo'...
remote: Counting objects: 273, done.
remote: Compressing objects: 100% (139/139), done.
remote: Total 273 (delta 118), reused 265 (delta 110)
Receiving objects: 100% (273/273), 56.71 KiB, done.
Resolving deltas: 100% (118/118), done.
MESSAGE: Running build script for package Cairo
 in cd at file.jl:25
/Users/chip/.julia/Cairo/deps
MESSAGE: There are multiple options available for installing this
dependency:
 in run at /Users/chip/.julia/BinDeps/src/BinDeps.jl:394
- skip: Skip Installation - Binaries must be installed manually
- brew: Install depdendency using brew
- source: Install depdendency from source
- skip: Skip Installation - Binaries must be installed manually
- brew: Install depdendency using brew
- source: Install depdendency from source
Plese select desired method: skip
MESSAGE: Installing Color v0.2.2
 in anonymous at no file:163
Cloning into 'Color'...
remote: Counting objects: 93, done.
remote: Compressing objects: 100% (66/66), done.
remote: Total 93 (delta 23), reused 90 (delta 21)
Receiving objects: 100% (93/93), 36.94 KiB, done.
Resolving deltas: 100% (23/23), done.
MESSAGE: Installing IniFile v0.2.0
 in anonymous at no file:163
Cloning into 'IniFile'...
remote: Counting objects: 23, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 23 (delta 3), reused 21 (delta 1)
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (3/3), done.
MESSAGE: Installing Tk v0.2.2
 in anonymous at no file:163
Cloning into 'Tk'...
remote: Counting objects: 462, done.
remote: Compressing objects: 100% (201/201), done.
remote: Total 462 (delta 240), reused 444 (delta 223)
Receiving objects: 100% (462/462), 393.23 KiB | 307 KiB/s, done.
Resolving deltas: 100% (240/240), done.
MESSAGE: Running build script for package Tk
 in cd at file.jl:25
MESSAGE: There are multiple options available for installing this
dependency:
 in run at /Users/chip/.julia/BinDeps/src/BinDeps.jl:394
- skip: Skip Installation - Binaries must be installed manually
- brew: Install depdendency using brew
- source: Install depdendency from source
- skip: Skip Installation - Binaries must be installed manually
- brew: Install depdendency using brew
- source: Install depdendency from source
Plese select desired method: skip
MESSAGE: Attempting to Create directory /Users/chip/.julia/Tk/deps/usr/lib
 in run at /Users/chip/.julia/BinDeps/src/BinDeps.jl:394
/Users/chip/.julia/Tk/deps/usr/lib
src/tk_wrapper.c:58:25: error: tkMacOSXInt.h: No such file or directory
src/tk_wrapper.c:64: error: expected ‘)’ before ‘*’ token
src/tk_wrapper.c:85: error: expected ‘)’ before ‘*’ token
ERROR: failed process: Process(`gcc -xobjective-c -shared -g -fPIC
-I/Users/chip/.julia/Tk/deps/usr/include -I/usr/local/include
-L/Users/chip/.julia/Tk/deps/usr/lib src/tk_wrapper.c -ltcl8.6 -ltk8.6
-framework AppKit -framework Foundation -framework ApplicationServices -o
/Users/chip/.julia/Tk/deps/usr/lib/libtk_wrapper.dylib`, ProcessExited(1))
[1]
 in error at error.jl:22
 in pipeline_error at process.jl:399
 in run at process.jl:389
 in run at /Users/chip/.julia/BinDeps/src/BinDeps.jl:394
 in run at /Users/chip/.julia/BinDeps/src/BinDeps.jl:368
 in run at /Users/chip/.julia/BinDeps/src/BinDeps.jl:394
 in build_wrapper at none:27
 in evalfile at loading.jl:145
 in anonymous at no file:249
 in cd at file.jl:25
 in runbuildscript at pkg.jl:246
 in _resolve at pkg.jl:394
 in anonymous at no file:163
 in cd at file.jl:25
 in cd_pkgdir at pkg.jl:42
 in add at pkg.jl:143
 in add at pkg.jl:175

Note: I installed julia BEFORE deleting my old .julia file, so if there was some magic there to tell git that Cairo, etc., were pre-installed, I would have accidentally deleted it. (My surmise is that there was no such magic.)

I think the only option is to follow Homer Reid's advice to use Homebrew to install the dependencies, and to modify Cairo, etc., to check for the needed binaries in /usr/local. Or maybe modify the Cairo install script to check /Applications and subdirectories (I like to keep my downloaded apps in a subdirectory called LocalApps) for a julia.app directory and for a Cairo, etc. installation there.

Note: I tried again with julia.app moved from my LocalApps subdirectory to /Applications. Still no luck.

Best, Chip

ViralBShah commented 11 years ago

It is unable to find the tk_wrapper library. I will have to look into it.

ViralBShah commented 11 years ago

Perhaps it is best not to use Winston with 0.1.2. This would require a lot of backporting of newly fixed stuff, but it is likely to be using the 0.2 APIs. I think Gaston may be the only real alternative for graphics on 0.1, but it requires the user to have gnuplot installed.

We should just hope to quickly get to 0.2.

ViralBShah commented 11 years ago

@pao You cannot skip the Tk installation, because we need Tk 8.6.

ViralBShah commented 11 years ago

I am going to close this, in favour of moving to 0.2 for graphics. 0.2-pre mac binaries are available, and they are being improved to make graphics seamless.

pao commented 11 years ago

@ViralBShah you mean @cwneville, I was just reposting his comment so it was readable due to the no-markdown-in-email-posts bug.

ViralBShah commented 11 years ago

Thanks - I just realized that after posting myself.