universal-ctags / homebrew-universal-ctags

Homebrew Tap for Universal Ctags on OSX
https://ctags.io
GNU General Public License v2.0
326 stars 19 forks source link

brew install doesn't work, manual install does #23

Closed paradox460 closed 4 years ago

paradox460 commented 7 years ago

Attempting to run brew install --HEAD universal-ctags/universal-ctags/universal-ctags on OS X 10.11.6 results in an error 2 from Make.

I've pasted the error.log below:

2017-07-13 10:19:19 -0700

make

./misc/gen-repoinfo main/repoinfo.h
/Library/Developer/CommandLineTools/usr/bin/make  all-am
make[1]: ./install-sh: Permission denied
make[1]: *** [parsers/.dirstamp] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2

HOMEBREW_VERSION: >1.2.0 (no git repository)
ORIGIN: https://github.com/Homebrew/brew
HEAD: f7c254dc33daa30664cb93c5427b43e89eeec2ab
Last commit: 25 minutes ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: d8c6c22a1d3b10fbfd0e957597fcbdcf78aa74da
Core tap last commit: 54 minutes ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: octa-core 64-bit haswell
Homebrew Ruby: 2.0.0-p648
Clang: 8.0 build 800
Git: 2.10.1 => /Library/Developer/CommandLineTools/usr/bin/git
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
Java: 1.8.0_131
macOS: 10.11.6-x86_64
Xcode: N/A
CLT: 8.2.0.0.1.1480973914
X11: N/A

HOMEBREW_CC: clang
HOMEBREW_CXX: clang++
MAKEFLAGS: -j8
CMAKE_PREFIX_PATH: /usr/local
CMAKE_INCLUDE_PATH: /usr/include/libxml2:/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers
CMAKE_LIBRARY_PATH: /System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries
PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/10.11
ACLOCAL_PATH: /usr/local/share/aclocal
PATH: /usr/local/Homebrew/Library/Homebrew/shims/super:/usr/local/opt/autoconf/bin:/usr/local/opt/automake/bin:/usr/local/opt/pkg-config/bin:/usr/bin:/bin:/usr/sbin:/sbin

Interestingly enough, cding into the homebrew cache directory, running make clean and then running the appropriate build commands compiles fine, at which point I can brew link universal-ctags and have it function normally.

KazuakiM commented 7 years ago

@paradox460 Please confirm the permission status.

$ ls -l /Users/$USER/Library/Caches/Homebrew
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git/install-sh
KazuakiM commented 7 years ago

@paradox460 ping

paradox460 commented 7 years ago

All are -rwxr-xr-x or drwxr-xr-x, and are owned by my user and group

KazuakiM commented 7 years ago

@masatake Do you know the cause?

masatake commented 7 years ago

@KazuakiM, I have no idea more than you. As you inspect, I wonder whether execution bit of "install.sh" is set or not. As @paradox460 reported, it seems the bit is set. However, I wonder "/Users/$USER/Library/Caches/Homebrew/universal-ctags--git/install-sh" is a really correct path for the script or not.

In the output, there is no $(pwd) information, so I cannot know where ./install.sh is.

@KazuakiM, do you good at system programming on MacOS X? If this is about on GNU/Linux, I will use strace for inspecting. strace is a system call tracer on the platform.

I made a smaller example on GNU/Linux.

[jet@localhost]~% make
/bin/sh: ./install-sh: Permission denied
make: *** [Makefile:2: all] Error 126

This error can be observed with strace:

[jet@localhost]~% strace -f -e execve,chdir make  
execve("/usr/bin/make", ["make"], 0x7ffcb9f9edc8 /* 54 vars */) = 0
strace: Process 29751 attached
[pid 29751] execve("/bin/sh", ["/bin/sh", "-c", "(cd /tmp; ./install-sh)"], 0x559f2cdc13b0 /* 59 vars */) = 0
strace: Process 29752 attached
[pid 29752] chdir("/tmp")               = 0
strace: Process 29753 attached
[pid 29753] execve("./install-sh", ["./install-sh"], 0x5585c1013d00 /* 59 vars */) = -1 EACCES (Permission denied)
/bin/sh: ./install-sh: Permission denied
[pid 29753] +++ exited with 126 +++
[pid 29752] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=29753, si_uid=1000, si_status=126, si_utime=0, si_stime=0} ---
[pid 29752] +++ exited with 126 +++
[pid 29751] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=29752, si_uid=1000, si_status=126, si_utime=0, si_stime=0} ---
[pid 29751] +++ exited with 126 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=29751, si_uid=1000, si_status=126, si_utime=0, si_stime=0} ---
make: *** [Makefile:2: all] Error 126
chdir("/home/jet")                      = 0
+++ exited with 2 +++

