Giter VIP home page Giter VIP logo

Comments (17)

sjackman avatar sjackman commented on June 4, 2024

Okay. Can you post an error message? Would you be interested in proposing a fix with a pull request? Alternatively, adding $HOMEBREW_PREFIX/lib to LD_LIBRARY_PATH should fix it.

from legacy-linuxbrew.

xxxajk avatar xxxajk commented on June 4, 2024

Not an option, this is system wide, not a personal instal... Basically, I am considering using linuxbrew for a personal distribution, and supporting more than just pc platforms.

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

Sounds like a good project. I had thought of something similar using Linux From Scratch to get a small system bootstrapped enough to install Linuxbrew, and then using Linuxbrew for package management.

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

In #7 I'm using patchelf to set RPATH. That may solve your issue as well and eliminate the need to run ldconfig.

from legacy-linuxbrew.

mbsullivan avatar mbsullivan commented on June 4, 2024

Neat RPATH trick! It seems like it should be in a wiki page somewhere (like Tips N' Tricks?) because it is probably quite useful on many systems.

I'd be interested in seeing a working Linux from scratch + linuxbrew system too. I'm currently trying to see if linuxbrew can serve as a lightweight Gentoo prefix replacement on an outdated system where I don't have admin access. It's going fairly well so far -- I'm very pleased by how simple and transparent the system is -- but if somebody had gotten an entire system built from scratch with it I think it'd serve as useful guidance.

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

I'm glad to hear it's working for you, Michael. The RPATH trick will become a standard feature of Linuxbrew soon (after I'm back from vacation). I have big plans for Linuxbrew bottles that are portable across all Linux distributions.

from legacy-linuxbrew.

mbsullivan avatar mbsullivan commented on June 4, 2024

Shaun: after I commented, I read the rest of #7. The bottle path sounds very helpful for me, especially its inclusion of glibc! (The system I'm working on has glibc 2.05, from 2006.)

I think that portable Linuxbrew bottles are a fantastic idea that could help a lot of people! Many large systems, even new ones, are stuck with old software stacks due to the difficulty of changing. For instance, the system I'm struggling with is not old, it's just stuck with CentOS 5.5.

I'll open up a new issue and will test out the bottle branch's glibc formula shortly.

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

I'm also working on a high performance computing cluster with glibc 2.5 running CentOS 5.10. That's precisely my motivation for Linuxbrew and portable bottles.

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

I've create a new wiki page with instructions for a Standalone Installation of Linuxbrew. Would you be able to test it out?

from legacy-linuxbrew.

xxxajk avatar xxxajk commented on June 4, 2024

Well, here is an idea, detect if we are running as someone who has the rights to run ldconfig, and execute it, otherwise, do the RPATH trick.

from legacy-linuxbrew.

xxxajk avatar xxxajk commented on June 4, 2024

To be a bit more verbose on said idea:

-rwxr-xr-x 1 root root 823085 2013-09-15 19:29 /sbin/ldconfig*

Basically if you are root, or belong to the root group, at least on my system, /sbin/ldconfig can be executed. Other systems will have different groups, I'm sure.
Some may have a different location for ldconfig, so use the which utility to find it.

pseudocode:

id -u from sh will give the UID, if it is zero, run /sbin/ldconfig
else
get the GID from ldconfig stat -c "%g" /sbin/ldconfig
id -G from sh will give a list of all the GIDs for a user, if one of them matches the GID on ldconfig, run /sbin/ldconfig
else
use rpath :-)

from legacy-linuxbrew.

khirbat avatar khirbat commented on June 4, 2024

I tried the instructions listed on the page "Standalone Installation of Linuxbrew". brew install gcc failed. Any suggestions on what to try next?

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty



$ LD_LIBRARY_PATH=$prefix/lib brew install -v gcc --without-multilib
 ...
make[3]: Leaving directory `/tmp/gcc-8DRo/gcc-4.9.1/build/gcc'
mkdir -p -- x86_64-unknown-linux-gnu/libgcc
Checking multilib configuration for libgcc...
Configuring stage 1 in x86_64-unknown-linux-gnu/libgcc
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for --enable-version-specific-runtime-libs... no
checking for a BSD-compatible install... /usr/bin/install -c
checking for gawk... gawk
checking for x86_64-unknown-linux-gnu-ar... ar
checking for x86_64-unknown-linux-gnu-lipo... lipo
checking for x86_64-unknown-linux-gnu-nm... /tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/nm
checking for x86_64-unknown-linux-gnu-ranlib... ranlib
checking for x86_64-unknown-linux-gnu-strip... strip
checking whether ln -s works... yes
checking for x86_64-unknown-linux-gnu-gcc... /tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/xgcc -B/tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/bin/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/lib/ -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/include -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/sys-include   
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/xgcc -B/tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/bin/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/lib/ -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/include -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/sys-include    accepts -g... yes
checking for /tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/xgcc -B/tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/bin/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/lib/ -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/include -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/sys-include    option to accept ISO C89... none needed
checking how to run the C preprocessor... /tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/xgcc -B/tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/bin/ -B/home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/lib/ -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/include -isystem /home/anmol/.linuxbrew/Cellar/gcc/4.9.1/x86_64-unknown-linux-gnu/sys-include    -E
checking size of double... 8
checking size of long double... 16
checking whether decimal floating point is supported... yes
checking whether fixed-point is supported... no
checking whether to use setjmp/longjmp exceptions... no
checking if the linker (/tmp/gcc-8DRo/gcc-4.9.1/build/./gcc/collect-ld) is GNU ld... yes
checking for thread model used by GCC... posix
checking whether assembler supports CFI directives... yes
checking for __attribute__((visibility("hidden")))... yes
checking whether the target assembler supports thread-local storage... yes
checking whether the thread-local storage support is from emutls... no
checking for init priority support... yes
configure: updating cache ./config.cache
configure: creating ./config.status
config.status: creating Makefile
config.status: creating auto-target.h
config.status: linking ../../../libgcc/enable-execute-stack-empty.c to enable-execute-stack.c
config.status: linking ../../../libgcc/unwind-generic.h to unwind.h
config.status: linking ../../../libgcc/config/i386/linux-unwind.h to md-unwind-support.h
config.status: linking ../../../libgcc/config/i386/sfp-machine.h to sfp-machine.h
config.status: linking ../../../libgcc/gthr-posix.h to gthr-default.h
config.status: executing default commands
../../../libgcc/../config-ml.in: eval: line 164: unexpected EOF while looking for matching `''
../../../libgcc/../config-ml.in: eval: line 165: syntax error: unexpected end of file
make[2]: *** [configure-stage1-target-libgcc] Error 1
make[2]: Leaving directory `/tmp/gcc-8DRo/gcc-4.9.1/build'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/tmp/gcc-8DRo/gcc-4.9.1/build'
make: *** [bootstrap] Error 2
==> Configuration
HOMEBREW_VERSION: 0.9.5
HEAD: aa0e405bc29a8d887e1f0920e505d93268b2c592
HOMEBREW_PREFIX: /home/anmol/.linuxbrew
CPU: dual-core 64-bit 6
OS X: 0-x86_64
/usr/bin/ruby1.9.1:
  1.9.3-484
X11: N/A
==> ENV
CC: /usr/bin/gcc => /usr/bin/gcc-4.8
CXX: /usr/bin/g++ => /usr/bin/g++-4.8
OBJC: /usr/bin/gcc
OBJCXX: /usr/bin/g++
CFLAGS: -Os -w -pipe -march=core2
CXXFLAGS: -Os -w -pipe -march=core2
CPPFLAGS: -isystem/home/anmol/.linuxbrew/include
LDFLAGS: -L/home/anmol/.linuxbrew/lib
MAKEFLAGS: -j2
CMAKE_PREFIX_PATH: /home/anmol/.linuxbrew
PKG_CONFIG_LIBDIR: /home/anmol/.linuxbrew/lib/pkgconfig:/usr/lib/pkgconfig
ACLOCAL_PATH: /home/anmol/.linuxbrew/share/aclocal
PATH: /home/anmol/.linuxbrew/bin:/usr/bin:/bin:/home/anmol/.linuxbrew/Library/Contributions/cmd

Error: gcc 4.9.1 did not build
Logs:
     /home/anmol/Library/Logs/Homebrew/gcc/02.make
     /home/anmol/Library/Logs/Homebrew/gcc/01.configure

These open issues may also help:
gcc: compatibility 10.10 (https://github.com/Homebrew/homebrew/pull/31466)
gcc 4.8.3 bottle has invalid omp.h header (https://github.com/Homebrew/homebrew/issues/29670)
MacOS.(gcc|clang|llvm)_version can return nil (https://github.com/Homebrew/homebrew/issues/18781)

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

I haven't seen that error before. Any chance /tmp ran out of disk space? Try setting export HOMEBREW_TEMP=/var/tmp.

from legacy-linuxbrew.

khirbat avatar khirbat commented on June 4, 2024

HOMEBREW_TEMP is already set according to the instructions "Standalone Installation of Linuxbrew". Looks like there is enough disk space.

$ echo $HOMEBREW_TEMP 
/var/tmp
$ df -khl $HOMEBREW_TEMP 
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/virgo--vg-root   39G   13G   24G  36% /

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

The above log is being built in /tmp. Did you export the variable?

from legacy-linuxbrew.

khirbat avatar khirbat commented on June 4, 2024

I tried this again after making sure the variable got exported.

$ PATH=/usr/bin:/bin
$ unset LD_LIBRARY_PATH HOMEBREW_CC
$ export HOMEBREW_TEMP=/var/tmp
$ prefix=~/.linuxbrew
$ PATH="$prefix/bin:$PATH"

$ env | grep HOMEBREW
HOMEBREW_TEMP=/var/tmp

The outcome is the same. I placed the log files 01.configure and 02.make here. https://gist.github.com/khirbat/daad7cfa2b285e2b7853

I saw the same failure on a Fedora system. Perhaps I am missing something basic?

from legacy-linuxbrew.

sjackman avatar sjackman commented on June 4, 2024

Now that Linuxbrew sets rpath of compiled executables, it should not be necessary to run ldconfig.

from legacy-linuxbrew.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.