mirror of
https://github.com/NixOS/patchelf.git
synced 2025-10-16 05:36:30 +08:00
36
flake.nix
36
flake.nix
@@ -36,13 +36,25 @@
|
|||||||
./completions
|
./completions
|
||||||
./patchelf.1
|
./patchelf.1
|
||||||
./patchelf.spec.in
|
./patchelf.spec.in
|
||||||
./src
|
(lib.fileset.difference ./src (
|
||||||
./tests
|
lib.fileset.unions [
|
||||||
|
./src/Makefile.am
|
||||||
|
./src/meson.build
|
||||||
|
]
|
||||||
|
))
|
||||||
|
(lib.fileset.difference ./tests (
|
||||||
|
lib.fileset.unions [
|
||||||
|
./tests/Makefile.am
|
||||||
|
#./tests/meson.build
|
||||||
|
]
|
||||||
|
))
|
||||||
./version
|
./version
|
||||||
];
|
];
|
||||||
|
|
||||||
autotoolsSrcFiles = [
|
autotoolsSrcFiles = [
|
||||||
./Makefile.am
|
./Makefile.am
|
||||||
|
./src/Makefile.am
|
||||||
|
./tests/Makefile.am
|
||||||
./configure.ac
|
./configure.ac
|
||||||
./m4
|
./m4
|
||||||
];
|
];
|
||||||
@@ -51,6 +63,12 @@
|
|||||||
./CMakeLists.txt
|
./CMakeLists.txt
|
||||||
];
|
];
|
||||||
|
|
||||||
|
mesonSrcFiles = [
|
||||||
|
./meson.build
|
||||||
|
./meson.options
|
||||||
|
./src/meson.build
|
||||||
|
];
|
||||||
|
|
||||||
autotoolsSrc = lib.fileset.toSource {
|
autotoolsSrc = lib.fileset.toSource {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
fileset = lib.fileset.unions (baseSrcFiles ++ autotoolsSrcFiles);
|
fileset = lib.fileset.unions (baseSrcFiles ++ autotoolsSrcFiles);
|
||||||
@@ -89,7 +107,7 @@
|
|||||||
inherit version;
|
inherit version;
|
||||||
src = lib.fileset.toSource {
|
src = lib.fileset.toSource {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
fileset = lib.fileset.unions (baseSrcFiles ++ autotoolsSrcFiles ++ cmakeSrcFiles);
|
fileset = lib.fileset.unions (baseSrcFiles ++ autotoolsSrcFiles ++ cmakeSrcFiles ++ mesonSrcFiles);
|
||||||
};
|
};
|
||||||
versionSuffix = ""; # obsolete
|
versionSuffix = ""; # obsolete
|
||||||
preAutoconf = "echo ${version} > version";
|
preAutoconf = "echo ${version} > version";
|
||||||
@@ -133,6 +151,8 @@
|
|||||||
|
|
||||||
build-cmake = forAllSystems (system: self.packages.${system}.patchelf-cmake);
|
build-cmake = forAllSystems (system: self.packages.${system}.patchelf-cmake);
|
||||||
|
|
||||||
|
build-meson = forAllSystems (system: self.packages.${system}.patchelf-meson);
|
||||||
|
|
||||||
# x86_64-linux seems to be only working clangStdenv at the moment
|
# x86_64-linux seems to be only working clangStdenv at the moment
|
||||||
build-sanitized-clang = lib.genAttrs [ "x86_64-linux" ] (
|
build-sanitized-clang = lib.genAttrs [ "x86_64-linux" ] (
|
||||||
system:
|
system:
|
||||||
@@ -151,6 +171,7 @@
|
|||||||
self.hydraJobs.build.x86_64-linux
|
self.hydraJobs.build.x86_64-linux
|
||||||
self.hydraJobs.build.i686-linux
|
self.hydraJobs.build.i686-linux
|
||||||
self.hydraJobs.build-cmake.x86_64-linux
|
self.hydraJobs.build-cmake.x86_64-linux
|
||||||
|
self.hydraJobs.build-meson.x86_64-linux
|
||||||
# FIXME: add aarch64 emulation to our github action...
|
# FIXME: add aarch64 emulation to our github action...
|
||||||
#self.hydraJobs.build.aarch64-linux
|
#self.hydraJobs.build.aarch64-linux
|
||||||
self.hydraJobs.build-sanitized.x86_64-linux
|
self.hydraJobs.build-sanitized.x86_64-linux
|
||||||
@@ -190,6 +211,7 @@
|
|||||||
};
|
};
|
||||||
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [
|
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [
|
||||||
#pkgs.buildPackages.cmake
|
#pkgs.buildPackages.cmake
|
||||||
|
#pkgs.buildPackages.meson
|
||||||
#pkgs.buildPackages.ninja
|
#pkgs.buildPackages.ninja
|
||||||
modular.pre-commit.settings.package
|
modular.pre-commit.settings.package
|
||||||
(pkgs.buildPackages.writeScriptBin "pre-commit-hooks-install" modular.pre-commit.settings.installationScript)
|
(pkgs.buildPackages.writeScriptBin "pre-commit-hooks-install" modular.pre-commit.settings.installationScript)
|
||||||
@@ -245,6 +267,14 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patchelf-meson = pkgs.callPackage ./package-meson.nix {
|
||||||
|
inherit version;
|
||||||
|
src = lib.fileset.toSource {
|
||||||
|
root = ./.;
|
||||||
|
fileset = lib.fileset.unions (baseSrcFiles ++ mesonSrcFiles);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# This is a good test to see if packages can be cross-compiled. It also
|
# This is a good test to see if packages can be cross-compiled. It also
|
||||||
# tests if our testsuite uses target-prefixed executable names.
|
# tests if our testsuite uses target-prefixed executable names.
|
||||||
patchelf-musl-cross = patchelfFor pkgs.pkgsCross.musl64;
|
patchelf-musl-cross = patchelfFor pkgs.pkgsCross.musl64;
|
||||||
|
@@ -40,6 +40,29 @@
|
|||||||
cmake-format = {
|
cmake-format = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
meson-format =
|
||||||
|
let
|
||||||
|
meson = pkgs.meson.overrideAttrs {
|
||||||
|
doCheck = false;
|
||||||
|
doInstallCheck = false;
|
||||||
|
patches = [
|
||||||
|
(pkgs.fetchpatch {
|
||||||
|
url = "https://github.com/mesonbuild/meson/commit/38d29b4dd19698d5cad7b599add2a69b243fd88a.patch";
|
||||||
|
hash = "sha256-PgPBvGtCISKn1qQQhzBW5XfknUe91i5XGGBcaUK4yeE=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
files = "(meson.build|meson.options)$";
|
||||||
|
entry = "${pkgs.writeScript "format-meson" ''
|
||||||
|
#!${pkgs.runtimeShell}
|
||||||
|
for file in "$@"; do
|
||||||
|
${lib.getExe meson} format -ic ${../meson.format} "$file"
|
||||||
|
done
|
||||||
|
''}";
|
||||||
|
};
|
||||||
nixfmt-rfc-style = {
|
nixfmt-rfc-style = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
36
meson.build
Normal file
36
meson.build
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
project(
|
||||||
|
'patchelf',
|
||||||
|
'cpp',
|
||||||
|
'c',
|
||||||
|
version : files('version'),
|
||||||
|
default_options : {
|
||||||
|
'cpp_std' : 'c++17',
|
||||||
|
'warning_level' : '2',
|
||||||
|
},
|
||||||
|
meson_version : '>=1.2',
|
||||||
|
)
|
||||||
|
|
||||||
|
subdir('src')
|
||||||
|
#subdir('tests') # TODO
|
||||||
|
|
||||||
|
install_man('patchelf.1')
|
||||||
|
|
||||||
|
#specfile = configure_file(
|
||||||
|
# output : 'patchelf.spec',
|
||||||
|
# configuration : {'PACKAGE_VERSION' : meson.project_version()},
|
||||||
|
#)
|
||||||
|
|
||||||
|
# Commented things out should only be for `meson dist`. Need to
|
||||||
|
# reimplement for that.
|
||||||
|
install_data(
|
||||||
|
'README.md',
|
||||||
|
#'COPYING',
|
||||||
|
#specfile,
|
||||||
|
#'version',
|
||||||
|
install_dir : get_option('datadir') / 'doc' / 'patchelf',
|
||||||
|
)
|
||||||
|
|
||||||
|
install_data(
|
||||||
|
'completions/zsh/_patchelf',
|
||||||
|
install_dir : get_option('datadir') / 'zsh' / 'site-functions',
|
||||||
|
)
|
7
meson.format
Normal file
7
meson.format
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
indent_by = ' '
|
||||||
|
space_array = true
|
||||||
|
kwargs_force_multiline = false
|
||||||
|
wide_colon = true
|
||||||
|
group_arg_value = true
|
||||||
|
indent_before_comments = ' '
|
||||||
|
use_editor_config = true
|
7
meson.options
Normal file
7
meson.options
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
option(
|
||||||
|
'page_size',
|
||||||
|
type : 'combo',
|
||||||
|
value : 'auto',
|
||||||
|
choices : [ 'auto', '4096', '65536', '16384', '8192' ],
|
||||||
|
description : 'Default page size, or "auto" to detect at runtime',
|
||||||
|
)
|
17
package-meson.nix
Normal file
17
package-meson.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
meson,
|
||||||
|
ninja,
|
||||||
|
version,
|
||||||
|
src,
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "patchelf";
|
||||||
|
inherit version src;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
];
|
||||||
|
doCheck = true;
|
||||||
|
}
|
18
src/meson.build
Normal file
18
src/meson.build
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Configure DEFAULT_PAGESIZE via config.h
|
||||||
|
confdata = configuration_data()
|
||||||
|
page_size = get_option('page_size')
|
||||||
|
if page_size != 'auto'
|
||||||
|
confdata.set_quoted('DEFAULT_PAGESIZE', page_size)
|
||||||
|
else
|
||||||
|
# For "auto", leave it undefined so runtime detection happens
|
||||||
|
endif
|
||||||
|
|
||||||
|
config_h = configure_file(output : 'config.h', configuration : confdata)
|
||||||
|
|
||||||
|
executable(
|
||||||
|
'patchelf',
|
||||||
|
[ 'patchelf.cc', 'patchelf.h', config_h ],
|
||||||
|
include_directories : include_directories('.'),
|
||||||
|
cpp_args : [ '-include', meson.current_build_dir() / 'config.h' ],
|
||||||
|
install : true,
|
||||||
|
)
|
Reference in New Issue
Block a user