How to use clang-format from macports? - clang

I would like to use clang-format, but I can't find it in my system. I have llvm installed from macports. What is the way to install/enable it?

First install clang-3.9 with MacPorts with the command
sudo port install clang-3.9
Afterwards, you will find clang-format-mp-3.9 in /opt/local/bin which should already be in your PATH so you can just use it.
If you want to make clang and all other related tools point to the version you just installed, you can use the select mechanism of MacPorts.
You can see all available choices with port select --list for clang.
$ port select --list clang
Available versions for clang:
mp-clang-3.8
mp-clang-3.9
none (active)
With sudo port select --set clang <version> you choose one of them as the new default, which will create symlinks in /opt/local/bin without the version suffix.
$ sudo port select --set clang mp-clang-3.9
Selecting 'mp-clang-3.9' for 'clang' succeeded. 'mp-clang-3.9' is now active.
You can confirm this change by looking at the version of the tool:
$ clang-format --version
clang-format version 3.9.0 (tags/RELEASE_390/final)
If you later wish to remove these symlinks in order to avoid hiding tools installed by Xcode, just select the none version.

You need to install clang to get the clang tools (and llvm is a dependency of clang, so you are half way there). To get the latest stable version as of this post via macports use
sudo port install clang-3.9
Now for me clang-format is then installed in /opt/local/libexec/llmv-3.9/bin. In here you will find all the other clang tools too, such as clang-tidy.
For simplicity I made an alias in my bash profile, since I do not like the Apple's fmt command: alias fmt ='/opt/local/libexec/llmv-3.9/bin/clang-format'. Therefore fmt -i file.c now runs clang-format inplace (overwrites file) with the styles I picked in my .clang-format file.
As an added bonus this is an amazing tool to help test what all the clang-format options do: http://zed0.co.uk/clang-format-configurator/

The latest version of clang is 8.0:
$ sudo port install clang-8.0
$ clang
clang clang-check-mp-7.0 clang-format-mp-8.0 clang-offload-bundler-mp-7.0 clang-reorder-fields-mp-7.0
clang++ clang-check-mp-8.0 clang-func-mapping-mp-7.0 clang-offload-bundler-mp-8.0 clang-reorder-fields-mp-8.0
clang++-mp-7.0 clang-cl-mp-7.0 clang-import-test-mp-7.0 clang-query-mp-7.0 clang-tidy-mp-7.0
clang++-mp-8.0 clang-cl-mp-8.0 clang-import-test-mp-8.0 clang-query-mp-8.0 clang-tidy-mp-8.0
clang-apply-replacements-mp-7.0 clang-cpp-mp-7.0 clang-include-fixer-mp-7.0 clang-refactor-mp-7.0 clangd-mp-7.0
clang-apply-replacements-mp-8.0 clang-cpp-mp-8.0 clang-include-fixer-mp-8.0 clang-refactor-mp-8.0 clangd-mp-8.0
clang-change-namespace-mp-7.0 clang-extdef-mapping-mp-8.0 clang-mp-7.0 clang-rename-mp-7.0 clangd-xpc-test-client-mp-8.0
clang-change-namespace-mp-8.0 clang-format-mp-7.0 clang-mp-8.0 clang-rename-mp-8.0
So clang-format-mp-8.0 at /opt/local/bin/ is the one.

Related

Finding the binary's name after package installation

When I installed 7zip via home brew (Formula sevenzip), i noticed that i cannot run it via sevenzip and even brew info sevenzip did not tell me the name of the binary.
Only after looking in the script file on Github I noticed a command 7zz but there must be an easier way to find out the binaries or commands associated with a homebrew package.
The simplest I know is:
brew ls PACKAGE
and you can normally see it pretty quickly. Personally, I use p7zip as PACKAGE.
Alternatively, as brew --prefix tells you where binaries are installed (via symlinks), you can find the newest installed binary with:
ls -lrt $(brew --prefix)/bin
and it's the last one listed.

