Merge changes from topic "releng" into main
* changes: Add meson release note Move version to a JSON file so we can have release names Remove rl-next-dev
This commit is contained in:
commit
4f94531209
|
@ -1,11 +1,13 @@
|
||||||
---
|
---
|
||||||
synopsis: Clang build timing analysis
|
synopsis: Clang build timing analysis
|
||||||
cls: 587
|
cls: 587
|
||||||
|
category: Development
|
||||||
---
|
---
|
||||||
|
|
||||||
We now have Clang build profiling available, which generates Chrome
|
We now have Clang build profiling available, which generates Chrome
|
||||||
tracing files for each compilation unit. To enable it, run `meson configure
|
tracing files for each compilation unit. To enable it, run `meson configure
|
||||||
build -Dprofile-build=enabled` then rerun the compilation.
|
build -Dprofile-build=enabled` in a Clang stdenv (`nix develop
|
||||||
|
.#native-clangStdenvPackages`) then rerun the compilation.
|
||||||
|
|
||||||
If you want to make the build go faster, do a clang build with meson, then run
|
If you want to make the build go faster, do a clang build with meson, then run
|
||||||
`maintainers/buildtime_report.sh build`, then contemplate how to improve the
|
`maintainers/buildtime_report.sh build`, then contemplate how to improve the
|
||||||
|
@ -13,3 +15,8 @@ build time.
|
||||||
|
|
||||||
You can also look at individual object files' traces in
|
You can also look at individual object files' traces in
|
||||||
<https://ui.perfetto.dev>.
|
<https://ui.perfetto.dev>.
|
||||||
|
|
||||||
|
See [the wiki page][improving-build-times-wiki] for more details on how to do
|
||||||
|
this.
|
||||||
|
|
||||||
|
[improving-build-times-wiki]: https://wiki.lix.systems/link/8#bkmrk-page-title
|
15
doc/manual/rl-next/meson.md
Normal file
15
doc/manual/rl-next/meson.md
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
synopsis: Lix is built with meson
|
||||||
|
# and many more
|
||||||
|
cls: [580, 627, 628, 707, 711, 712, 719]
|
||||||
|
credits: [Qyriad, horrors, jade, 9999years, winter]
|
||||||
|
category: Packaging
|
||||||
|
---
|
||||||
|
|
||||||
|
Lix is built exclusively with the meson build system thanks to a huge team-wide
|
||||||
|
effort, and the legacy `make`/`autoconf` based build system has been removed
|
||||||
|
altogether. This improves maintainability of Lix, enables things like saving
|
||||||
|
20% of compile times with precompiled headers, and generally makes the build
|
||||||
|
less able to produce obscure incremental compilation bugs.
|
||||||
|
|
||||||
|
Non-Nix-based downstream packaging needs rewriting accordingly.
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
pkgs ? import <nixpkgs> { },
|
pkgs ? import <nixpkgs> { },
|
||||||
lib ? pkgs.lib,
|
lib ? pkgs.lib,
|
||||||
name ? "nix",
|
name ? "lix",
|
||||||
tag ? "latest",
|
tag ? "latest",
|
||||||
bundleNixpkgs ? true,
|
bundleNixpkgs ? true,
|
||||||
channelName ? "nixpkgs",
|
channelName ? "nixpkgs",
|
||||||
|
|
10
flake.nix
10
flake.nix
|
@ -59,7 +59,6 @@
|
||||||
# Set to true to build the release notes for the next release.
|
# Set to true to build the release notes for the next release.
|
||||||
buildUnreleasedNotes = true;
|
buildUnreleasedNotes = true;
|
||||||
|
|
||||||
version = lib.fileContents ./.version + versionSuffix;
|
|
||||||
versionSuffix =
|
versionSuffix =
|
||||||
if officialRelease then
|
if officialRelease then
|
||||||
""
|
""
|
||||||
|
@ -149,8 +148,7 @@
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
binaryTarball =
|
binaryTarball = nix: pkgs: pkgs.callPackage ./nix-support/binary-tarball.nix { inherit nix; };
|
||||||
nix: pkgs: pkgs.callPackage ./nix-support/binary-tarball.nix { inherit nix version; };
|
|
||||||
|
|
||||||
overlayFor =
|
overlayFor =
|
||||||
getStdenv: final: prev:
|
getStdenv: final: prev:
|
||||||
|
@ -227,7 +225,6 @@
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
user = rl-next-check "rl-next" ./doc/manual/rl-next;
|
user = rl-next-check "rl-next" ./doc/manual/rl-next;
|
||||||
dev = rl-next-check "rl-next-dev" ./doc/manual/rl-next-dev;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -309,7 +306,6 @@
|
||||||
perlBindings = self.hydraJobs.perlBindings.${system};
|
perlBindings = self.hydraJobs.perlBindings.${system};
|
||||||
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
||||||
rl-next = self.hydraJobs.rl-next.${system}.user;
|
rl-next = self.hydraJobs.rl-next.${system}.user;
|
||||||
rl-next-dev = self.hydraJobs.rl-next.${system}.dev;
|
|
||||||
# Will be empty attr set on i686-linux, and filtered out by forAvailableSystems.
|
# Will be empty attr set on i686-linux, and filtered out by forAvailableSystems.
|
||||||
pre-commit = self.hydraJobs.pre-commit.${system};
|
pre-commit = self.hydraJobs.pre-commit.${system};
|
||||||
}
|
}
|
||||||
|
@ -332,10 +328,10 @@
|
||||||
pkgs = nixpkgsFor.${system}.native;
|
pkgs = nixpkgsFor.${system}.native;
|
||||||
image = import ./docker.nix {
|
image = import ./docker.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
tag = version;
|
tag = pkgs.nix.version;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.runCommand "docker-image-tarball-${version}"
|
pkgs.runCommand "docker-image-tarball-${pkgs.nix.version}"
|
||||||
{ meta.description = "Docker image with Lix for ${system}"; }
|
{ meta.description = "Docker image with Lix for ${system}"; }
|
||||||
''
|
''
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import frontmatter
|
import frontmatter
|
||||||
import sys
|
|
||||||
import pathlib
|
import pathlib
|
||||||
import textwrap
|
import textwrap
|
||||||
from typing import Any, Tuple
|
from typing import Any, Tuple
|
||||||
|
@ -27,6 +26,7 @@ CATEGORIES = [
|
||||||
'Improvements',
|
'Improvements',
|
||||||
'Fixes',
|
'Fixes',
|
||||||
'Packaging',
|
'Packaging',
|
||||||
|
'Development',
|
||||||
'Miscellany',
|
'Miscellany',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
# in the build directory.
|
# in the build directory.
|
||||||
|
|
||||||
project('lix', 'cpp',
|
project('lix', 'cpp',
|
||||||
version : run_command('bash', '-c', 'echo -n $(cat ./.version)$VERSION_SUFFIX', check : true).stdout().strip(),
|
version : run_command('bash', '-c', 'echo -n $(jq -r .version < ./version.json)$VERSION_SUFFIX', check : true).stdout().strip(),
|
||||||
default_options : [
|
default_options : [
|
||||||
'cpp_std=c++2a',
|
'cpp_std=c++2a',
|
||||||
# TODO(Qyriad): increase the warning level
|
# TODO(Qyriad): increase the warning level
|
||||||
|
|
|
@ -63,7 +63,7 @@ pre-commit-run {
|
||||||
files = ''^doc/manual/(change-authors\.yml|rl-next(-dev)?)'';
|
files = ''^doc/manual/(change-authors\.yml|rl-next(-dev)?)'';
|
||||||
pass_filenames = false;
|
pass_filenames = false;
|
||||||
entry = ''
|
entry = ''
|
||||||
${lib.getExe pkgs.build-release-notes} --change-authors doc/manual/change-authors.yml doc/manual/rl-next doc/manual/rl-next-dev
|
${lib.getExe pkgs.build-release-notes} --change-authors doc/manual/change-authors.yml doc/manual/rl-next
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
change-authors-sorted = {
|
change-authors-sorted = {
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
cacert,
|
cacert,
|
||||||
nix,
|
nix,
|
||||||
system,
|
system,
|
||||||
version,
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
installerClosureInfo = buildPackages.closureInfo {
|
installerClosureInfo = buildPackages.closureInfo {
|
||||||
|
@ -15,10 +14,10 @@ let
|
||||||
|
|
||||||
meta.description = "Distribution-independent Lix bootstrap binaries for ${system}";
|
meta.description = "Distribution-independent Lix bootstrap binaries for ${system}";
|
||||||
in
|
in
|
||||||
buildPackages.runCommand "lix-binary-tarball-${version}" { inherit meta; } ''
|
buildPackages.runCommand "lix-binary-tarball-${nix.version}" { inherit meta; } ''
|
||||||
cp ${installerClosureInfo}/registration $TMPDIR/reginfo
|
cp ${installerClosureInfo}/registration $TMPDIR/reginfo
|
||||||
|
|
||||||
dir=lix-${version}-${system}
|
dir=lix-${nix.version}-${system}
|
||||||
fn=$out/$dir.tar.xz
|
fn=$out/$dir.tar.xz
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo "file binary-dist $fn" >> $out/nix-support/hydra-build-products
|
echo "file binary-dist $fn" >> $out/nix-support/hydra-build-products
|
||||||
|
|
|
@ -88,7 +88,8 @@ let
|
||||||
inherit (lib) fileset;
|
inherit (lib) fileset;
|
||||||
inherit (stdenv) hostPlatform buildPlatform;
|
inherit (stdenv) hostPlatform buildPlatform;
|
||||||
|
|
||||||
version = lib.fileContents ./.version + versionSuffix;
|
versionJson = builtins.fromJSON (builtins.readFile ./version.json);
|
||||||
|
version = versionJson.version + versionSuffix;
|
||||||
|
|
||||||
aws-sdk-cpp-nix = aws-sdk-cpp.override {
|
aws-sdk-cpp-nix = aws-sdk-cpp.override {
|
||||||
apis = [
|
apis = [
|
||||||
|
@ -138,7 +139,7 @@ let
|
||||||
# that would interfere with repo semantics.
|
# that would interfere with repo semantics.
|
||||||
baseFiles = fileset.fileFilter (f: f.name != ".gitignore") ./.;
|
baseFiles = fileset.fileFilter (f: f.name != ".gitignore") ./.;
|
||||||
|
|
||||||
configureFiles = fileset.unions [ ./.version ];
|
configureFiles = fileset.unions [ ./version.json ];
|
||||||
|
|
||||||
topLevelBuildFiles = fileset.unions ([
|
topLevelBuildFiles = fileset.unions ([
|
||||||
./meson.build
|
./meson.build
|
||||||
|
|
|
@ -23,7 +23,7 @@ perl.pkgs.toPerlModule (
|
||||||
src = fileset.toSource {
|
src = fileset.toSource {
|
||||||
root = ../.;
|
root = ../.;
|
||||||
fileset = fileset.unions ([
|
fileset = fileset.unions ([
|
||||||
../.version
|
../version.json
|
||||||
./lib
|
./lib
|
||||||
./meson.build
|
./meson.build
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
project('lix-perl', 'cpp',
|
project('lix-perl', 'cpp',
|
||||||
version : run_command('bash', '-c', 'echo -n $(cat ../.version)$VERSION_SUFFIX', check : true).stdout().strip(),
|
version : run_command('bash', '-c', 'echo -n $(jq -r .version < ../version.json)$VERSION_SUFFIX', check : true).stdout().strip(),
|
||||||
default_options : [
|
default_options : [
|
||||||
'cpp_std=c++2a',
|
'cpp_std=c++2a',
|
||||||
# TODO(Qyriad): increase the warning level
|
# TODO(Qyriad): increase the warning level
|
||||||
|
|
4
version.json
Normal file
4
version.json
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"version": "2.90.0",
|
||||||
|
"release_name": "Vanilla Ice Cream"
|
||||||
|
}
|
Loading…
Reference in a new issue