See the lines calling chdir and execve. From the lines, we can know /tmp/install.sh is exected by make. Actually, the execution bit is not set for the file.

[jet@localhost]~% ls -l /tmp/install-sh 
-rw-r--r--. 1 jet jet 14 Aug 22 08:46 /tmp/install-sh

As far as reading https://stackoverflow.com/questions/31045575/how-to-trace-system-calls-of-a-program-in-mac-os-x, with dtruss we can do the same on Mac OS X.

masatake commented 7 years ago

Interestingly enough, cding into the homebrew cache directory, running make clean and then running the appropriate build commands compiles fine, at which point I can brew link universal-ctags and have it function normally.

@paradox460, I would like to know the ORIGINAL result of

$ ls -l /Users/$USER/Library/Caches/Homebrew
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git/install-sh

To get the original result, "ls -l" should be done before "cding into the homebrew cache directory, running make clean".

paradox460 commented 7 years ago
$ ls -l /Users/$USER/Library/Caches/Homebrew
total 0
drwxr-xr-x  68 jeff.sandberg  staff  2312 Aug 14 13:00 Cask
drwxr-xr-x  37 jeff.sandberg  staff  1258 Aug 22 12:55 universal-ctags--git
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git
total 160
-rw-r--r--    1 jeff.sandberg  staff  18007 Aug 22 12:55 COPYING
-rw-r--r--    1 jeff.sandberg  staff   3421 Aug 22 12:55 Makefile.am
-rw-r--r--    1 jeff.sandberg  staff   2437 Aug 22 12:55 README.md
drwxr-xr-x  113 jeff.sandberg  staff   3842 Aug 22 12:55 Tmain
drwxr-xr-x  130 jeff.sandberg  staff   4420 Aug 22 12:55 Units
-rw-r--r--    1 jeff.sandberg  staff    680 Aug 22 12:55 appveyor.yml
-rwxr-xr-x    1 jeff.sandberg  staff    508 Aug 22 12:55 autogen.sh
-rw-r--r--    1 jeff.sandberg  staff    600 Aug 22 12:55 circle.yml
-rw-r--r--    1 jeff.sandberg  staff  21026 Aug 22 12:55 configure.ac
drwxr-xr-x   62 jeff.sandberg  staff   2108 Aug 22 12:55 dictfiles
drwxr-xr-x   47 jeff.sandberg  staff   1598 Aug 22 12:55 docs
drwxr-xr-x    6 jeff.sandberg  staff    204 Aug 22 12:55 dsl
drwxr-xr-x    4 jeff.sandberg  staff    136 Aug 22 12:55 fnmatch
drwxr-xr-x    9 jeff.sandberg  staff    306 Aug 22 12:55 gnu_regex
drwxr-xr-x   89 jeff.sandberg  staff   3026 Aug 22 12:55 main
drwxr-xr-x    6 jeff.sandberg  staff    204 Aug 22 12:55 makefiles
drwxr-xr-x    7 jeff.sandberg  staff    238 Aug 22 12:55 man
drwxr-xr-x   19 jeff.sandberg  staff    646 Aug 22 12:55 misc
-rw-r--r--    1 jeff.sandberg  staff   1728 Aug 22 12:55 mk_mingw.mak
-rw-r--r--    1 jeff.sandberg  staff   2443 Aug 22 12:55 mk_mvc.mak
drwxr-xr-x   11 jeff.sandberg  staff    374 Aug 22 12:55 old-docs
drwxr-xr-x   18 jeff.sandberg  staff    612 Aug 22 12:55 optlib
drwxr-xr-x   89 jeff.sandberg  staff   3026 Aug 22 12:55 parsers
drwxr-xr-x    5 jeff.sandberg  staff    170 Aug 22 12:55 read
-rw-r--r--    1 jeff.sandberg  staff   5883 Aug 22 12:55 source.mak
drwxr-xr-x    9 jeff.sandberg  staff    306 Aug 22 12:55 win32
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git/install-sh
ls: /Users/jeff.sandberg/Library/Caches/Homebrew/universal-ctags--git/install-sh: No such file or directory

