79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
| # detect-libc
 | |
| 
 | |
| Node.js module to detect the C standard library (libc) implementation
 | |
| family and version in use on a given Linux system.
 | |
| 
 | |
| Provides a value suitable for use with the `LIBC` option of
 | |
| [prebuild](https://www.npmjs.com/package/prebuild),
 | |
| [prebuild-ci](https://www.npmjs.com/package/prebuild-ci) and
 | |
| [prebuild-install](https://www.npmjs.com/package/prebuild-install),
 | |
| therefore allowing build and provision of pre-compiled binaries
 | |
| for musl-based Linux e.g. Alpine as well as glibc-based.
 | |
| 
 | |
| Currently supports libc detection of `glibc` and `musl`.
 | |
| 
 | |
| ## Install
 | |
| 
 | |
| ```sh
 | |
| npm install detect-libc
 | |
| ```
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| ### API
 | |
| 
 | |
| ```js
 | |
| const { GLIBC, MUSL, family, version, isNonGlibcLinux } = require('detect-libc');
 | |
| ```
 | |
| 
 | |
| * `GLIBC` is a String containing the value "glibc" for comparison with `family`.
 | |
| * `MUSL` is a String containing the value "musl" for comparison with `family`.
 | |
| * `family` is a String representing the system libc family.
 | |
| * `version` is a String representing the system libc version number.
 | |
| * `isNonGlibcLinux` is a Boolean representing whether the system is a non-glibc Linux, e.g. Alpine.
 | |
| 
 | |
| ### detect-libc command line tool
 | |
| 
 | |
| When run on a Linux system with a non-glibc libc,
 | |
| the child command will be run with the `LIBC` environment variable
 | |
| set to the relevant value.
 | |
| 
 | |
| On all other platforms will run the child command as-is.
 | |
| 
 | |
| The command line feature requires `spawnSync` provided by Node v0.12+.
 | |
| 
 | |
| ```sh
 | |
| detect-libc child-command
 | |
| ```
 | |
| 
 | |
| ## Integrating with prebuild
 | |
| 
 | |
| ```json
 | |
|   "scripts": {
 | |
|     "install": "detect-libc prebuild-install || node-gyp rebuild",
 | |
|     "test": "mocha && detect-libc prebuild-ci"
 | |
|   },
 | |
|   "dependencies": {
 | |
|     "detect-libc": "^1.0.2",
 | |
|     "prebuild-install": "^2.2.0"
 | |
|   },
 | |
|   "devDependencies": {
 | |
|     "prebuild": "^6.2.1",
 | |
|     "prebuild-ci": "^2.2.3"
 | |
|   }
 | |
| ```
 | |
| 
 | |
| ## Licence
 | |
| 
 | |
| Copyright 2017 Lovell Fuller
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 |