Merge master into staging-next
This commit is contained in:
commit
66a5125b30
5
.github/CODEOWNERS
vendored
5
.github/CODEOWNERS
vendored
@ -202,3 +202,8 @@
|
||||
|
||||
# Blockchains
|
||||
/pkgs/applications/blockchains @mmahut
|
||||
|
||||
# Go
|
||||
/pkgs/development/compilers/go @kalbasit @Mic92 @zowoq
|
||||
/pkgs/development/go-modules @kalbasit @Mic92 @zowoq
|
||||
/pkgs/development/go-packages @kalbasit @Mic92 @zowoq
|
||||
|
@ -40,7 +40,9 @@ pet = buildGoModule rec {
|
||||
|
||||
subPackages = [ "." ]; <co xml:id='ex-buildGoModule-2' />
|
||||
|
||||
runVend = true; <co xml:id='ex-buildGoModule-3' />
|
||||
deleteVendor = true; <co xml:id='ex-buildGoModule-3' />
|
||||
|
||||
runVend = true; <co xml:id='ex-buildGoModule-4' />
|
||||
|
||||
meta = with lib; {
|
||||
description = "Simple command-line snippet manager, written in Go";
|
||||
@ -67,6 +69,11 @@ pet = buildGoModule rec {
|
||||
</para>
|
||||
</callout>
|
||||
<callout arearefs='ex-buildGoModule-3'>
|
||||
<para>
|
||||
<varname>deleteVendor</varname> removes the pre-existing vendor directory and fetches the dependencies. This should only be used if the dependencies included in the vendor folder are broken or incomplete.
|
||||
</para>
|
||||
</callout>
|
||||
<callout arearefs='ex-buildGoModule-4'>
|
||||
<para>
|
||||
<varname>runVend</varname> runs the vend command to generate the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build.
|
||||
</para>
|
||||
|
@ -114,6 +114,17 @@ systemd.services.mysql.serviceConfig.ProtectHome = lib.mkForce "read-only";
|
||||
systemd.services.mysql.serviceConfig.ReadWritePaths = [ "/var/data" ];
|
||||
</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
The MySQL service no longer runs its <literal>systemd</literal> service startup script as <literal>root</literal> anymore. A dedicated non <literal>root</literal>
|
||||
super user account is required for operation. This means users with an existing MySQL or MariaDB database server are required to run the following SQL statements
|
||||
as a super admin user before upgrading:
|
||||
<programlisting>
|
||||
CREATE USER IF NOT EXISTS 'mysql'@'localhost' identified with unix_socket;
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
||||
</programlisting>
|
||||
If you use MySQL instead of MariaDB please replace <literal>unix_socket</literal> with <literal>auth_socket</literal>. If you have changed the value of <xref linkend="opt-services.mysql.user"/>
|
||||
from the default of <literal>mysql</literal> to a different user please change <literal>'mysql'@'localhost'</literal> to the corresponding user instead.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
|
@ -6,12 +6,10 @@ let
|
||||
|
||||
cfg = config.services.mysql;
|
||||
|
||||
mysql = cfg.package;
|
||||
|
||||
isMariaDB = lib.getName mysql == lib.getName pkgs.mariadb;
|
||||
isMariaDB = lib.getName cfg.package == lib.getName pkgs.mariadb;
|
||||
|
||||
mysqldOptions =
|
||||
"--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql}";
|
||||
"--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${cfg.package}";
|
||||
|
||||
settingsFile = pkgs.writeText "my.cnf" (
|
||||
generators.toINI { listsAsDuplicateKeys = true; } cfg.settings +
|
||||
@ -22,7 +20,7 @@ in
|
||||
|
||||
{
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "mysql" "pidDir" ] "Don't wait for pidfiles, describe dependencies through systemd")
|
||||
(mkRemovedOptionModule [ "services" "mysql" "pidDir" ] "Don't wait for pidfiles, describe dependencies through systemd.")
|
||||
(mkRemovedOptionModule [ "services" "mysql" "rootPassword" ] "Use socket authentication or set the password outside of the nix store.")
|
||||
];
|
||||
|
||||
@ -46,25 +44,31 @@ in
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = literalExample "0.0.0.0";
|
||||
description = "Address to bind to. The default is to bind to all addresses";
|
||||
description = "Address to bind to. The default is to bind to all addresses.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 3306;
|
||||
description = "Port of MySQL";
|
||||
description = "Port of MySQL.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "mysql";
|
||||
description = "User account under which MySQL runs";
|
||||
description = "User account under which MySQL runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "mysql";
|
||||
description = "Group under which MySQL runs.";
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
example = "/var/lib/mysql";
|
||||
description = "Location where MySQL stores its table files";
|
||||
description = "Location where MySQL stores its table files.";
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
@ -171,7 +175,7 @@ in
|
||||
initialScript = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "A file containing SQL statements to be executed on the first startup. Can be used for granting certain permissions on the database";
|
||||
description = "A file containing SQL statements to be executed on the first startup. Can be used for granting certain permissions on the database.";
|
||||
};
|
||||
|
||||
ensureDatabases = mkOption {
|
||||
@ -259,33 +263,33 @@ in
|
||||
serverId = mkOption {
|
||||
type = types.int;
|
||||
default = 1;
|
||||
description = "Id of the MySQL server instance. This number must be unique for each instance";
|
||||
description = "Id of the MySQL server instance. This number must be unique for each instance.";
|
||||
};
|
||||
|
||||
masterHost = mkOption {
|
||||
type = types.str;
|
||||
description = "Hostname of the MySQL master server";
|
||||
description = "Hostname of the MySQL master server.";
|
||||
};
|
||||
|
||||
slaveHost = mkOption {
|
||||
type = types.str;
|
||||
description = "Hostname of the MySQL slave server";
|
||||
description = "Hostname of the MySQL slave server.";
|
||||
};
|
||||
|
||||
masterUser = mkOption {
|
||||
type = types.str;
|
||||
description = "Username of the MySQL replication user";
|
||||
description = "Username of the MySQL replication user.";
|
||||
};
|
||||
|
||||
masterPassword = mkOption {
|
||||
type = types.str;
|
||||
description = "Password of the MySQL replication user";
|
||||
description = "Password of the MySQL replication user.";
|
||||
};
|
||||
|
||||
masterPort = mkOption {
|
||||
type = types.int;
|
||||
default = 3306;
|
||||
description = "Port number on which the MySQL master server runs";
|
||||
description = "Port number on which the MySQL master server runs.";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -317,29 +321,33 @@ in
|
||||
binlog-ignore-db = [ "information_schema" "performance_schema" "mysql" ];
|
||||
})
|
||||
(mkIf (!isMariaDB) {
|
||||
plugin-load-add = optional (cfg.ensureUsers != []) "auth_socket.so";
|
||||
plugin-load-add = "auth_socket.so";
|
||||
})
|
||||
];
|
||||
|
||||
users.users.mysql = {
|
||||
description = "MySQL server user";
|
||||
group = "mysql";
|
||||
uid = config.ids.uids.mysql;
|
||||
users.users = optionalAttrs (cfg.user == "mysql") {
|
||||
mysql = {
|
||||
description = "MySQL server user";
|
||||
group = cfg.group;
|
||||
uid = config.ids.uids.mysql;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups.mysql.gid = config.ids.gids.mysql;
|
||||
users.groups = optionalAttrs (cfg.group == "mysql") {
|
||||
mysql.gid = config.ids.gids.mysql;
|
||||
};
|
||||
|
||||
environment.systemPackages = [mysql];
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
environment.etc."my.cnf".source = cfg.configFile;
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.dataDir}' 0700 ${cfg.user} mysql - -"
|
||||
"z '${cfg.dataDir}' 0700 ${cfg.user} mysql - -"
|
||||
"d '${cfg.dataDir}' 0700 '${cfg.user}' '${cfg.group}' - -"
|
||||
"z '${cfg.dataDir}' 0700 '${cfg.user}' '${cfg.group}' - -"
|
||||
];
|
||||
|
||||
systemd.services.mysql = let
|
||||
hasNotify = (cfg.package == pkgs.mariadb);
|
||||
hasNotify = isMariaDB;
|
||||
in {
|
||||
description = "MySQL Server";
|
||||
|
||||
@ -357,125 +365,127 @@ in
|
||||
|
||||
preStart = if isMariaDB then ''
|
||||
if ! test -e ${cfg.dataDir}/mysql; then
|
||||
${mysql}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${mysqldOptions}
|
||||
${cfg.package}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${mysqldOptions}
|
||||
touch ${cfg.dataDir}/mysql_init
|
||||
fi
|
||||
'' else ''
|
||||
if ! test -e ${cfg.dataDir}/mysql; then
|
||||
${mysql}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} --initialize-insecure
|
||||
${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} --initialize-insecure
|
||||
touch ${cfg.dataDir}/mysql_init
|
||||
fi
|
||||
'';
|
||||
|
||||
postStart = let
|
||||
# The super user account to use on *first* run of MySQL server
|
||||
superUser = if isMariaDB then cfg.user else "root";
|
||||
in ''
|
||||
${optionalString (!hasNotify) ''
|
||||
# Wait until the MySQL server is available for use
|
||||
count=0
|
||||
while [ ! -e /run/mysqld/mysqld.sock ]
|
||||
do
|
||||
if [ $count -eq 30 ]
|
||||
then
|
||||
echo "Tried 30 times, giving up..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "MySQL daemon not yet started. Waiting for 1 second..."
|
||||
count=$((count++))
|
||||
sleep 1
|
||||
done
|
||||
''}
|
||||
|
||||
if [ -f ${cfg.dataDir}/mysql_init ]
|
||||
then
|
||||
# While MariaDB comes with a 'mysql' super user account since 10.4.x, MySQL does not
|
||||
# Since we don't want to run this service as 'root' we need to ensure the account exists on first run
|
||||
( echo "CREATE USER IF NOT EXISTS '${cfg.user}'@'localhost' IDENTIFIED WITH ${if isMariaDB then "unix_socket" else "auth_socket"};"
|
||||
echo "GRANT ALL PRIVILEGES ON *.* TO '${cfg.user}'@'localhost' WITH GRANT OPTION;"
|
||||
) | ${cfg.package}/bin/mysql -u ${superUser} -N
|
||||
|
||||
${concatMapStrings (database: ''
|
||||
# Create initial databases
|
||||
if ! test -e "${cfg.dataDir}/${database.name}"; then
|
||||
echo "Creating initial database: ${database.name}"
|
||||
( echo 'create database `${database.name}`;'
|
||||
|
||||
${optionalString (database.schema != null) ''
|
||||
echo 'use `${database.name}`;'
|
||||
|
||||
# TODO: this silently falls through if database.schema does not exist,
|
||||
# we should catch this somehow and exit, but can't do it here because we're in a subshell.
|
||||
if [ -f "${database.schema}" ]
|
||||
then
|
||||
cat ${database.schema}
|
||||
elif [ -d "${database.schema}" ]
|
||||
then
|
||||
cat ${database.schema}/mysql-databases/*.sql
|
||||
fi
|
||||
''}
|
||||
) | ${cfg.package}/bin/mysql -u ${superUser} -N
|
||||
fi
|
||||
'') cfg.initialDatabases}
|
||||
|
||||
${optionalString (cfg.replication.role == "master")
|
||||
''
|
||||
# Set up the replication master
|
||||
|
||||
( echo "use mysql;"
|
||||
echo "CREATE USER '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}' IDENTIFIED WITH mysql_native_password;"
|
||||
echo "SET PASSWORD FOR '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}' = PASSWORD('${cfg.replication.masterPassword}');"
|
||||
echo "GRANT REPLICATION SLAVE ON *.* TO '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}';"
|
||||
) | ${cfg.package}/bin/mysql -u ${superUser} -N
|
||||
''}
|
||||
|
||||
${optionalString (cfg.replication.role == "slave")
|
||||
''
|
||||
# Set up the replication slave
|
||||
|
||||
( echo "stop slave;"
|
||||
echo "change master to master_host='${cfg.replication.masterHost}', master_user='${cfg.replication.masterUser}', master_password='${cfg.replication.masterPassword}';"
|
||||
echo "start slave;"
|
||||
) | ${cfg.package}/bin/mysql -u ${superUser} -N
|
||||
''}
|
||||
|
||||
${optionalString (cfg.initialScript != null)
|
||||
''
|
||||
# Execute initial script
|
||||
# using toString to avoid copying the file to nix store if given as path instead of string,
|
||||
# as it might contain credentials
|
||||
cat ${toString cfg.initialScript} | ${cfg.package}/bin/mysql -u ${superUser} -N
|
||||
''}
|
||||
|
||||
rm ${cfg.dataDir}/mysql_init
|
||||
fi
|
||||
|
||||
${optionalString (cfg.ensureDatabases != []) ''
|
||||
(
|
||||
${concatMapStrings (database: ''
|
||||
echo "CREATE DATABASE IF NOT EXISTS \`${database}\`;"
|
||||
'') cfg.ensureDatabases}
|
||||
) | ${cfg.package}/bin/mysql -N
|
||||
''}
|
||||
|
||||
${concatMapStrings (user:
|
||||
''
|
||||
( echo "CREATE USER IF NOT EXISTS '${user.name}'@'localhost' IDENTIFIED WITH ${if isMariaDB then "unix_socket" else "auth_socket"};"
|
||||
${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
|
||||
echo "GRANT ${permission} ON ${database} TO '${user.name}'@'localhost';"
|
||||
'') user.ensurePermissions)}
|
||||
) | ${cfg.package}/bin/mysql -N
|
||||
'') cfg.ensureUsers}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Type = if hasNotify then "notify" else "simple";
|
||||
Restart = "on-abort";
|
||||
RestartSec = "5s";
|
||||
# The last two environment variables are used for starting Galera clusters
|
||||
ExecStart = "${mysql}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION";
|
||||
ExecStartPost =
|
||||
let
|
||||
setupScript = pkgs.writeScript "mysql-setup" ''
|
||||
#!${pkgs.runtimeShell} -e
|
||||
|
||||
${optionalString (!hasNotify) ''
|
||||
# Wait until the MySQL server is available for use
|
||||
count=0
|
||||
while [ ! -e /run/mysqld/mysqld.sock ]
|
||||
do
|
||||
if [ $count -eq 30 ]
|
||||
then
|
||||
echo "Tried 30 times, giving up..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "MySQL daemon not yet started. Waiting for 1 second..."
|
||||
count=$((count++))
|
||||
sleep 1
|
||||
done
|
||||
''}
|
||||
|
||||
if [ -f ${cfg.dataDir}/mysql_init ]
|
||||
then
|
||||
${concatMapStrings (database: ''
|
||||
# Create initial databases
|
||||
if ! test -e "${cfg.dataDir}/${database.name}"; then
|
||||
echo "Creating initial database: ${database.name}"
|
||||
( echo 'create database `${database.name}`;'
|
||||
|
||||
${optionalString (database.schema != null) ''
|
||||
echo 'use `${database.name}`;'
|
||||
|
||||
# TODO: this silently falls through if database.schema does not exist,
|
||||
# we should catch this somehow and exit, but can't do it here because we're in a subshell.
|
||||
if [ -f "${database.schema}" ]
|
||||
then
|
||||
cat ${database.schema}
|
||||
elif [ -d "${database.schema}" ]
|
||||
then
|
||||
cat ${database.schema}/mysql-databases/*.sql
|
||||
fi
|
||||
''}
|
||||
) | ${mysql}/bin/mysql -u root -N
|
||||
fi
|
||||
'') cfg.initialDatabases}
|
||||
|
||||
${optionalString (cfg.replication.role == "master")
|
||||
''
|
||||
# Set up the replication master
|
||||
|
||||
( echo "use mysql;"
|
||||
echo "CREATE USER '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}' IDENTIFIED WITH mysql_native_password;"
|
||||
echo "SET PASSWORD FOR '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}' = PASSWORD('${cfg.replication.masterPassword}');"
|
||||
echo "GRANT REPLICATION SLAVE ON *.* TO '${cfg.replication.masterUser}'@'${cfg.replication.slaveHost}';"
|
||||
) | ${mysql}/bin/mysql -u root -N
|
||||
''}
|
||||
|
||||
${optionalString (cfg.replication.role == "slave")
|
||||
''
|
||||
# Set up the replication slave
|
||||
|
||||
( echo "stop slave;"
|
||||
echo "change master to master_host='${cfg.replication.masterHost}', master_user='${cfg.replication.masterUser}', master_password='${cfg.replication.masterPassword}';"
|
||||
echo "start slave;"
|
||||
) | ${mysql}/bin/mysql -u root -N
|
||||
''}
|
||||
|
||||
${optionalString (cfg.initialScript != null)
|
||||
''
|
||||
# Execute initial script
|
||||
# using toString to avoid copying the file to nix store if given as path instead of string,
|
||||
# as it might contain credentials
|
||||
cat ${toString cfg.initialScript} | ${mysql}/bin/mysql -u root -N
|
||||
''}
|
||||
|
||||
rm ${cfg.dataDir}/mysql_init
|
||||
fi
|
||||
|
||||
${optionalString (cfg.ensureDatabases != []) ''
|
||||
(
|
||||
${concatMapStrings (database: ''
|
||||
echo "CREATE DATABASE IF NOT EXISTS \`${database}\`;"
|
||||
'') cfg.ensureDatabases}
|
||||
) | ${mysql}/bin/mysql -u root -N
|
||||
''}
|
||||
|
||||
${concatMapStrings (user:
|
||||
''
|
||||
( echo "CREATE USER IF NOT EXISTS '${user.name}'@'localhost' IDENTIFIED WITH ${if isMariaDB then "unix_socket" else "auth_socket"};"
|
||||
${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
|
||||
echo "GRANT ${permission} ON ${database} TO '${user.name}'@'localhost';"
|
||||
'') user.ensurePermissions)}
|
||||
) | ${mysql}/bin/mysql -u root -N
|
||||
'') cfg.ensureUsers}
|
||||
'';
|
||||
in
|
||||
# ensureDatbases & ensureUsers depends on this script being run as root
|
||||
# when the user has secured their mysql install
|
||||
"+${setupScript}";
|
||||
ExecStart = "${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION";
|
||||
# User and group
|
||||
User = cfg.user;
|
||||
Group = "mysql";
|
||||
Group = cfg.group;
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "mysqld";
|
||||
RuntimeDirectoryMode = "0755";
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gitolite";
|
||||
version = "3.6.11";
|
||||
version = "3.6.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sitaramc";
|
||||
repo = "gitolite";
|
||||
rev = "v${version}";
|
||||
sha256 = "1rkj7gknwjlc5ij9w39zf5mr647bm45la57yjczydmvrb8c56yrh";
|
||||
sha256 = "05xw1pmagvkrbzga5pgl3xk9qyc6b5x73f842454f3w9ijspa8zy";
|
||||
};
|
||||
|
||||
buildInputs = [ nettools perl ];
|
||||
|
@ -19,36 +19,55 @@ version=$(cd $kernel/lib/modules && ls -d *)
|
||||
echo "kernel version is $version"
|
||||
|
||||
# Determine the dependencies of each root module.
|
||||
closure=
|
||||
mkdir -p $out/lib/modules/"$version"
|
||||
touch closure
|
||||
for module in $rootModules; do
|
||||
echo "root module: $module"
|
||||
deps=$(modprobe --config no-config -d $kernel --set-version "$version" --show-depends "$module" \
|
||||
| sed 's/^insmod //') \
|
||||
|| if test -z "$allowMissing"; then exit 1; fi
|
||||
if [[ "$deps" != builtin* ]]; then
|
||||
closure="$closure $deps"
|
||||
modprobe --config no-config -d $kernel --set-version "$version" --show-depends "$module" \
|
||||
| while read cmd module args; do
|
||||
case "$cmd" in
|
||||
builtin)
|
||||
touch found
|
||||
echo "$module" >>closure
|
||||
echo " builtin dependency: $module";;
|
||||
insmod)
|
||||
touch found
|
||||
if ! test -e "$module"; then
|
||||
echo " dependency not found: $module"
|
||||
exit 1
|
||||
fi
|
||||
target=$(echo "$module" | sed "s^$NIX_STORE.*/lib/modules/^$out/lib/modules/^")
|
||||
if test -e "$target"; then
|
||||
echo " dependency already copied: $module"
|
||||
continue
|
||||
fi
|
||||
echo "$module" >>closure
|
||||
echo " copying dependency: $module"
|
||||
mkdir -p $(dirname $target)
|
||||
cp "$module" "$target"
|
||||
# If the kernel is compiled with coverage instrumentation, it
|
||||
# contains the paths of the *.gcda coverage data output files
|
||||
# (which it doesn't actually use...). Get rid of them to prevent
|
||||
# the whole kernel from being included in the initrd.
|
||||
nuke-refs "$target"
|
||||
echo "$target" >> $out/insmod-list;;
|
||||
*)
|
||||
echo " unexpected modprobe output: $cmd $module"
|
||||
exit 1;;
|
||||
esac
|
||||
done || test -n "$allowMissing"
|
||||
if ! test -e found; then
|
||||
echo " not found"
|
||||
if test -z "$allowMissing"; then
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
rm found
|
||||
fi
|
||||
done
|
||||
|
||||
echo "closure:"
|
||||
mkdir -p $out/lib/modules/"$version"
|
||||
for module in $closure; do
|
||||
target=$(echo $module | sed "s^$NIX_STORE.*/lib/modules/^$out/lib/modules/^")
|
||||
if test -e "$target"; then continue; fi
|
||||
if test \! -e "$module"; then continue; fi # XXX: to avoid error with "cp builtin builtin"
|
||||
mkdir -p $(dirname $target)
|
||||
echo $module
|
||||
cp $module $target
|
||||
# If the kernel is compiled with coverage instrumentation, it
|
||||
# contains the paths of the *.gcda coverage data output files
|
||||
# (which it doesn't actually use...). Get rid of them to prevent
|
||||
# the whole kernel from being included in the initrd.
|
||||
nuke-refs $target
|
||||
echo $target >> $out/insmod-list
|
||||
done
|
||||
|
||||
mkdir -p $out/lib/firmware
|
||||
for module in $closure; do
|
||||
for module in $(cat closure); do
|
||||
for i in $(modinfo -F firmware $module); do
|
||||
mkdir -p "$out/lib/firmware/$(dirname "$i")"
|
||||
echo "firmware for $module: $i"
|
||||
|
@ -85,11 +85,16 @@ let
|
||||
runHook preBuild
|
||||
|
||||
if [ ${deleteFlag} == "true" ]; then
|
||||
rm -rf vendor
|
||||
if [ ! -d vendor ]; then
|
||||
echo "vendor folder does not exist, 'deleteVendor' is not needed"
|
||||
exit 10
|
||||
else
|
||||
rm -rf vendor
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -e vendor ]; then
|
||||
echo "vendor folder exists, please set 'vendorSha256=null;' or 'deleteVendor=true;' in your expression"
|
||||
if [ -d vendor ]; then
|
||||
echo "vendor folder exists, please set 'vendorSha256 = null;' in your expression"
|
||||
exit 10
|
||||
fi
|
||||
|
||||
|
@ -1,20 +1,18 @@
|
||||
{ lib, buildDunePackage, fetchFromGitHub, cppo }:
|
||||
{ lib, buildDunePackage, fetchurl, cppo }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "merlin-extend";
|
||||
version = "0.4";
|
||||
version = "0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "let-def";
|
||||
repo = pname;
|
||||
sha256 = "1dxiqmm7ry24gvw6p9n4mrz37mnq4s6m8blrccsv3rb8yq82acx9";
|
||||
rev = "v${version}";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/let-def/merlin-extend/releases/download/v${version}/merlin-extend-v${version}.tbz";
|
||||
sha256 = "0hvc4mz92x3rl2dxwrhvhzwl4gilnyvvwcqgr45vmdpyjyp3dwn2";
|
||||
};
|
||||
|
||||
buildInputs = [ cppo ];
|
||||
|
||||
meta = with lib; {
|
||||
inherit (src.meta) homepage;
|
||||
homepage = "https://github.com/let-def/merlin-extend";
|
||||
description = "SDK to extend Merlin";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.volth ];
|
||||
|
@ -6,11 +6,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ocaml-${pname}-${version}";
|
||||
version = "10.0.0";
|
||||
version = "13.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${webpage}/releases/${pname}-${version}.tbz";
|
||||
sha256 = "0cdyg6vaic4n58w80qriwvaq1c40ng3fh74ilxrwajbq163k055q";
|
||||
sha256 = "1fg77hg4ibidkv1x8hhzl8z3rzmyymn8m4i35jrdibb8adigi8v2";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib ocamlbuild topkg ];
|
||||
|
@ -11,11 +11,11 @@ let
|
||||
ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
|
||||
in buildPythonPackage rec {
|
||||
pname = "reportlab";
|
||||
version = "3.5.46";
|
||||
version = "3.5.47";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "56d71b78e7e4bb31a93e1dff13c22d19b7fb3890b021a39b6c3661b095bd7de8";
|
||||
sha256 = "0gw0902yjszwxk0air69in7nk4h2q36r96ga3r4bz0p0cnmagcj5";
|
||||
};
|
||||
|
||||
checkInputs = [ glibcLocales ];
|
||||
@ -30,6 +30,7 @@ in buildPythonPackage rec {
|
||||
|
||||
# Remove the tests that require Vera fonts installed
|
||||
rm tests/test_graphics_render.py
|
||||
rm tests/test_graphics_charts.py
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "operator-sdk";
|
||||
version = "0.19.2";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "operator-framework";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1lmnxw6l6lknvbwmw5xh238i0j452sib37fw8ybxp64zwvj2sac0";
|
||||
sha256 = "1s59rgr0ssics1487mvx0h37zs7dfjimsvkbs2d8wqc3r8asw0g4";
|
||||
};
|
||||
|
||||
vendorSha256 = "1xk3zw8w2fynww0z4d66nlclhjf52bk4cv3bh51yyd1mr808lip5";
|
||||
vendorSha256 = "0xvjsiaa3qvlix1fm07z080vh79wg0xyx2s6jqnqn7fb3nh65kn7";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ intel-gmmlib intel-graphics-compiler libva ]} \
|
||||
patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ intel-gmmlib intel-graphics-compiler libva stdenv.cc.cc.lib ]} \
|
||||
$out/lib/intel-opencl/libigdrcl.so
|
||||
'';
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "chezmoi";
|
||||
version = "1.8.3";
|
||||
version = "1.8.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "twpayne";
|
||||
repo = "chezmoi";
|
||||
rev = "v${version}";
|
||||
sha256 = "01px0nj2llas835g1hf8lvhigip4jm4innjacz18c7nf1ddwn7ss";
|
||||
sha256 = "0m8ik01y1lag3mgg3g4rxvzndh86b972hv2702dqs28l5zy5h3mv";
|
||||
};
|
||||
|
||||
vendorSha256 = "1gzg73lrx73rhb9yj6yakv95m8rz1rhjgqjl1a78c8nvaii27a9x";
|
||||
vendorSha256 = "18s60k7y64z12lx9lgj13fl1jh0aiqinwxrsz751d2iqhgdi2jja";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "tendermint";
|
||||
version = "0.33.6";
|
||||
version = "0.33.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tendermint";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "17zy18s9373f3fp6bqjgj02irzasfv3b6axi84kw7da17mq68vnv";
|
||||
sha256 = "1dcr60gmbkb6833n49mjmlr082ahlv7alaqycl8g3d4f93kdm5c3";
|
||||
};
|
||||
|
||||
vendorSha256 = "0i0n89lal99fqnzva51kp9f7wzqsfmncpshwxhq26kvykp7ji7sw";
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "vale";
|
||||
version = "2.3.0";
|
||||
version = "2.3.2";
|
||||
|
||||
subPackages = [ "." ];
|
||||
outputs = [ "out" "data" ];
|
||||
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
owner = "errata-ai";
|
||||
repo = "vale";
|
||||
rev = "v${version}";
|
||||
sha256 = "0jxlh8dlhhqw1mrhp42nywnp6wwpk7nw373s89lp3khhqwb1n08f";
|
||||
sha256 = "0accs8ygg2h5hk8n4d5hs1fpxp9mlbzic6f4dwrygi463z7c3icc";
|
||||
};
|
||||
|
||||
vendorSha256 = null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user