mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-28 00:24:18 +00:00
571c71e6f7
We are migrating packages that meet below requirements: 1. using `callPackage` 2. called path is a directory 3. overriding set is empty (`{ }`) 4. not containing path expressions other than relative path (to makenixpkgs-vet happy) 5. not referenced by nix files outside of the directory, other than`pkgs/top-level/all-packages.nix` 6. not referencing nix files outside of the directory 7. not referencing `default.nix` (since it's changed to `package.nix`) 8. `outPath` doesn't change after migration The tool is here: https://github.com/Aleksanaa/by-name-migrate.
51 lines
1.7 KiB
Awk
51 lines
1.7 KiB
Awk
BEGIN {
|
|
|
|
# ppd file keys are separated from their values by a colon,
|
|
# but "options" may reside between the key name and the colon;
|
|
# options are separated from the key by spaces
|
|
# (we also permit tabs to be on the safe side)
|
|
FS = "[: \t]";
|
|
|
|
# escape regex characters in the old and new command strings
|
|
gsub(/[]\\.^$(){}|*+?[]/, "\\\\&", old);
|
|
gsub(/\\/, "\\\\&", new);
|
|
# ...and surround old command with some regex
|
|
# that singles out shell command invocations
|
|
# to avoid replacing other strings that might contain the
|
|
# command name by accident (like "perl" in "perl-script")
|
|
new = "\\1" new "\\2";
|
|
old = "(^|[;&| \\t\"`(])" old "($|[);&| \\t\"`<>])";
|
|
# note that a similar regex is build in the shell script to
|
|
# filter out unaffected files before this awk script is called;
|
|
# if the regex here is changed, the shell script should also be checked
|
|
|
|
# list of PPD keys that contain executable names or scripts, see
|
|
# https://refspecs.linuxfoundation.org/LSB_4.0.0/LSB-Printing/LSB-Printing/ppdext.html
|
|
# https://www.cups.org/doc/spec-ppd.html
|
|
cmds["*APAutoSetupTool"] = "";
|
|
cmds["*APPrinterLowInkTool"] = "";
|
|
cmds["*FoomaticRIPCommandLine"] = "";
|
|
cmds["*FoomaticRIPPostPipe"] = "";
|
|
cmds["*cupsFilter"] = "";
|
|
cmds["*cupsFilter2"] = "";
|
|
cmds["*cupsPreFilter"] = "";
|
|
|
|
}
|
|
|
|
# since comments always start with "*%",
|
|
# this mechanism also properly recognizes (and ignores) them
|
|
|
|
{
|
|
|
|
# if the current line starts a new key,
|
|
# check if it is a command-containing key;
|
|
# also reset the `isCmd` flag if a new file begins
|
|
if ($0 ~ /^\*/ || FNR == 1) { isCmd = ($1 in cmds) }
|
|
|
|
# replace commands if the current keys might contain commands
|
|
if (isCmd) { $0 = gensub(old, new, "g") }
|
|
|
|
print
|
|
|
|
}
|