Installing Wine on Mac OS Catalina. Error: No available formula with the name "wine"

I'm trying to install Wine on my Mac via Brew. I'm using Catalina and just updated brew, installed XQuartz and have Xcode installed. When I type the command "Brew install wine" it returns the following:
Error: No available formula with the name "wine"
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
git -C "$(brew --repo homebrew/core)" fetch --unshallow
wine was deleted from homebrew/core in commit 82bd38bc:
wine: delete
To show the formula before removal run:
git -C "$(brew --repo homebrew/core)" show 82bd38bc^:Formula/wine.rb
If you still use this formula consider creating your own tap:
https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap
I'm following this tutorial: https://www.davidbaumgold.com/tutorials/wine-mac/
When I run Brew doctor I get the following:
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 which 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:
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7-config
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7m-config
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3-config
Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected dylibs:
/usr/local/lib/libtcl8.6.dylib
/usr/local/lib/libtk8.6.dylib
Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected header files:
/usr/local/include/fakemysql.h
/usr/local/include/fakepq.h
/usr/local/include/fakesql.h
/usr/local/include/itcl.h
/usr/local/include/itcl2TclOO.h
/usr/local/include/itclDecls.h
/usr/local/include/itclInt.h
/usr/local/include/itclIntDecls.h
/usr/local/include/itclMigrate2TclCore.h
/usr/local/include/itclTclIntStubsFcn.h
/usr/local/include/mysqlStubs.h
/usr/local/include/odbcStubs.h
/usr/local/include/pqStubs.h
/usr/local/include/tcl.h
/usr/local/include/tclDecls.h
/usr/local/include/tclOO.h
/usr/local/include/tclOODecls.h
/usr/local/include/tclPlatDecls.h
/usr/local/include/tclThread.h
/usr/local/include/tclTomMath.h
/usr/local/include/tclTomMathDecls.h
/usr/local/include/tdbc.h
/usr/local/include/tdbcDecls.h
/usr/local/include/tdbcInt.h
/usr/local/include/tk.h
/usr/local/include/tkDecls.h
/usr/local/include/tkPlatDecls.h
Warning: Unbrewed .pc files were found in /usr/local/lib/pkgconfig.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected .pc files:
/usr/local/lib/pkgconfig/tcl.pc
/usr/local/lib/pkgconfig/tk.pc
Warning: Unbrewed static libraries were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.
Unexpected static libraries:
/usr/local/lib/libtclstub8.6.a
/usr/local/lib/libtkstub8.6.a
I'm not sure these warnings has something to do with it.
Thanks in advance!
I was able to build Wine 64 bit from source on macOS Catalina and successfully run Notepad++ 64 bit on it.
My steps were more or less something like that:
Download Wine 4.20 from https://dl.winehq.org/wine/source/4.x/wine-4.20.tar.xz
Extract it
In terminal go to extracted directory
Run: ./configure --enable-win64
It showed that it cannot find some library (I do not remember what exactly) so I installed it with macports (sudo port install name_of_missing_package reported by ./configure)
After I was able to run ./configure --enable-win64 succesfully without errors in terminal run: make
It compiled after more than 30 minutes.
I run it with: ./wine start
It opened windows console and here I was able to cd to Notepad++ 64 bit directory (downloaded from https://notepad-plus-plus.org/repository/7.x/7.0/npp.7.bin.x64.zip note that newest version did not work and throwed some errors about some dll's)
I typed notepad++ to run exe file
It showed some errors about freetype fonts so I installed them with macports and I had to copy them from /opt/X11/lib to /usr/local/lib before wine detected them
After fixing freetype fonts problem I was able to run notepad++
Also you might want to run: sudo spctl --master-disable to disable gatekeeper if you will see some system alerts about loading app from unknown developer.
Also note that instead of ./wine start you can run ./wine explorer for graphical file manager instead of console
Those steps might not be exactly precise, as I'm not sure if I did not miss something but hope it will help someone.
Also note that obviously wine on macOS Catalina will be able to run only some 64 bit windows apps and all 32 bit windows app will not work. I also tested it with IrfanView 64 bit (https://www.fosshub.com/IrfanView.html?dwl=iview453_x64_setup.exe) and it also works fine.
In case you wanted to get wine working for purpose of running 32 bit games then unfortunately it will not work with wine but you can try with virtualbox. You can check https://www.youtube.com/watch?v=3AO8dF0vviQ for some performance improvements tips.
Wine hast been removed from homebrew due to the incompatibility to Macos Catalina
https://discourse.brew.sh/t/issue-with-wine/6188/3
Try using wine64 to run your .exe files after installing wine. The manuals and references don't seem to mention this explicitly.
More Info
I followed the guidance in the wine manual to install using home-brew. After install, I got an error when trying to test the installation like it says in the quickstart.
Install wine-stable using homebrew
brew tap homebrew/cask-versions
brew install --cask --no-quarantine wine-stable
After install, test by opening notepad
wine notepad
zsh: bad CPU type in executable: wine
While uninstalling wine, I noticed one of the linked libraries was called wine64. I immediately reinstalled and tried again using wine64 as the call, as I am using wine on an M1 Mac. This was successful!
You can also use winehelp to get access to more commands that will work with 64bit processor.
Based on https://github.com/Homebrew/homebrew-core/pull/46556#issuecomment-559938873 you can do brew cask install wine-stable on newer version of OS X. And works with recent versions of homebrew since the source version was moved :(
How to install wine on Mac OS Catalina with brew
install homebrew with
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
install xquartz to install wine using brew
brew cask install xquartz
install wine using brew
brew install homebrew/cask-versions/wine-devel
run wine and check the version
wine64 --version
As of Wine 5.0 there is no 32bit support on mac in the official version, but you are able to achieve it via the
Unofficial Wineskin Winery
You can download it from github releases here. And then create a Wineskin with WS11WineCX[64/32]bit19.0.[0/1]. All WS11 versions support Catalina. To use it you also need to turn off the no32exec boot argument. You theoretically can do it by typing:
sudo nvram boot-args="no32exec=0"
into the Terminal while you're logged in but it didn't work out for me, so if you'll have the same problem, reboot into the Recovery mode, in the menubar pick Utilities -> Terminal and type just:
nvram boot-args="no32exec=0"
(without sudo).
Example
To be more exact, to install eg. Steam 32bit, you would:
Install the Unofficiall Wineskin Winery from the provided link
Turn on the 32bit execution boot argument by going into Recovery Mode and entering nvram boot-args="no32exec=0" into the terminal
Open Wineskin, click the '+' sign and scroll down to find the WS11WineCX64bit19.0.1 (the newest version with 64 and 32 bit support, at the time of writing)
Click update/install under the Wrapper Version.
Click Create New Blank Wrapper, name it and click through installation of mono and gecko.
Launch the Wrapper App from Finder. Click Install Software, choose setup executable, and proceed through installation. Then pick the executable from a menu. (In case of steam, Steam.exe)
Note: If you get the "No windows app to open the file"(Like I did) error, click advanced -> configuration and set the Windows EXE to the path to the installer. Then find the place that it has installed in and set that as Windows EXE. Then you can run by clicking Test Run.
Enjoy your windows app, as an .app file!
Hope I helped!

Why do I get "has arcs from exit block" messages when running gcov?

I am running gcov to measure coverage but I get "has arcs from exit block" message for each of the functions I use in the c code. Is there any problem with this message? Should I ignore them?
This can mean that your gcno file has been generated with newer/different version of gcc compiler. See if at the beginning you have also warning like 'version '404*', prefer '402*' If yes, solution below:
Check if g++ --version and gcov --version give you the same results. If not, update your tools like sudo apt-get install gcov, or specific version like `sudo apt-get install gcc-4.7.
If you have many versions of gcc installer you can switch between them using update-alternatives:
Query (what do you have) example: sudo update-alternatives --query gcc.
Add/make changes example: sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60
I got this issue recently, and wanted to add a piece of information in addition to #tutejszy 's answer
If you are cross-compiling your code (or using a toolchain that is not the default installed one), you will need to use this particular toolchain gcov.
And if you want to use lcov on just created gcov objects, you will need to specify the path of the toolchain gcov using option --gcov-tool <path to gcov> when running lcov

Getting an error trying to install a particular gem 'oily_png (1.2.0)' MAC OS X El Capitan

I'm on mac OS X El Capitan and after trying to run bundle install I get the following error:
Can anybody help me fix this?
On a Mac anytime you upgrade Xcode or the operating system, there appears to be a chance of the command line tools being removed.
xcode-select --install
in the terminal window, will install the tools, this can also be done inside the xcode application.
[~] xcode-select -h
Usage: xcode-select [options]
Print or change the path to the active developer directory. This directory
controls which tools are used for the Xcode command line tools (for example,
xcodebuild) as well as the BSD development commands (such as cc and make).
Options:
-h, --help print this help message and exit
-p, --print-path print the path of the active developer directory
-s <path>, --switch <path> set the path for the active developer directory
--install open a dialog for installation of the command line developer tools
-v, --version print the xcode-select version
-r, --reset reset to the default command line tools path
if you have more than one set of tools installed (such as beta version) the -s, --switch flag is also helpful to get it pointed to one you want to use (or if the version it was pointed to was removed)

Install libc++ on mac 10.6.8

I'm currently trying to install the lib++.1.dylib on my mac. I followed the instructions here http://libcxx.llvm.org/ and downloaded the source. When I tried to ./buildit I encountered a clang++: command not found error.
So I went here http://clang.llvm.org/get_started.html and installed clang. Unfortunately now when I went back to installing libcxx, I still got the clang++ error. Clang itself works as clang --help brings up the help menu.
Installing Xcode isn't an option as I am runnning 10.6.8.
How do I proceed i.e. get the clang++ command to work?
There is an instruction for build libc++ on 10.6 in github
https://github.com/llvm-mirror/libcxx/tree/apple
To build on Mac OS X 10.6, you need a helper library and header found
here. cp cxxabi.h to /usr/include, and cp libc++abi.dylib to /usr/lib.
Next:
cd libcxx/lib
export TRIPLE=-apple-
./buildit
That should result in a libc++.1.dylib. To install it I like to use
links instead of copying, but either should work:
cd /usr/lib
sudo ln -sf path-to-libcxx/lib/libc++.1.dylib libc++.1.dylib
sudo ln -sf libc++.1.dylib libc++.dylib
cd /usr/include/c++
sudo ln -sf path-to-libcxx/include v1
Link in instruction not work.
The libcppabi for 10.6 You can download on this link http://www.mediafire.com/download/2aq37hc97n4f47c/libcppabi.zip
It is a fairly complex process to build libc++ on Mac 10.6, as it needs libc++abi to be present, which didn't ship with 10.6. So the working steps are as follow:
Build Clang.
Use this Clang to build libc++abi.
You have to make sure libc++abi and its header are properly placed so that in the next step in can be found.
Then use this Clang to build libc++ and link to this libc++abi.
Also note if you are using Clang 3.3 instead of the latest development trunk, you will also need this patch (http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/unwind.h?r1=172666&r2=189535&view=patch) to unwind.h so that libc++abi can be built properly.
I have tested a working process and updated the homebrew-version formula so it works in homebrew out-of-the-box. You can check the details at https://github.com/Homebrew/homebrew-versions/blob/master/llvm33.rb. Hope this helps.

Resources