After running ./autogen.sh, which was not run by brew install…, the three directories look like this:

$ ls -l /Users/$USER/Library/Caches/Homebrew
total 0
drwxr-xr-x  68 jeff.sandberg  staff  2312 Aug 14 13:00 Cask
drwxr-xr-x  48 jeff.sandberg  staff  1632 Aug 22 12:59 universal-ctags--git
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git
total 2064
-rw-r--r--    1 jeff.sandberg  staff   18007 Aug 22 12:55 COPYING
-rw-r--r--    1 jeff.sandberg  staff    3421 Aug 22 12:55 Makefile.am
-rw-r--r--    1 jeff.sandberg  staff  515667 Aug 22 12:59 Makefile.in
-rw-r--r--    1 jeff.sandberg  staff    2437 Aug 22 12:55 README.md
drwxr-xr-x  113 jeff.sandberg  staff    3842 Aug 22 12:55 Tmain
drwxr-xr-x  130 jeff.sandberg  staff    4420 Aug 22 12:55 Units
-rw-r--r--    1 jeff.sandberg  staff   52395 Aug 22 12:59 aclocal.m4
-rw-r--r--    1 jeff.sandberg  staff     680 Aug 22 12:55 appveyor.yml
-rwxr-xr-x    1 jeff.sandberg  staff     508 Aug 22 12:55 autogen.sh
drwxr-xr-x    7 jeff.sandberg  staff     238 Aug 22 12:59 autom4te.cache
-rw-r--r--    1 jeff.sandberg  staff     600 Aug 22 12:55 circle.yml
-rwxr-xr-x    1 jeff.sandberg  staff    7382 Aug 22 12:59 compile
-rwxr-xr-x    1 jeff.sandberg  staff   44259 Aug 22 12:59 config.guess
-rw-r--r--    1 jeff.sandberg  staff   10114 Aug 22 12:59 config.h.in
-rwxr-xr-x    1 jeff.sandberg  staff   36515 Aug 22 12:59 config.sub
-rwxr-xr-x    1 jeff.sandberg  staff  251861 Aug 22 12:59 configure
-rw-r--r--    1 jeff.sandberg  staff   21026 Aug 22 12:55 configure.ac
-rwxr-xr-x    1 jeff.sandberg  staff   23567 Aug 22 12:59 depcomp
drwxr-xr-x   62 jeff.sandberg  staff    2108 Aug 22 12:55 dictfiles
drwxr-xr-x   47 jeff.sandberg  staff    1598 Aug 22 12:55 docs
drwxr-xr-x    6 jeff.sandberg  staff     204 Aug 22 12:55 dsl
drwxr-xr-x    4 jeff.sandberg  staff     136 Aug 22 12:55 fnmatch
drwxr-xr-x    9 jeff.sandberg  staff     306 Aug 22 12:55 gnu_regex
-rwxr-xr-x    1 jeff.sandberg  staff   14676 Aug 22 12:59 install-sh
drwxr-xr-x   89 jeff.sandberg  staff    3026 Aug 22 12:55 main
drwxr-xr-x    7 jeff.sandberg  staff     238 Aug 22 12:59 makefiles
drwxr-xr-x    7 jeff.sandberg  staff     238 Aug 22 12:55 man
drwxr-xr-x   19 jeff.sandberg  staff     646 Aug 22 12:55 misc
-rwxr-xr-x    1 jeff.sandberg  staff    6873 Aug 22 12:59 missing
-rw-r--r--    1 jeff.sandberg  staff    1728 Aug 22 12:55 mk_mingw.mak
-rw-r--r--    1 jeff.sandberg  staff    2443 Aug 22 12:55 mk_mvc.mak
drwxr-xr-x   11 jeff.sandberg  staff     374 Aug 22 12:55 old-docs
drwxr-xr-x   18 jeff.sandberg  staff     612 Aug 22 12:55 optlib
drwxr-xr-x   89 jeff.sandberg  staff    3026 Aug 22 12:55 parsers
drwxr-xr-x    5 jeff.sandberg  staff     170 Aug 22 12:55 read
-rw-r--r--    1 jeff.sandberg  staff    5883 Aug 22 12:55 source.mak
drwxr-xr-x    9 jeff.sandberg  staff     306 Aug 22 12:55 win32
$ ls -l /Users/$USER/Library/Caches/Homebrew/universal-ctags--git/install-sh
-rwxr-xr-x  1 jeff.sandberg  staff  14676 Aug 22 12:59 /Users/jeff.sandberg/Library/Caches/Homebrew/universal-ctags--git/install-sh
KazuakiM commented 7 years ago

