`<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt">Hello,<br><br>I am new to OmniOS. I am trying to setup a Haskell development environment and ran against a bump that's preventing me from completing the task. I mentioned this problem yesterday on IRC and got some help, but no definitive solution.<br><br>The Haskell build tool is cabal, and after successfully installing the Haskell compiler (ghc-7.4.2) I want to update the build tool. But this step fails, and the log indicates that it cannot remove a temporary directory it created.<br><br>I tried to remove it manually (rm -fr /tmp/foo as root) but it fails:<br>rm: cannot remove '/tmp/foo': File exists<br>but there is nothing in that directory.<br><br>Here is the /tmp directory<br><pre>total 8126
drwxr-xr-x 23 root root 25 May 8 22:55 ..
drwx------ 3 root root 117 May 9 13:23 cabal-install-1.16.0.2-21814
[...]
drwxrwxrwt 8 root sys 925 May 9 16:07 .
<br>and here is the /tmp/cabal-install-1.16.0.2-21814
total 8
drwx------ 3 root root 117 May 9 13:23 .
drwxrwxrwt 8 root sys 985 May 9 16:10 ..</pre><br>Some funny facts!<br>If I try (as it was kindly suggested to me on IRC #omnios) unlink, then this works fine.<br>If I try to zpool scrub, there is no problem.<br>If I try to mkdir -m 0700 /tmp/bar; cd /tmp/bar; touch baz; cd /tmp; rm -fr bar<br> it runs fine...<br>If I reboot, /tmp dir is emptied fine.<br><br>Below you'll find <br><br>1: the steps I used:<br>2: the output of the build log, with the error at the end<br>3: the output of truss when i execute rm -fr /tmp/foo<br><br>Thanks for your help<br><br>Matthieu<br><pre>Install a 'bloody' OmniOS from DVD.
Update system with pkg refresh and image-update
Install developer packages
pfexec pkg install \
developer/gcc47 \
developer/object-file \
developer/linker \
developer/library/lint \
developer/build/gnu-make \
system/header \
system/library/math/header-math \
archiver/gnu-tar
update path to include /opt/gcc-4.7.2
download binary distribution of ghc-7.0.3 and install in /opt/ghc-7.0.3
update path and ld_library_path
download source distribution of ghc-7.4.2 and install in /opt/ghc-7.4.2
update path and ld_library_path
download cabal-install and execute bootstrap.sh
update path and ld_library_path
execute cabal install --global cabal-install
<br> searching for ghc in path.
found ghc at /opt/ghc-7.4.2/bin/ghc
("/opt/ghc-7.4.2/bin/ghc",["--numeric-version"])
/opt/ghc-7.4.2/bin/ghc is version 7.4.2
[...]
Downloading cabal-install-1.16.0.2...
[...]
Downloaded to
/root/.cabal/packages/hackage.haskell.org/cabal-install/1.16.0.2/cabal-install-1.16.0.2.tar.gz
Extracting
/root/.cabal/packages/hackage.haskell.org/cabal-install/1.16.0.2/cabal-install-1.16.0.2.tar.gz
to /tmp/cabal-install-1.16.0.2-21814...
[...]
Using internal setup method with build-type Simple and args:
["install","--verbose=3"]
directory dist/doc/html/cabal-install does exist: False
creating /usr/local/share/doc/cabal-install-1.16.0.2
Installing LICENSE to /usr/local/share/doc/cabal-install-1.16.0.2/LICENSE
Installing executable(s) in /usr/local/bin
creating /usr/local/bin
Installing executable dist/build/cabal/cabal to /usr/local/bin/cabal
("/usr/bin/strip",["/usr/local/bin/cabal"])
World file is already up to date.
cabal: Error: some packages failed to install:
cabal-install-1.16.0.2 failed while downloading the package. The exception was:
/tmp/cabal-install-1.16.0.2-21814: removeDirectory: already exists (File exists)
truss rm -fr /tmp/cabal-install-1.16.0.2-21814 2>&1 | tee /tmp/truss:
execve("/usr/gnu/bin/rm", 0x08047D24, 0x08047D34) argc = 3
sysinfo(SI_MACHINE, "i86pc", 257) = 6
mmap(0x00000000, 32, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFB0000
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFA0000
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEF90000
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEF80000
memcntl(0xFEFB6000, 47484, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
memcntl(0x08050000, 24204, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
resolvepath("/usr/gnu/bin/rm", "/usr/gnu/bin/rm", 1023) = 15
sysconfig(_CONFIG_PAGESIZE) = 4096
stat64("/usr/gnu/bin/rm", 0x080479B8) = 0
open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
stat64("/usr/local/lib/libc.so.1", 0x080471D8) Err#2 ENOENT
stat64("/opt/ghc-7.4.2/lib/libc.so.1", 0x080471D8) Err#2 ENOENT
stat64("/opt/ghc-7.0.2/lib/libc.so.1", 0x080471D8) Err#2 ENOENT
stat64("./libc.so.1", 0x080471D8) Err#2 ENOENT
stat64("/lib/libc.so.1", 0x080471D8) = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY) = 3
mmapobj(3, MMOBJ_INTERPRET, 0xFEFA0CA8, 0x08047244, 0x00000000) = 0
close(3) = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEE20000
memcntl(0xFEE30000, 244676, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE10000
getcontext(0x080477F8)
getrlimit(RLIMIT_STACK, 0x080477F0) = 0
getpid() = 22973 [22971]
lwp_private(0, 1, 0xFEE12A40) = 0x000001C3
setustack(0xFEE12AA0)
sysi86(SI86FPSTART, 0xFEF7DF8C, 0x0000133F, 0x00001F80) = 0x00000001
brk(0x0808C1E0) = 0
brk(0x0808E1E0) = 0
ioctl(0, TCGETA, 0x08047C4E) = 0
getprivimplinfo(0x080473B0, 2076) = 0
mmap(0x00010000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEDF0000
sysconfig(_CONFIG_NGROUPS) = 16
zone_lookup(0x00000000) = 0
zone_getattr(0, ZONE_ATTR_PRIVSET, 0xFEE10248, 12) = 12
getppriv(PRIV_EFFECTIVE, {ffffffffffffffffffffffff}) = 0
setppriv(PRIV_SET, PRIV_EFFECTIVE, {fffffffffffffbffffffffff}) = 0
sysconfig(_CONFIG_PAGESIZE) = 4096
lstat64("/", 0x08047BF0) = 0
lstat64("cabal-install-1.16.0.2-21814", 0x0808D684) = 0
open64("cabal-install-1.16.0.2-21814", O_RDONLY|O_NONBLOCK|O_NOCTTY|O_NOFOLLOW) = 3
fcntl(3, F_SETFD, 0x00000001) = 0
fstat64(3, 0x08047A20) = 0
getdents64(3, 0xFEE14000, 8192) = 48
getdents64(3, 0xFEE14000, 8192) = 0
close(3) = 0
rmdir("cabal-install-1.16.0.2-21814") Err#17 EEXIST
open64("/usr/gnu/lib/charset.alias", O_RDONLY|O_NOFOLLOW) Err#2 ENOENT
fcntl(1, F_GETFL) = 2
fstat64(2, 0x08046B90) = 0
rm: write(2, " r m : ", 4) = 4
cannot remove 'cabal-install-1.16.0.2-21814'write(2, " c a n n o t r e m o v".., 44) = 44
: write(2, " : ", 2) = 2
File existswrite(2, " F i l e e x i s t s", 11) = 11
</pre></div></body></html>`