@masatake I checked debug mode and homebrew was cloned at this path. So this path is correct.

I'm not very good system programming on MacOS X. But I'll look into it.

debug mode command

brew install --HEAD --verbose universal-ctags/universal-ctags/universal-ctags

operation log

https://gist.github.com/KazuakiM/fe62b0d4106b80a391d15a701ff88984

masatake commented 7 years ago

O.k.

@paradox460, could you run

brew install --HEAD --verbose universal-ctags/universal-ctags/universal-ctags

, and put the output to your gist as @KazuakiM did?

I would like to compare the both output.

masatake commented 7 years ago

Sorry, I close this mistakenly.

install.sh may be generated by autoreconf, which is run by autogen.sh.

In the change https://github.com/universal-ctags/ctags/pull/1534, I turned on trace-mode of autogen.sh.

I would like to see the output of "brew install --HEAD universal-ctags/universal-ctags/universal-ctags" from scratch.

I would like to compare the output of the command line run on @KazuakiM's environment and @paradox460's environment.

I hope we can see something difference in the comparison.

paradox460 commented 7 years ago

https://gist.github.com/45e5982640ab31cd892031f8f63a48d1

masatake commented 7 years ago

The 2nd Running gen-repoinfo script fails though the first running succeeds. I wonder why. Running gen-repoinfo multiple times is expected behavior as the @KazuakiM's log shows.

I have to add codes for debug printing to Makefile.am. @KazuakiM, it is possible to refer another branch of universal-ctags/ctags from universal-ctags.rb?

I would like you to create a branch named "gen-repoinfo-debug" at your side, "universal-ctags/homebrew-universal-ctags". I will create a branch named "homebrew-debug" at my side, "universal-ctags/ctags". I will modify Makefile.am in "homebrew-debug" branch for debugging. universal-ctags.rb of "gen-repoinfo-debug" branch of "universal-ctags/homebrew-universal-ctags" should refer "homebrew-debug" branch of "universal-ctags/ctags".

As a result, we can make the debugging code run on @paradox460 side.

@paradox460, we will add extra debugging code to Makefile.am. I would like you to test "gen-repoinfo-debug" branch of "universal-ctags/homebrew-universal-ctags" . @KazuakiM may tell more detail instruction in the future. Thank you for your corporation.

masatake commented 7 years ago

I made the branch "homebrew-debug" branch. See https://github.com/universal-ctags/ctags/tree/homebrew-debug.

KazuakiM commented 7 years ago

@masatake I could set it as homebrew-debug branch in my fork repository. However, I could not find the way to install it with gen-repoinfo-debug branch. I'd like to investigate a little more, but as a compromise plan, There is a way to place another fomula file on the master branch and reference the homebrew-debug branch.

masatake commented 7 years ago

@KazuakiM , I see. This is typical remote debug session. If you need more access-right to repositories or something other, call me again. Thank you very much.

KazuakiM commented 7 years ago

@paradox460 Try the following. And put the output to your gist?

  1. find fomula file.
    $ cd /usr/local/
    $ find ./ -name 'universal-ctags.rb'
    .//Cellar/universal-ctags/HEAD-4625ceb/.brew/universal-ctags.rb
  2. edit /usr/local/Cellar/universal-ctags/HEAD-4625ceb/.brew/universal-ctags.rb
    class UniversalCtags < Formula
    desc "Maintained ctags implementation"
    homepage "https://github.com/universal-ctags/ctags"
    -  head "https://github.com/universal-ctags/ctags.git"
    +  head "https://github.com/universal-ctags/ctags.git", :branch => "homebrew-debug"
    depends_on "autoconf" => :build
  3. re-install
    brew install --HEAD --verbose universal-ctags/universal-ctags/universal-ctags
medeirosthiago commented 5 years ago

Hey guys! I'm facing the same problem @paradox460

This is my output: https://gist.github.com/medeirosthiago/5a31d5a04fe25f5269623e6bb40c06af

I don't know if the problem is permissions 🤔

KazuakiM commented 5 years ago

Hi, @medeirosthiago I think this warning is pip error ( https://github.com/pypa/setuptools/issues/1078 ).

warning: manifest_maker: standard file '-c' not found

So change master branch, not “homebrew-debug” . And try the following.

brew install --without-doc --HEAD universal-ctags/universal-ctags/universal-ctags
medeirosthiago commented 5 years ago

Hey @KazuakiM Thanks, but I still wasn't able to install using master branch.

I've updated the output: https://gist.github.com/medeirosthiago/5a31d5a04fe25f5269623e6bb40c06af

KazuakiM commented 5 years ago

Hi @medeirosthiago You will add --without-doc options.

medeirosthiago commented 5 years ago

Hi @KazuakiM

I tried again using --without-doc and this is the output: https://gist.github.com/medeirosthiago/5a31d5a04fe25f5269623e6bb40c06af

KazuakiM commented 5 years ago

Hi @medeirosthiago Thanks, solved one problem. Do you try it?

$ xcode-select --install
$ brew update
$ brew doctor
medeirosthiago commented 5 years ago

Nice, thanks.

Below follows my outputs.

$ xcode-select --install

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

$ brew update

Already up-to-date.

$ brew doctor

Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
  /Users/t.medeiros/.pyenv/shims/python3.5m-config
  /Users/t.medeiros/.pyenv/shims/python2-config
  /Users/t.medeiros/.pyenv/shims/python2.7-config
  /Users/t.medeiros/.pyenv/shims/python3.5-config
  /Users/t.medeiros/.pyenv/shims/python-config
  /Users/t.medeiros/.pyenv/shims/python3-config

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  ctags
masatake commented 5 years ago

@medeirosthiago, Could you tell me the output of

$ /Library/Developer/CommandLineTools/usr/bin/make --version
$ /Library/Developer/CommandLineTools/usr/bin/make -v

I would like to know more details of the execution of make. To do so, I have to know the implementation(GNU or BSD?) of make on your platform.

@KazuakiM, I would like to add something debug option to the line:

 system "make", --trace-or-debug-or-verbose

The lines in the log on gist:

==> make
./misc/gen-repoinfo main/repoinfo.h
/Library/Developer/CommandLineTools/usr/bin/make  all-am
make[1]: ./install-sh: Permission denied
make[1]: ./install-sh: Permission denied
make[1]: *** [parsers/.deps/.dirstamp] Error 1

This is very strange. The execution bit of ./install-sh may be set to 0. install-sh comes from automake:

autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:11: installing './install-sh'

I read the place where doing "installing ..." in automake. It does:

          $message = "installing '$fullfile'";

          # The license file should not be volatile.
          if ($file eq "COPYING")
            {
              $message .= " using GNU General Public License v3 file";
              $trailer2 = "\n    Consider adding the COPYING file"
                        . " to the version control system"
                        . "\n    for your code, to avoid questions"
                        . " about which license your project uses";
            }

          # Windows Perl will hang if we try to delete a
          # file that doesn't exist.
          unlink ($fullfile) if -f $fullfile;
          if ($symlink_exists && ! $copy_missing)
            {
              if (! symlink ("$libdir/$file", $fullfile)
                  || ! -e $fullfile)
                {
                  $suppress = 0;
                  $trailer = "; error while making link: $!";
                }
            }
          elsif (system ('cp', "$libdir/$file", $fullfile))

It seems that automake just do cp the file from $libdir to "./install-sh." I cannot find a line doing chmod.

I can image only two possible stories.

How about adding following lines before doing 'system "make"'?

system "ls", "-l", "install.sh"
system "./install.sh"
system "make"

The first line (ls -l) is for checking the bit. The second line (./install.sh) is for checking it is really an exectuable.

medeirosthiago commented 5 years ago

Hi @masatake This is the ouput:

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0
masatake commented 5 years ago

@medeirosthiago, I wonder your make support --trace option. Could you check the output of --help option like:

[jet@localhost]~/var/ctags% make --help | grep trace
  --trace                     Print tracing information.
KazuakiM commented 5 years ago

Hi @medeirosthiago There are some points which concern me.

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  ctags

Do you install other ctags from homebrew? If you don't have any problems, uninstall ctags applications.

@masatake OK. Just a moment, please.

system "make", --trace-or-debug-or-verbose

KazuakiM commented 5 years ago

@masatake Add -d options results.

https://gist.github.com/KazuakiM/d9bea5f907c20378b76e7364dbea5d53

Add ls -l && ./install.sh results

https://gist.github.com/KazuakiM/dfc864356455331282bebbcac5575cf0

masatake commented 5 years ago

@KazuakiM, no, I don't want to know about your build environment. ctags can be built well on your environment:-)

I would like to know the information about @medeirosthiago's build environemnt.

medeirosthiago commented 5 years ago

Hey guys, sorry for my late response.

@masatake I don't have --trace option on make:

$ make --help
Usage: make [options] [target] ...
Options:
  -b, -m                      Ignored for compatibility.
  -B, --always-make           Unconditionally make all targets.
  -C DIRECTORY, --directory=DIRECTORY
                              Change to DIRECTORY before doing anything.
  -d                          Print lots of debugging information.
  --debug[=FLAGS]             Print various types of debugging information.
  -e, --environment-overrides
                              Environment variables override makefiles.
  -f FILE, --file=FILE, --makefile=FILE
                              Read FILE as a makefile.
  -h, --help                  Print this message and exit.
  -i, --ignore-errors         Ignore errors from commands.
  -I DIRECTORY, --include-dir=DIRECTORY
                              Search DIRECTORY for included makefiles.
  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no arg.
  -k, --keep-going            Keep going when some targets can't be made.
  -l [N], --load-average[=N], --max-load[=N]
                              Don't start multiple jobs unless load is below N.
  -L, --check-symlink-times   Use the latest mtime between symlinks and target.
  -n, --just-print, --dry-run, --recon
                              Don't actually run any commands; just print them.
  -o FILE, --old-file=FILE, --assume-old=FILE
                              Consider FILE to be very old and don't remake it.
  -p, --print-data-base       Print make's internal database.
  -q, --question              Run no commands; exit status says if up to date.
  -r, --no-builtin-rules      Disable the built-in implicit rules.
  -R, --no-builtin-variables  Disable the built-in variable settings.
  -s, --silent, --quiet       Don't echo commands.
  -S, --no-keep-going, --stop
                              Turns off -k.
  -t, --touch                 Touch targets instead of remaking them.
  -v, --version               Print the version number of make and exit.
  -w, --print-directory       Print the current directory.
  --no-print-directory        Turn off -w, even if it was turned on implicitly.
  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
                              Consider FILE to be infinitely new.
  --warn-undefined-variables  Warn when an undefined variable is referenced.
  -N OPTION, --NeXT-option=OPTION
                              Turn on value of NeXT OPTION.

This program built for i386-apple-darwin11.3.0
Report bugs to <bug-make@gnu.org>
$ make --help  | grep trace
$

@KazuakiM I removed my old ctags version. This is my new output: https://gist.github.com/medeirosthiago/5a31d5a04fe25f5269623e6bb40c06af

What kind of information do you guys need from me?

KazuakiM commented 5 years ago

@medeirosthiago Debug preparation is ready. Do you try it?

  1. Brew Update
    $ brew update
  2. Move tap directory.
    
    $ cd /usr/local/Homebrew/Library/Taps/universal-ctags/homebrew-universal-ctags/

-- check directory $ ls -l total 72 -rw-r--r-- 1 kazuakim admin 240B 7 4 2017 .editorconfig drwxr-xr-x 16 kazuakim admin 512B 9 11 12:48 .git -rw-r--r-- 1 kazuakim admin 550B 6 25 13:44 .travis.yml -rw-r--r-- 1 kazuakim admin 18K 10 16 2017 COPYING -rw-r--r-- 1 kazuakim admin 1.2K 4 18 10:10 README.md -rw-r--r-- 1 kazuakim admin 2.2K 6 25 13:44 universal-ctags.rb

3. Edit git config

$ git config --edit

Modify fetch target.
```diff
[remote "origin"]
-   fetch = +refs/heads/master:refs/remotes/origin/master
+   fetch = +refs/heads/*:refs/remotes/origin/*
  1. Git operation
    
    $ git fetch
    -- I think add "for-debugging-issue-23-strange-install-sh" baranch

$ git checkout -b for-debugging-issue-23-strange-install-sh origin/for-debugging-issue-23-strange-install-sh

5. Install

$ brew install --HEAD --verbose universal-ctags/universal-ctags/universal-ctags

medeirosthiago commented 5 years ago

Hi @KazuakiM

I did all the steps, this is the output: https://gist.github.com/medeirosthiago/5a31d5a04fe25f5269623e6bb40c06af

masatake commented 5 years ago
==> Checking out branch master
git checkout -f master --

@KazuakiM, is this o.k.? It seems that the code in master branch is built.

KazuakiM commented 5 years ago

@medeirosthiago Is 4 Git operation no problem? And check branch.

medeirosthiago commented 5 years ago

I recorded a asciinema so you can check what I did: https://asciinema.org/a/ej7KRdR5pNsgpO0Z5DGCr7mJy

masatake commented 5 years ago

It seems that I misunderstood the output.

==> Checking out branch master
git checkout -f master --

This may be o.k. This checkout is for ctags repository, not for homebrew-universal-ctags.

masatake commented 5 years ago

@medeirosthiago, could you try the step 4.5 that is placed between the step 4 and the step 5.

4.5

$ cat /usr/local/Homebrew/Library/Taps/universal-ctags/homebrew-universal-ctags/universal-ctags.rb
medeirosthiago commented 5 years ago

@masatake the cat is here: https://gist.github.com/medeirosthiago/8a13896f91e87ecff264a74a7e7ee222

masatake commented 5 years ago

Thank you. I have looked into the output. You checked out the branch for debugging well. Though "ls" is included in the output, I cannot find its execution in the video. At 01:19, "make" is run just after "configure". I wonder why. I have no idea to debug this item.

Obviously "install.sh" is wrong. But I have no way to prove it.

KazuakiM commented 5 years ago

@medeirosthiago I have no idea too. So sorry. You can try brew cleanup and reboot.

k-takata commented 5 years ago

I don't know about homebrew, but how about passing the --keep-tmp option to brew install and check what happens? It might beuseful to check the contents of config.log and the permissions of install-sh.

medeirosthiago commented 5 years ago

@KazuakiM don't worry... I will try to install it manually, thanks for your help! 😄

ipatch commented 4 years ago

TL;DR

this is how i got ctags installed

uctags-brew-install-issue sm

wow this never got resolved, totally running into this issue this afternoon.

the only way i could install was to drop into a interactive prompt for installing the formula

brew install --HEAD --verbose --interactive universal-ctags/universal-ctags/universal-ctags

then pop open the formula file universal-ctags.rb

take a look the install steps

system "./autogen.sh
system "./configure", "--prefix=#{prefix}", *
system "make", "install"

the autogen.sh, and configure step run fine if i set the prefix for the installation to something like --prefix=$HOME/beta

and then the make command completes, and the make install command completes without any issues, the two binaries are created within their respected directories, and several directories are created for holding / containing man pages related to ctags.

when i tried to run make install from the interactive session to any other directory other than my $HOME directory the installation fails.

tapped / untapped the formula several times,

running,

brew install --verbose

then popping open the config.log and scrolling up one can see the process fails due to permission issues.

medeirosthiago commented 4 years ago

heey @ipatch ! It's been a long time 🙈 Thank you so much for your help 👌 ! With this workaround I was able to install it successfully 🙌 🎉 .

ipatch commented 4 years ago

awesome, glad someone found it useful, for whatever reason (unknown to me) the make install portion for universal ctags fails when running it through the brew install command. 🤷‍♂️

my ruby chops are a bit dated at this point, and navigating through the brew src to figure out why the install script is failing due to permission issues is out of my wheel house, so i guess i'll settle for this workaround for the time being until somebody with the proper know how can come up with a more fitting solution.

cheers 🍩