From 3483ee72d5cb5f3cadbab06a6f13c7c859125f9d Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 10 Jul 2022 15:24:14 +0200 Subject: [PATCH 001/122] add DSL to generate completions --- Library/Homebrew/formula.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 17488e0ed1..89c2252154 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,6 +1625,21 @@ class Formula end private :extract_macho_slice_from + def generate_completions(base_name = name, shells = [:bash, :zsh, :fish], binary = bin/base_name, cmd = "completion", shell_as_flag = false) + completion_script_path_map = { + :bash => bash_completion/base_name, + :zsh => zsh_completion/"_#{base_name}", + :fish => fish_completion/"#{base_name}.fish", + } + + shells.each do |shell| + script_path = completion_script_path_map[shell] + shell_parameter = shell_as_flag ? "--#{shell.to_s}" : shell.to_s + script_path.dirname.mkpath + script_path.write Utils.safe_popen_read(binary, cmd, shell_parameter) + end + end + # an array of all core {Formula} names # @private def self.core_names From 1dcfeb5516a91dd4d9eedf66241d252707711c80 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 10 Jul 2022 15:45:07 +0200 Subject: [PATCH 002/122] fix style --- Library/Homebrew/formula.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 89c2252154..2fcb158d3c 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,16 +1625,20 @@ class Formula end private :extract_macho_slice_from - def generate_completions(base_name = name, shells = [:bash, :zsh, :fish], binary = bin/base_name, cmd = "completion", shell_as_flag = false) + def generate_completions(base_name = name, + shells = [:bash, :zsh, :fish], + binary = bin/base_name, + cmd = "completion", + shell_as_flag: false) completion_script_path_map = { - :bash => bash_completion/base_name, - :zsh => zsh_completion/"_#{base_name}", - :fish => fish_completion/"#{base_name}.fish", + bash: bash_completion/base_name, + zsh: zsh_completion/"_#{base_name}", + fish: fish_completion/"#{base_name}.fish", } shells.each do |shell| script_path = completion_script_path_map[shell] - shell_parameter = shell_as_flag ? "--#{shell.to_s}" : shell.to_s + shell_parameter = shell_as_flag ? "--#{shell}" : shell.to_s script_path.dirname.mkpath script_path.write Utils.safe_popen_read(binary, cmd, shell_parameter) end From 665e68a82fb8b6479633592a07fb68e066b6b05f Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:08:44 +0200 Subject: [PATCH 003/122] switch to named args --- Library/Homebrew/formula.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 2fcb158d3c..2cf1f0684d 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,10 +1625,10 @@ class Formula end private :extract_macho_slice_from - def generate_completions(base_name = name, - shells = [:bash, :zsh, :fish], - binary = bin/base_name, - cmd = "completion", + def generate_completions(base_name: name, + shells: [:bash, :zsh, :fish], + binary: bin/base_name, + cmd: "completion", shell_as_flag: false) completion_script_path_map = { bash: bash_completion/base_name, From e5f2ddf012ba22636ef97a3d19813b6f085cc9ba Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:21:57 +0200 Subject: [PATCH 004/122] add typecheck --- Library/Homebrew/formula.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 2cf1f0684d..5817143e67 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,6 +1625,9 @@ class Formula end private :extract_macho_slice_from + sig { + params(base_name: String, shells: T::Array[Symbol], binary: Pathname, cmd: String, shell_as_flag: T::Boolean).void + } def generate_completions(base_name: name, shells: [:bash, :zsh, :fish], binary: bin/base_name, From ad5a1a81383aeb02b7983fcd554846b4c92b3379 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:35:48 +0200 Subject: [PATCH 005/122] add docs --- Library/Homebrew/formula.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 5817143e67..6353483f21 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,6 +1625,15 @@ class Formula end private :extract_macho_slice_from + # Generate shell completions for a formula for bash, zsh, and fish, using the formula's binary. + # + # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. + # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. + # @param binary [Pathname] the binary to use for generating the completion scripts. Defaults to the binary with the + # name of the formula. + # @param cmd [String] the command to pass to the `binary`. Defaults to 'completion'. + # @param shell_as_flag [Boolean] specify if `shells` should each be passed as flags to the `binary`. + # Defaults to `false`. sig { params(base_name: String, shells: T::Array[Symbol], binary: Pathname, cmd: String, shell_as_flag: T::Boolean).void } From 32b68838f9e5518d5b5dff64f183e942744c63cc Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 13 Jul 2022 14:11:17 +0200 Subject: [PATCH 006/122] switch to more flexible shell_prefix arg --- Library/Homebrew/formula.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 6353483f21..4de200ddeb 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1635,13 +1635,14 @@ class Formula # @param shell_as_flag [Boolean] specify if `shells` should each be passed as flags to the `binary`. # Defaults to `false`. sig { - params(base_name: String, shells: T::Array[Symbol], binary: Pathname, cmd: String, shell_as_flag: T::Boolean).void + params(base_name: String, shells: T::Array[Symbol], binary: Pathname, cmd: String, + shell_prefix: T.nilable(T.any(Symbol, String))).void } def generate_completions(base_name: name, shells: [:bash, :zsh, :fish], binary: bin/base_name, cmd: "completion", - shell_as_flag: false) + shell_prefix: nil) completion_script_path_map = { bash: bash_completion/base_name, zsh: zsh_completion/"_#{base_name}", @@ -1650,7 +1651,14 @@ class Formula shells.each do |shell| script_path = completion_script_path_map[shell] - shell_parameter = shell_as_flag ? "--#{shell}" : shell.to_s + shell_parameter = if shell_prefix.nil? + shell.to_s + elsif shell_prefix == :flag + "--#{shell}" + else + "#{shell_prefix}#{shell}" + end + script_path.dirname.mkpath script_path.write Utils.safe_popen_read(binary, cmd, shell_parameter) end From 0f54f342e6efb9de42230abef7f6e6ab98c74a1b Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 22 Jul 2022 14:39:21 +0100 Subject: [PATCH 007/122] bin/brew: remove HOMEBREW_NO_ENV_FILTERING. It's been deprecated for a long time. Add a disabling message to be nice (that we'll remove in future). --- bin/brew | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/bin/brew b/bin/brew index 30e1fec5f2..18c25341eb 100755 --- a/bin/brew +++ b/bin/brew @@ -18,6 +18,15 @@ then exit 1 fi +# Fail fast with concise message when requesting unfiltered environment. +# This is basically odisabled so can be removed at any major release afterwards +# and definitely if this is still here in 2023. +if [ -n "${HOMEBREW_NO_ENV_FILTERING}" ] +then + echo "Error: HOMEBREW_NO_ENV_FILTERING was deprecated for over a year and has now been removed (because it breaks many things)!" >&2 + exit 1 +fi + quiet_cd() { cd "$@" &>/dev/null || return } @@ -114,32 +123,24 @@ fi HOMEBREW_PATH="${PATH}" export HOMEBREW_PATH -# set from user environment -# shellcheck disable=SC2154 -if [[ -z "${HOMEBREW_NO_ENV_FILTERING}" ]] -then - PATH="/usr/bin:/bin:/usr/sbin:/sbin" +# filter the user environment +PATH="/usr/bin:/bin:/usr/sbin:/sbin" - FILTERED_ENV=() - ENV_VAR_NAMES=( - HOME SHELL PATH TERM TERMINFO TERMINFO_DIRS COLUMNS DISPLAY LOGNAME USER CI SSH_AUTH_SOCK SUDO_ASKPASS - http_proxy https_proxy ftp_proxy no_proxy all_proxy HTTPS_PROXY FTP_PROXY ALL_PROXY - GITHUB_ACTIONS GITHUB_WORKSPACE GITHUB_ACTIONS_HOMEBREW_SELF_HOSTED - GITHUB_REPOSITORY GITHUB_RUN_ID GITHUB_RUN_ATTEMPT GITHUB_SHA GITHUB_HEAD_REF GITHUB_BASE_REF GITHUB_REF - ) - # Filter all but the specific variables. - for VAR in "${ENV_VAR_NAMES[@]}" "${!HOMEBREW_@}" - do - # Skip if variable value is empty. - [[ -z "${!VAR}" ]] && continue +FILTERED_ENV=() +ENV_VAR_NAMES=( + HOME SHELL PATH TERM TERMINFO TERMINFO_DIRS COLUMNS DISPLAY LOGNAME USER CI SSH_AUTH_SOCK SUDO_ASKPASS + http_proxy https_proxy ftp_proxy no_proxy all_proxy HTTPS_PROXY FTP_PROXY ALL_PROXY + GITHUB_ACTIONS GITHUB_WORKSPACE GITHUB_ACTIONS_HOMEBREW_SELF_HOSTED + GITHUB_REPOSITORY GITHUB_RUN_ID GITHUB_RUN_ATTEMPT GITHUB_SHA GITHUB_HEAD_REF GITHUB_BASE_REF GITHUB_REF +) +# Filter all but the specific variables. +for VAR in "${ENV_VAR_NAMES[@]}" "${!HOMEBREW_@}" +do + # Skip if variable value is empty. + [[ -z "${!VAR}" ]] && continue - FILTERED_ENV+=("${VAR}=${!VAR}") - done - unset VAR ENV_VAR_NAMES + FILTERED_ENV+=("${VAR}=${!VAR}") +done +unset VAR ENV_VAR_NAMES - exec /usr/bin/env -i "${FILTERED_ENV[@]}" /bin/bash "${HOMEBREW_LIBRARY}/Homebrew/brew.sh" "$@" -else - echo "Warning: HOMEBREW_NO_ENV_FILTERING is undocumented, deprecated and will be removed in a future Homebrew release (because it breaks many things)!" >&2 - - source "${HOMEBREW_LIBRARY}/Homebrew/brew.sh" -fi +exec /usr/bin/env -i "${FILTERED_ENV[@]}" /bin/bash "${HOMEBREW_LIBRARY}/Homebrew/brew.sh" "$@" From 9528c6a8ac21396be7506ba090a979366e9e7344 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 24 Jul 2022 22:50:14 +0200 Subject: [PATCH 008/122] always set SHELL env variable --- Library/Homebrew/formula.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 4de200ddeb..760600282a 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1660,7 +1660,7 @@ class Formula end script_path.dirname.mkpath - script_path.write Utils.safe_popen_read(binary, cmd, shell_parameter) + script_path.write Utils.safe_popen_read({ "SHELL" => shell }, binary, cmd, shell_parameter) end end From 92bccd2074e7278e3bc71cd2f4c4c92b4b103875 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 24 Jul 2022 22:54:28 +0200 Subject: [PATCH 009/122] apply naming suggestions --- Library/Homebrew/formula.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 760600282a..1cc3052df0 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1638,11 +1638,11 @@ class Formula params(base_name: String, shells: T::Array[Symbol], binary: Pathname, cmd: String, shell_prefix: T.nilable(T.any(Symbol, String))).void } - def generate_completions(base_name: name, - shells: [:bash, :zsh, :fish], - binary: bin/base_name, - cmd: "completion", - shell_prefix: nil) + def generate_completions_from_executable(base_name: name, + shells: [:bash, :zsh, :fish], + executable: bin/base_name, + cmd: "completion", + shell_parameter: nil) completion_script_path_map = { bash: bash_completion/base_name, zsh: zsh_completion/"_#{base_name}", @@ -1651,16 +1651,16 @@ class Formula shells.each do |shell| script_path = completion_script_path_map[shell] - shell_parameter = if shell_prefix.nil? + shell_parameter = if shell_parameter.nil? shell.to_s - elsif shell_prefix == :flag + elsif shell_parameter == :flag "--#{shell}" else - "#{shell_prefix}#{shell}" + "#{shell_parameter}#{shell}" end script_path.dirname.mkpath - script_path.write Utils.safe_popen_read({ "SHELL" => shell }, binary, cmd, shell_parameter) + script_path.write Utils.safe_popen_read({ "SHELL" => shell }, executable, cmd, shell_parameter) end end From 1c059e1da0b80ccff1c81de4610cbf68efdf87a0 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 24 Jul 2022 23:03:28 +0200 Subject: [PATCH 010/122] extend shell_parameter argument --- Library/Homebrew/formula.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 1cc3052df0..876ca764f5 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1642,7 +1642,7 @@ class Formula shells: [:bash, :zsh, :fish], executable: bin/base_name, cmd: "completion", - shell_parameter: nil) + shell_parameter_format: nil) completion_script_path_map = { bash: bash_completion/base_name, zsh: zsh_completion/"_#{base_name}", @@ -1651,12 +1651,16 @@ class Formula shells.each do |shell| script_path = completion_script_path_map[shell] - shell_parameter = if shell_parameter.nil? + shell_parameter = if shell_parameter_format.nil? shell.to_s - elsif shell_parameter == :flag + elsif shell_parameter_format == :flag "--#{shell}" + elsif shell_parameter_format == :arg + "--shell=#{shell}" + elsif shell_parameter_format == :none + nil else - "#{shell_parameter}#{shell}" + "#{shell_parameter_format}#{shell}" end script_path.dirname.mkpath From e1ea9da5072db332084aa12866a06952a1c15851 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 00:00:45 +0100 Subject: [PATCH 011/122] Conceptual draft of dsym support for macos --- Library/Homebrew/extend/os/mac/keg.rb | 17 +++++++++++++++++ Library/Homebrew/formula_installer.rb | 15 +++++++++++++++ Library/Homebrew/keg.rb | 4 ++++ Library/Homebrew/shims/super/cc | 6 ++++++ 4 files changed, 42 insertions(+) diff --git a/Library/Homebrew/extend/os/mac/keg.rb b/Library/Homebrew/extend/os/mac/keg.rb index 67abdc6ab3..cfe0b4f648 100644 --- a/Library/Homebrew/extend/os/mac/keg.rb +++ b/Library/Homebrew/extend/os/mac/keg.rb @@ -62,4 +62,21 @@ class Keg #{result.stderr} EOS end + + def dsymutil + binary_executable_or_library_files.each { |file| dsymutil_binary(file) } + end + + def dsymutil_binary(file) + odebug "Extracting symbols #{file}" + + result = system_command("dsymutil", args: [file]) + return if result.success? + + # If it fails again, error out + onoe <<~EOS + Failed to extract symbols from #{file}: + #{result.stderr} + EOS + end end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 03486bb730..611ec46643 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -39,6 +39,7 @@ class FormulaInstaller attr_predicate :installed_as_dependency?, :installed_on_request? attr_predicate :show_summary_heading?, :show_header? attr_predicate :force_bottle?, :ignore_deps?, :only_deps?, :interactive?, :git?, :force?, :overwrite?, :keep_tmp? + attr_predicate :debug_symbols? attr_predicate :verbose?, :debug?, :quiet? def initialize( @@ -71,6 +72,8 @@ class FormulaInstaller @force = force @overwrite = overwrite @keep_tmp = keep_tmp + # Just for this proof of concept + @debug_symbols = keep_tmp @link_keg = !formula.keg_only? || link_keg @show_header = show_header @ignore_deps = ignore_deps @@ -802,6 +805,8 @@ class FormulaInstaller post_install end + dsymutil(keg) if debug_symbols? + # Updates the cache for a particular formula after doing an install CacheStoreDatabase.use(:linkage) do |db| break unless db.created? @@ -1326,4 +1331,14 @@ class FormulaInstaller #{SPDX.license_expression_to_string formula.license}. EOS end + + sig { params(keg: Keg).void } + def dsymutil(keg) + keg.dsymutil + # TODO + # rescue Keg::DsymError => e + rescue RuntimeError => e + ofail "Failed to extract debugging symbols for #{formula.full_name}" + puts e + end end diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index c0ef58fc89..7c7defe7e0 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -483,6 +483,8 @@ class Keg ObserverPathnameExtension.n end + def dsymutil; end + def remove_oldname_opt_record return unless oldname_opt_record return if oldname_opt_record.resolved_path != path @@ -531,6 +533,8 @@ class Keg def codesign_patched_binary(file); end + def dsymutil_binary(file); end + private def resolve_any_conflicts(dst, dry_run: false, verbose: false, overwrite: false) diff --git a/Library/Homebrew/shims/super/cc b/Library/Homebrew/shims/super/cc index 7d68f9fc5f..aed92991f9 100755 --- a/Library/Homebrew/shims/super/cc +++ b/Library/Homebrew/shims/super/cc @@ -292,6 +292,7 @@ class Cmd args.concat(optflags) unless runtime_cpu_detection? args.concat(archflags) args << "-std=#{@arg0}" if /c[89]9/.match?(@arg0) + args << "-g" if debug_symbols? args end @@ -399,6 +400,11 @@ class Cmd config.include?("w") end + def debug_symbols? + mac? + # && config.include?("D") + end + def canonical_path(path) path = Pathname.new(path) path = path.realpath if path.exist? From 2d4c792b0b6e74c06b9bc58ec93dbce50e89b67e Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 10:00:05 +0100 Subject: [PATCH 012/122] Make one function --- Library/Homebrew/extend/os/mac/keg.rb | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/Library/Homebrew/extend/os/mac/keg.rb b/Library/Homebrew/extend/os/mac/keg.rb index cfe0b4f648..a6c03b82d7 100644 --- a/Library/Homebrew/extend/os/mac/keg.rb +++ b/Library/Homebrew/extend/os/mac/keg.rb @@ -64,19 +64,17 @@ class Keg end def dsymutil - binary_executable_or_library_files.each { |file| dsymutil_binary(file) } - end + binary_executable_or_library_files.each do |file| + odebug "Extracting symbols #{file}" - def dsymutil_binary(file) - odebug "Extracting symbols #{file}" + result = system_command("dsymutil", args: [file]) + next if result.success? - result = system_command("dsymutil", args: [file]) - return if result.success? - - # If it fails again, error out - onoe <<~EOS - Failed to extract symbols from #{file}: - #{result.stderr} - EOS + # If it fails again, error out + onoe <<~EOS + Failed to extract symbols from #{file}: + #{result.stderr} + EOS + end end end From f4cb9a40a6d5f14659b337beedfd6b537fb14e31 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 11:26:03 +0100 Subject: [PATCH 013/122] remove macos specific dummy call Co-authored-by: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> --- Library/Homebrew/keg.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 7c7defe7e0..f28c6da545 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -533,8 +533,6 @@ class Keg def codesign_patched_binary(file); end - def dsymutil_binary(file); end - private def resolve_any_conflicts(dst, dry_run: false, verbose: false, overwrite: false) From 74dd365a56917ea5d948ae05586bcfe1a420b577 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 12:13:38 +0100 Subject: [PATCH 014/122] Hardcoded symbol production Needs to be toggled by the `--debug-symbols` flag instead of hard coded --- Library/Homebrew/extend/ENV/super.rb | 11 ++++++++++- Library/Homebrew/shims/super/cc | 3 +-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index c89a4604c5..c199714866 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -100,6 +100,7 @@ module Superenv # d - Don't strip -march=. Use only in formulae that # have runtime detection of CPU features. # w - Pass -no_weak_imports to the linker + # D - Generate debugging information # # These flags will also be present: # a - apply fix for apr-1-config path @@ -282,7 +283,9 @@ module Superenv sig { returns(String) } def determine_cccfg - "" + # TODO: temporarily hard code symbol generation + # "" + "D" end public @@ -331,6 +334,12 @@ module Superenv append_to_cccfg "g" if compiler == :clang end + sig { void } + def debug_symbols + # TODO: how do I get this method called? + append_to_cccfg "D" if OS.mac? + end + # @private sig { void } def refurbish_args diff --git a/Library/Homebrew/shims/super/cc b/Library/Homebrew/shims/super/cc index aed92991f9..830f569ea5 100755 --- a/Library/Homebrew/shims/super/cc +++ b/Library/Homebrew/shims/super/cc @@ -401,8 +401,7 @@ class Cmd end def debug_symbols? - mac? - # && config.include?("D") + config.include?("D") end def canonical_path(path) From d195f225224031ee556aa84513506d3840ad0efb Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 12:15:53 +0100 Subject: [PATCH 015/122] Connecting up `--debug-symbols` flag This connects the calling of dsymutil and the retention of temporary files. Still need to connect compilation to flag. --- Library/Homebrew/build.rb | 7 ++++--- Library/Homebrew/cli/args.rbi | 3 +++ Library/Homebrew/cmd/install.rb | 7 +++++++ Library/Homebrew/cmd/reinstall.rb | 7 +++++++ Library/Homebrew/cmd/upgrade.rb | 7 +++++++ Library/Homebrew/extend/ENV/shared.rb | 3 +++ Library/Homebrew/extend/os/mac/keg.rb | 2 +- Library/Homebrew/formula.rb | 4 ++-- Library/Homebrew/formula_installer.rb | 9 +++++++-- Library/Homebrew/install.rb | 2 ++ Library/Homebrew/reinstall.rb | 2 ++ Library/Homebrew/upgrade.rb | 7 +++++++ 12 files changed, 52 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index b432fdca82..5ee369389a 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -127,9 +127,10 @@ class Build formula.update_head_version formula.brew( - fetch: false, - keep_tmp: args.keep_tmp?, - interactive: args.interactive?, + fetch: false, + keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, + interactive: args.interactive?, ) do with_env( # For head builds, HOMEBREW_FORMULA_PREFIX should include the commit, diff --git a/Library/Homebrew/cli/args.rbi b/Library/Homebrew/cli/args.rbi index 32b1cd8e6e..af6802f6ac 100644 --- a/Library/Homebrew/cli/args.rbi +++ b/Library/Homebrew/cli/args.rbi @@ -87,6 +87,9 @@ module Homebrew sig { returns(T::Boolean) } def keep_tmp?; end + sig { returns(T::Boolean) } + def debug_symbols?; end + sig { returns(T::Boolean) } def overwrite?; end diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index cff794979e..6848e982b5 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -91,6 +91,11 @@ module Homebrew [:switch, "--keep-tmp", { description: "Retain the temporary files created during installation.", }], + [:switch, "--debug-symbols", { + depends_on: "--build-from-source", + description: "Generates debugging symbols during build. Source will be in temporary directory " \ + "which is retained. (see --keep-tmp)", + }], [:switch, "--build-bottle", { description: "Prepare the formula for eventual bottling during installation, skipping any " \ "post-install steps.", @@ -232,6 +237,7 @@ module Homebrew git: args.git?, interactive: args.interactive?, keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, force: args.force?, overwrite: args.overwrite?, debug: args.debug?, @@ -247,6 +253,7 @@ module Homebrew build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, force: args.force?, debug: args.debug?, quiet: args.quiet?, diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index bc6bca5053..bb8b4844cc 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -57,6 +57,11 @@ module Homebrew [:switch, "--keep-tmp", { description: "Retain the temporary files created during installation.", }], + [:switch, "--debug-symbols", { + depends_on: "--build-from-source", + description: "Generates debugging symbols during build. Source will be in temporary directory " \ + "which is retained. (see --keep-tmp)", + }], [:switch, "--display-times", { env: :display_install_times, description: "Print install times for each formula at the end of the run.", @@ -115,6 +120,7 @@ module Homebrew build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, force: args.force?, debug: args.debug?, quiet: args.quiet?, @@ -132,6 +138,7 @@ module Homebrew build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, force: args.force?, debug: args.debug?, quiet: args.quiet?, diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index ec7520a7c3..3496c7274b 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -68,6 +68,11 @@ module Homebrew [:switch, "--keep-tmp", { description: "Retain the temporary files created during installation.", }], + [:switch, "--debug-symbols", { + depends_on: "--build-from-source", + description: "Generates debugging symbols during build. Source will be in temporary directory " \ + "which is retained. (see --keep-tmp)", + }], [:switch, "--display-times", { env: :display_install_times, description: "Print install times for each package at the end of the run.", @@ -185,6 +190,7 @@ module Homebrew build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, force: args.force?, debug: args.debug?, quiet: args.quiet?, @@ -200,6 +206,7 @@ module Homebrew build_from_source_formulae: args.build_from_source_formulae, interactive: args.interactive?, keep_tmp: args.keep_tmp?, + debug_symbols: args.debug_symbols?, force: args.force?, debug: args.debug?, quiet: args.quiet?, diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb index 381ceccfdb..bccd15aaf5 100644 --- a/Library/Homebrew/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/ENV/shared.rb @@ -315,6 +315,9 @@ module SharedEnvExtension sig { void } def permit_arch_flags; end + sig { void } + def debug_symbols; end + # @private sig { params(cc: T.any(Symbol, String)).returns(T::Boolean) } def compiler_any_clang?(cc = compiler) diff --git a/Library/Homebrew/extend/os/mac/keg.rb b/Library/Homebrew/extend/os/mac/keg.rb index a6c03b82d7..a1fde91b14 100644 --- a/Library/Homebrew/extend/os/mac/keg.rb +++ b/Library/Homebrew/extend/os/mac/keg.rb @@ -67,7 +67,7 @@ class Keg binary_executable_or_library_files.each do |file| odebug "Extracting symbols #{file}" - result = system_command("dsymutil", args: [file]) + result = system_command("dsymutil", args: [file], print_stderr: false) next if result.success? # If it fails again, error out diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 17488e0ed1..87084de97d 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1273,11 +1273,11 @@ class Formula # Yields |self,staging| with current working directory set to the uncompressed tarball # where staging is a {Mktemp} staging context. # @private - def brew(fetch: true, keep_tmp: false, interactive: false) + def brew(fetch: true, keep_tmp: false, debug_symbols: false, interactive: false) @prefix_returns_versioned_prefix = true active_spec.fetch if fetch stage(interactive: interactive) do |staging| - staging.retain! if keep_tmp + staging.retain! if keep_tmp || debug_symbols prepare_patches fetch_patches if fetch diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 611ec46643..52e1e9881c 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -59,6 +59,7 @@ class FormulaInstaller git: false, interactive: false, keep_tmp: false, + debug_symbols: false, cc: nil, options: Options.new, force: false, @@ -72,8 +73,7 @@ class FormulaInstaller @force = force @overwrite = overwrite @keep_tmp = keep_tmp - # Just for this proof of concept - @debug_symbols = keep_tmp + @debug_symbols = debug_symbols @link_keg = !formula.keg_only? || link_keg @show_header = show_header @ignore_deps = ignore_deps @@ -691,6 +691,7 @@ class FormulaInstaller include_test_formulae: @include_test_formulae, build_from_source_formulae: @build_from_source_formulae, keep_tmp: keep_tmp?, + debug_symbols: debug_symbols?, force: force?, debug: debug?, quiet: quiet?, @@ -744,6 +745,7 @@ class FormulaInstaller include_test_formulae: @include_test_formulae, build_from_source_formulae: @build_from_source_formulae, keep_tmp: keep_tmp?, + debug_symbols: debug_symbols?, force: force?, debug: debug?, quiet: quiet?, @@ -877,6 +879,9 @@ class FormulaInstaller args << "--debug" if debug? args << "--cc=#{@cc}" if @cc args << "--keep-tmp" if keep_tmp? + args << "--debug-symbols" if debug_symbols? + # Avoids dependecy error on flag + args << "--build-from-source" if build_from_source? && debug_symbols? if @env.present? args << "--env=#{@env}" diff --git a/Library/Homebrew/install.rb b/Library/Homebrew/install.rb index 9ab565d431..3d838dac3e 100644 --- a/Library/Homebrew/install.rb +++ b/Library/Homebrew/install.rb @@ -269,6 +269,7 @@ module Homebrew git: false, interactive: false, keep_tmp: false, + debug_symbols: false, force: false, overwrite: false, debug: false, @@ -293,6 +294,7 @@ module Homebrew git: git, interactive: interactive, keep_tmp: keep_tmp, + debug_symbols: debug_symbols, force: force, overwrite: overwrite, debug: debug, diff --git a/Library/Homebrew/reinstall.rb b/Library/Homebrew/reinstall.rb index 2c9c0ee430..f260d041b7 100644 --- a/Library/Homebrew/reinstall.rb +++ b/Library/Homebrew/reinstall.rb @@ -16,6 +16,7 @@ module Homebrew build_from_source_formulae: [], interactive: false, keep_tmp: false, + debug_symbols: false, force: false, debug: false, quiet: false, @@ -48,6 +49,7 @@ module Homebrew git: git, interactive: interactive, keep_tmp: keep_tmp, + debug_symbols: debug_symbols, force: force, debug: debug, quiet: quiet, diff --git a/Library/Homebrew/upgrade.rb b/Library/Homebrew/upgrade.rb index c9f0acc576..54e3223c18 100644 --- a/Library/Homebrew/upgrade.rb +++ b/Library/Homebrew/upgrade.rb @@ -24,6 +24,7 @@ module Homebrew build_from_source_formulae: [], interactive: false, keep_tmp: false, + debug_symbols: false, force: false, debug: false, quiet: false, @@ -61,6 +62,7 @@ module Homebrew build_from_source_formulae: build_from_source_formulae, interactive: interactive, keep_tmp: keep_tmp, + debug_symbols: debug_symbols, force: force, debug: debug, quiet: quiet, @@ -128,6 +130,7 @@ module Homebrew build_from_source_formulae: [], interactive: false, keep_tmp: false, + debug_symbols: false, force: false, debug: false, quiet: false, @@ -161,6 +164,7 @@ module Homebrew build_from_source_formulae: build_from_source_formulae, interactive: interactive, keep_tmp: keep_tmp, + debug_symbols: debug_symbols, force: force, debug: debug, quiet: quiet, @@ -254,6 +258,7 @@ module Homebrew build_from_source_formulae: [], interactive: false, keep_tmp: false, + debug_symbols: false, force: false, debug: false, quiet: false, @@ -339,6 +344,7 @@ module Homebrew build_from_source_formulae: build_from_source_formulae, interactive: interactive, keep_tmp: keep_tmp, + debug_symbols: debug_symbols, force: force, debug: debug, quiet: quiet, @@ -407,6 +413,7 @@ module Homebrew build_from_source_formulae: build_from_source_formulae + [formula.full_name], interactive: interactive, keep_tmp: keep_tmp, + debug_symbols: debug_symbols, force: force, debug: debug, quiet: quiet, From 91065b9ddd24bcc3c279b1b120ec34a2b3810f8b Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 16:15:26 +0100 Subject: [PATCH 016/122] Improve flag passing for debug-symbols --- Library/Homebrew/formula_installer.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 52e1e9881c..318c513b28 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -879,9 +879,11 @@ class FormulaInstaller args << "--debug" if debug? args << "--cc=#{@cc}" if @cc args << "--keep-tmp" if keep_tmp? - args << "--debug-symbols" if debug_symbols? - # Avoids dependecy error on flag - args << "--build-from-source" if build_from_source? && debug_symbols? + + if debug_symbols? + args << "--debug-symbols" + args << "--build-from-source" + end if @env.present? args << "--env=#{@env}" From c2a95f077fe7bb7b89ca1e4b5cc9c3a2d0cf93cd Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 17:18:01 +0100 Subject: [PATCH 017/122] Compiler `-g` flag set based on `--debug-symbols` --- Library/Homebrew/build.rb | 10 ++++++---- Library/Homebrew/extend/ENV.rb | 14 ++++++++++++-- Library/Homebrew/extend/ENV/shared.rb | 14 ++++++++++---- Library/Homebrew/extend/ENV/std.rb | 9 ++++++++- Library/Homebrew/extend/ENV/super.rb | 18 ++++++++++++------ .../Homebrew/extend/os/linux/extend/ENV/std.rb | 12 ++++++++++-- .../extend/os/linux/extend/ENV/super.rb | 12 ++++++++++-- .../extend/os/mac/extend/ENV/shared.rb | 12 ++++++++++-- .../Homebrew/extend/os/mac/extend/ENV/std.rb | 12 ++++++++++-- .../Homebrew/extend/os/mac/extend/ENV/super.rb | 12 ++++++++++-- 10 files changed, 98 insertions(+), 27 deletions(-) diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 5ee369389a..aef1cc3df4 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -79,10 +79,11 @@ class Build ENV.deps = formula_deps ENV.run_time_deps = run_time_deps ENV.setup_build_environment( - formula: formula, - cc: args.cc, - build_bottle: args.build_bottle?, - bottle_arch: args.bottle_arch, + formula: formula, + cc: args.cc, + build_bottle: args.build_bottle?, + bottle_arch: args.bottle_arch, + debug_symbols: args.debug_symbols?, ) reqs.each do |req| req.modify_build_environment( @@ -96,6 +97,7 @@ class Build cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch, + debug_symbols: args.debug_symbols?, ) reqs.each do |req| req.modify_build_environment( diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 12ef1af60d..40bb592a87 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -40,12 +40,22 @@ module EnvActivation _block: T.proc.returns(T.untyped), ).returns(T.untyped) } - def with_build_environment(env: nil, cc: nil, build_bottle: false, bottle_arch: nil, &_block) + def with_build_environment( + env: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + debug_symbols: false, + &_block + ) old_env = to_hash.dup tmp_env = to_hash.dup.extend(EnvActivation) T.cast(tmp_env, EnvActivation).activate_extensions!(env: env) T.cast(tmp_env, T.any(Superenv, Stdenv)) - .setup_build_environment(cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch) + .setup_build_environment( + cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + debug_symbols: debug_symbols, + ) replace(tmp_env) begin diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb index bccd15aaf5..f31400733c 100644 --- a/Library/Homebrew/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/ENV/shared.rb @@ -40,13 +40,22 @@ module SharedEnvExtension build_bottle: T.nilable(T::Boolean), bottle_arch: T.nilable(String), testing_formula: T::Boolean, + debug_symbols: T.nilable(T::Boolean), ).void } - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) @formula = formula @cc = cc @build_bottle = build_bottle @bottle_arch = bottle_arch + @debug_symbols = debug_symbols reset end private :setup_build_environment @@ -315,9 +324,6 @@ module SharedEnvExtension sig { void } def permit_arch_flags; end - sig { void } - def debug_symbols; end - # @private sig { params(cc: T.any(Symbol, String)).returns(T::Boolean) } def compiler_any_clang?(cc = compiler) diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index ba4caa1a80..fb3cc6d570 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -23,7 +23,14 @@ module Stdenv testing_formula: T::Boolean, ).void } - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) super self["HOMEBREW_ENV"] = "std" diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index c199714866..3ddaaad7e6 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -57,7 +57,14 @@ module Superenv testing_formula: T::Boolean, ).void } - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) super send(compiler) @@ -87,6 +94,8 @@ module Superenv self["HOMEBREW_DEPENDENCIES"] = determine_dependencies self["HOMEBREW_FORMULA_PREFIX"] = @formula.prefix unless @formula.nil? + set_debug_symbols if debug_symbols + # The HOMEBREW_CCCFG ENV variable is used by the ENV/cc tool to control # compiler flag stripping. It consists of a string of characters which act # as flags. Some of these flags are mutually exclusive. @@ -283,9 +292,7 @@ module Superenv sig { returns(String) } def determine_cccfg - # TODO: temporarily hard code symbol generation - # "" - "D" + "" end public @@ -335,8 +342,7 @@ module Superenv end sig { void } - def debug_symbols - # TODO: how do I get this method called? + def set_debug_symbols append_to_cccfg "D" if OS.mac? end diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb index 76d564cd59..73bc4e2a91 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb @@ -2,10 +2,18 @@ # frozen_string_literal: true module Stdenv - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula + bottle_arch: bottle_arch, testing_formula: testing_formula, + debug_symbols: debug_symbols, ) prepend_path "CPATH", HOMEBREW_PREFIX/"include" diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb index bbfc418214..074f842099 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb @@ -15,10 +15,18 @@ module Superenv end # @private - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula + bottle_arch: bottle_arch, testing_formula: testing_formula, + debug_symbols: debug_symbols, ) self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O2" self["HOMEBREW_DYNAMIC_LINKER"] = determine_dynamic_linker_path diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb index a690791acc..7db7a5f8fd 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -4,10 +4,18 @@ module SharedEnvExtension extend T::Sig - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) generic_shared_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula + bottle_arch: bottle_arch, testing_formula: testing_formula, + debug_symbols: debug_symbols, ) # Normalise the system Perl version used, where multiple may be available diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index d40fcec500..7368ec4696 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -10,10 +10,18 @@ module Stdenv ["#{HOMEBREW_LIBRARY}/Homebrew/os/mac/pkgconfig/#{MacOS.version}"] end - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula + bottle_arch: bottle_arch, testing_formula: testing_formula, + debug_symbols: debug_symbols, ) append "LDFLAGS", "-Wl,-headerpad_max_install_names" diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb index c05535a800..258970240e 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb @@ -85,7 +85,14 @@ module Superenv end # @private - def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false) + def setup_build_environment( + formula: nil, + cc: nil, + build_bottle: false, + bottle_arch: nil, + testing_formula: false, + debug_symbols: false + ) sdk = formula ? MacOS.sdk_for_formula(formula) : MacOS.sdk is_xcode_sdk = sdk&.source == :xcode @@ -102,7 +109,8 @@ module Superenv generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula + bottle_arch: bottle_arch, testing_formula: testing_formula, + debug_symbols: debug_symbols, ) # Filter out symbols known not to be defined since GNU Autotools can't From 6551b25b07a82758209a75152ac4b27494f81e5c Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 17:56:11 +0100 Subject: [PATCH 018/122] Compile with symbols when requested on all plats --- Library/Homebrew/extend/ENV/super.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index 3ddaaad7e6..e95f0d2997 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -343,7 +343,7 @@ module Superenv sig { void } def set_debug_symbols - append_to_cccfg "D" if OS.mac? + append_to_cccfg "D" end # @private From a578068dd55caa4e9ec6544dc93fa216d47dcf93 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 18:01:22 +0100 Subject: [PATCH 019/122] Unlikely but ensures reasonable error --- Library/Homebrew/formula_installer.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 318c513b28..18c8e94334 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -1342,8 +1342,6 @@ class FormulaInstaller sig { params(keg: Keg).void } def dsymutil(keg) keg.dsymutil - # TODO - # rescue Keg::DsymError => e rescue RuntimeError => e ofail "Failed to extract debugging symbols for #{formula.full_name}" puts e From c4422503041ffb13423e95ddadcc99c735b282e9 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 19:27:23 +0100 Subject: [PATCH 020/122] Increase Metrics/BlockLength limit for `install_args` Instead of disabling the cop for that block --- Library/Homebrew/.rubocop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/.rubocop.yml b/Library/Homebrew/.rubocop.yml index 07b613ecb3..f9590b7800 100644 --- a/Library/Homebrew/.rubocop.yml +++ b/Library/Homebrew/.rubocop.yml @@ -16,7 +16,7 @@ Lint/NestedMethodDefinition: Metrics/AbcSize: Max: 280 Metrics/BlockLength: - Max: 106 + Max: 111 Exclude: # TODO: extract more of the bottling logic - "dev-cmd/bottle.rb" From 215e54566074d95771925579d15c20764e8b288c Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 19:28:30 +0100 Subject: [PATCH 021/122] `brew style` --- Library/Homebrew/build.rb | 8 ++++---- Library/Homebrew/cmd/install.rb | 4 ++-- Library/Homebrew/cmd/reinstall.rb | 4 ++-- Library/Homebrew/cmd/upgrade.rb | 4 ++-- Library/Homebrew/extend/ENV.rb | 2 +- Library/Homebrew/extend/os/linux/extend/ENV/std.rb | 2 +- Library/Homebrew/extend/os/linux/extend/ENV/super.rb | 2 +- Library/Homebrew/extend/os/mac/extend/ENV/shared.rb | 2 +- Library/Homebrew/extend/os/mac/extend/ENV/std.rb | 2 +- Library/Homebrew/extend/os/mac/extend/ENV/super.rb | 2 +- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index aef1cc3df4..ec430e04ba 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -93,10 +93,10 @@ class Build deps.each(&:modify_build_environment) else ENV.setup_build_environment( - formula: formula, - cc: args.cc, - build_bottle: args.build_bottle?, - bottle_arch: args.bottle_arch, + formula: formula, + cc: args.cc, + build_bottle: args.build_bottle?, + bottle_arch: args.bottle_arch, debug_symbols: args.debug_symbols?, ) reqs.each do |req| diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 6848e982b5..6844ef124b 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -93,8 +93,8 @@ module Homebrew }], [:switch, "--debug-symbols", { depends_on: "--build-from-source", - description: "Generates debugging symbols during build. Source will be in temporary directory " \ - "which is retained. (see --keep-tmp)", + description: "Generate debug symbols on build. Source will be retained in a temporary directory. " \ + "(see --keep-tmp)", }], [:switch, "--build-bottle", { description: "Prepare the formula for eventual bottling during installation, skipping any " \ diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index bb8b4844cc..608eee3212 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -59,8 +59,8 @@ module Homebrew }], [:switch, "--debug-symbols", { depends_on: "--build-from-source", - description: "Generates debugging symbols during build. Source will be in temporary directory " \ - "which is retained. (see --keep-tmp)", + description: "Generate debug symbols on build. Source will be retained in a temporary directory. " \ + "(see --keep-tmp)", }], [:switch, "--display-times", { env: :display_install_times, diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 3496c7274b..49d5a783f2 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -70,8 +70,8 @@ module Homebrew }], [:switch, "--debug-symbols", { depends_on: "--build-from-source", - description: "Generates debugging symbols during build. Source will be in temporary directory " \ - "which is retained. (see --keep-tmp)", + description: "Generate debug symbols on build. Source will be retained in a temporary directory. " \ + "(see --keep-tmp)", }], [:switch, "--display-times", { env: :display_install_times, diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 40bb592a87..2b1182f71d 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -54,7 +54,7 @@ module EnvActivation T.cast(tmp_env, T.any(Superenv, Stdenv)) .setup_build_environment( cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, - debug_symbols: debug_symbols, + debug_symbols: debug_symbols ) replace(tmp_env) diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb index 73bc4e2a91..2b0c0b172a 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb @@ -13,7 +13,7 @@ module Stdenv generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols, + debug_symbols: debug_symbols ) prepend_path "CPATH", HOMEBREW_PREFIX/"include" diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb index 074f842099..8358986170 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb @@ -26,7 +26,7 @@ module Superenv generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols, + debug_symbols: debug_symbols ) self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O2" self["HOMEBREW_DYNAMIC_LINKER"] = determine_dynamic_linker_path diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb index 7db7a5f8fd..268932734f 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -15,7 +15,7 @@ module SharedEnvExtension generic_shared_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols, + debug_symbols: debug_symbols ) # Normalise the system Perl version used, where multiple may be available diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index 7368ec4696..699658bc8d 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -21,7 +21,7 @@ module Stdenv generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols, + debug_symbols: debug_symbols ) append "LDFLAGS", "-Wl,-headerpad_max_install_names" diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb index 258970240e..c17240444f 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb @@ -110,7 +110,7 @@ module Superenv generic_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols, + debug_symbols: debug_symbols ) # Filter out symbols known not to be defined since GNU Autotools can't From 22b1b61b73f742f9e4e149b8a34419a4522cdb5f Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 26 Jul 2022 19:36:43 +0100 Subject: [PATCH 022/122] Fix `brew typecheck` --- Library/Homebrew/extend/ENV.rb | 11 ++++++----- Library/Homebrew/extend/ENV/std.rb | 1 + Library/Homebrew/extend/ENV/super.rb | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 2b1182f71d..dd3145954a 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -33,11 +33,12 @@ module EnvActivation sig { params( - env: T.nilable(String), - cc: T.nilable(String), - build_bottle: T::Boolean, - bottle_arch: T.nilable(String), - _block: T.proc.returns(T.untyped), + env: T.nilable(String), + cc: T.nilable(String), + build_bottle: T::Boolean, + bottle_arch: T.nilable(String), + debug_symbols: T.nilable(T::Boolean), + _block: T.proc.returns(T.untyped), ).returns(T.untyped) } def with_build_environment( diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index fb3cc6d570..a1ee227f2f 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -21,6 +21,7 @@ module Stdenv build_bottle: T.nilable(T::Boolean), bottle_arch: T.nilable(String), testing_formula: T::Boolean, + debug_symbols: T.nilable(T::Boolean), ).void } def setup_build_environment( diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index e95f0d2997..619f6bb02f 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -55,6 +55,7 @@ module Superenv build_bottle: T.nilable(T::Boolean), bottle_arch: T.nilable(String), testing_formula: T::Boolean, + debug_symbols: T.nilable(T::Boolean), ).void } def setup_build_environment( From dff3fc9d2f9db62ec555e75b7902e699a828c6a4 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 27 Jul 2022 16:58:29 +0200 Subject: [PATCH 023/122] fix symbol in SHELL env --- Library/Homebrew/formula.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 876ca764f5..f54935939f 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1664,7 +1664,7 @@ class Formula end script_path.dirname.mkpath - script_path.write Utils.safe_popen_read({ "SHELL" => shell }, executable, cmd, shell_parameter) + script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, executable, cmd, shell_parameter) end end From e46a61e181f8e324d1bc4222bedf692c11ad84fa Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sat, 30 Jul 2022 11:08:52 +0100 Subject: [PATCH 024/122] rename & inline dsymutil to prepare_debug_symbols --- Library/Homebrew/extend/os/mac/keg.rb | 2 +- Library/Homebrew/formula_installer.rb | 10 +--------- Library/Homebrew/keg.rb | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/extend/os/mac/keg.rb b/Library/Homebrew/extend/os/mac/keg.rb index a1fde91b14..7337586456 100644 --- a/Library/Homebrew/extend/os/mac/keg.rb +++ b/Library/Homebrew/extend/os/mac/keg.rb @@ -63,7 +63,7 @@ class Keg EOS end - def dsymutil + def prepare_debug_symbols binary_executable_or_library_files.each do |file| odebug "Extracting symbols #{file}" diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 18c8e94334..e895c09215 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -807,7 +807,7 @@ class FormulaInstaller post_install end - dsymutil(keg) if debug_symbols? + keg.prepare_debug_symbols if debug_symbols? # Updates the cache for a particular formula after doing an install CacheStoreDatabase.use(:linkage) do |db| @@ -1338,12 +1338,4 @@ class FormulaInstaller #{SPDX.license_expression_to_string formula.license}. EOS end - - sig { params(keg: Keg).void } - def dsymutil(keg) - keg.dsymutil - rescue RuntimeError => e - ofail "Failed to extract debugging symbols for #{formula.full_name}" - puts e - end end diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index f28c6da545..a12e8de395 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -483,7 +483,7 @@ class Keg ObserverPathnameExtension.n end - def dsymutil; end + def prepare_debug_symbols; end def remove_oldname_opt_record return unless oldname_opt_record From cd9fe97c551d4e9b5f0a702a1382a6ccbe494773 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sat, 30 Jul 2022 11:10:26 +0100 Subject: [PATCH 025/122] Improve style --- Library/Homebrew/build.rb | 18 ++++-------------- Library/Homebrew/extend/ENV.rb | 15 +++------------ Library/Homebrew/extend/ENV/shared.rb | 10 ++-------- Library/Homebrew/extend/ENV/std.rb | 10 ++-------- Library/Homebrew/extend/ENV/super.rb | 10 ++-------- .../Homebrew/extend/os/linux/extend/ENV/std.rb | 17 ++++------------- .../extend/os/linux/extend/ENV/super.rb | 17 ++++------------- .../extend/os/mac/extend/ENV/shared.rb | 5 ++--- .../Homebrew/extend/os/mac/extend/ENV/std.rb | 7 ++----- .../Homebrew/extend/os/mac/extend/ENV/super.rb | 15 ++++----------- 10 files changed, 29 insertions(+), 95 deletions(-) diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index ec430e04ba..0722cb060c 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -78,13 +78,8 @@ class Build ENV.keg_only_deps = keg_only_deps ENV.deps = formula_deps ENV.run_time_deps = run_time_deps - ENV.setup_build_environment( - formula: formula, - cc: args.cc, - build_bottle: args.build_bottle?, - bottle_arch: args.bottle_arch, - debug_symbols: args.debug_symbols?, - ) + ENV.setup_build_environment(formula: formula, cc: args.cc, build_bottle: args.build_bottle?, + bottle_arch: args.bottle_arch, debug_symbols: args.debug_symbols?) reqs.each do |req| req.modify_build_environment( env: args.env, cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch, @@ -92,13 +87,8 @@ class Build end deps.each(&:modify_build_environment) else - ENV.setup_build_environment( - formula: formula, - cc: args.cc, - build_bottle: args.build_bottle?, - bottle_arch: args.bottle_arch, - debug_symbols: args.debug_symbols?, - ) + ENV.setup_build_environment(formula: formula, cc: args.cc, build_bottle: args.build_bottle?, + bottle_arch: args.bottle_arch, debug_symbols: args.debug_symbols?) reqs.each do |req| req.modify_build_environment( env: args.env, cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch, diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index dd3145954a..54b293ee87 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -41,22 +41,13 @@ module EnvActivation _block: T.proc.returns(T.untyped), ).returns(T.untyped) } - def with_build_environment( - env: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - debug_symbols: false, - &_block - ) + def with_build_environment(env: nil, cc: nil, build_bottle: false, bottle_arch: nil, debug_symbols: false, &_block) old_env = to_hash.dup tmp_env = to_hash.dup.extend(EnvActivation) T.cast(tmp_env, EnvActivation).activate_extensions!(env: env) T.cast(tmp_env, T.any(Superenv, Stdenv)) - .setup_build_environment( - cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, - debug_symbols: debug_symbols - ) + .setup_build_environment(cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + debug_symbols: debug_symbols) replace(tmp_env) begin diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb index f31400733c..95bede7d4a 100644 --- a/Library/Homebrew/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/ENV/shared.rb @@ -43,14 +43,8 @@ module SharedEnvExtension debug_symbols: T.nilable(T::Boolean), ).void } - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) @formula = formula @cc = cc @build_bottle = build_bottle diff --git a/Library/Homebrew/extend/ENV/std.rb b/Library/Homebrew/extend/ENV/std.rb index a1ee227f2f..37d4c7779f 100644 --- a/Library/Homebrew/extend/ENV/std.rb +++ b/Library/Homebrew/extend/ENV/std.rb @@ -24,14 +24,8 @@ module Stdenv debug_symbols: T.nilable(T::Boolean), ).void } - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) super self["HOMEBREW_ENV"] = "std" diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index 619f6bb02f..8f9a8330c9 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -58,14 +58,8 @@ module Superenv debug_symbols: T.nilable(T::Boolean), ).void } - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) super send(compiler) diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb index 2b0c0b172a..58c741e1d4 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/std.rb @@ -2,19 +2,10 @@ # frozen_string_literal: true module Stdenv - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) - generic_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) + generic_setup_build_environment(formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + testing_formula: testing_formula, debug_symbols: debug_symbols) prepend_path "CPATH", HOMEBREW_PREFIX/"include" prepend_path "LIBRARY_PATH", HOMEBREW_PREFIX/"lib" diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb index 8358986170..9dbac81d0e 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb @@ -15,19 +15,10 @@ module Superenv end # @private - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) - generic_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) + generic_setup_build_environment(formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + testing_formula: testing_formula, debug_symbols: debug_symbols) self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O2" self["HOMEBREW_DYNAMIC_LINKER"] = determine_dynamic_linker_path self["HOMEBREW_RPATH_PATHS"] = determine_rpath_paths(@formula) diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb index 268932734f..019c3091f7 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -13,9 +13,8 @@ module SharedEnvExtension debug_symbols: false ) generic_shared_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols + formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + testing_formula: testing_formula, debug_symbols: debug_symbols ) # Normalise the system Perl version used, where multiple may be available diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index 699658bc8d..1c255a151e 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -18,11 +18,8 @@ module Stdenv testing_formula: false, debug_symbols: false ) - generic_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols - ) + generic_setup_build_environment(formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + testing_formula: testing_formula, debug_symbols: debug_symbols) append "LDFLAGS", "-Wl,-headerpad_max_install_names" diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb index c17240444f..4c7d767fbb 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb @@ -85,14 +85,8 @@ module Superenv end # @private - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) sdk = formula ? MacOS.sdk_for_formula(formula) : MacOS.sdk is_xcode_sdk = sdk&.source == :xcode @@ -108,9 +102,8 @@ module Superenv end generic_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, - bottle_arch: bottle_arch, testing_formula: testing_formula, - debug_symbols: debug_symbols + formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + testing_formula: testing_formula, debug_symbols: debug_symbols ) # Filter out symbols known not to be defined since GNU Autotools can't From 15f1ac8775f19908b3f484ccdb21a0dcfda0099f Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sat, 30 Jul 2022 11:23:40 +0100 Subject: [PATCH 026/122] Integration test for `--debug-symbols` But only checks that the command works. Not that `dsymutil` is called or that `-g` is added to the compile args. (Not sure how to do either in an integration test.) --- Library/Homebrew/test/cmd/install_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index 560bc3393c..590ee68506 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -72,4 +72,14 @@ describe "brew install" do .and be_a_success expect(HOMEBREW_CELLAR/"testball1/HEAD-d5eb689/foo/test").not_to be_a_file end + + it "installs formulae with debug symbols", :integration_test do + setup_test_formula "testball1" + + expect { brew "install", "testball1", "--debug-symbols", "-s" } + .to output(%r{#{HOMEBREW_CELLAR}/testball1/0\.1}o).to_stdout + .and not_to_output.to_stderr + .and be_a_success + expect(HOMEBREW_CELLAR/"testball1/0.1/foo/test").not_to be_a_file + end end From 4eea117e849a68b9364242808050316696b2d9dd Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sat, 30 Jul 2022 11:41:05 +0100 Subject: [PATCH 027/122] `ofail` if debug-symbols cannot be extracted. --- Library/Homebrew/extend/os/mac/keg.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/extend/os/mac/keg.rb b/Library/Homebrew/extend/os/mac/keg.rb index 7337586456..7b9b29cc8e 100644 --- a/Library/Homebrew/extend/os/mac/keg.rb +++ b/Library/Homebrew/extend/os/mac/keg.rb @@ -71,7 +71,7 @@ class Keg next if result.success? # If it fails again, error out - onoe <<~EOS + ofail <<~EOS Failed to extract symbols from #{file}: #{result.stderr} EOS From 4b0d52ef62c9e964b2a570b9e9459f454f311255 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sun, 31 Jul 2022 19:59:25 +0100 Subject: [PATCH 028/122] debug_symbols passed down to soure dir creator The flag is now passed down to resource which creates the directory for unpacking the source. --- Library/Homebrew/formula.rb | 6 +-- Library/Homebrew/mksource.rb | 84 ++++++++++++++++++++++++++++++++++++ Library/Homebrew/resource.rb | 13 +++--- 3 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 Library/Homebrew/mksource.rb diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 87084de97d..e5b3dc8c15 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1276,7 +1276,7 @@ class Formula def brew(fetch: true, keep_tmp: false, debug_symbols: false, interactive: false) @prefix_returns_versioned_prefix = true active_spec.fetch if fetch - stage(interactive: interactive) do |staging| + stage(interactive: interactive, debug_symbols: debug_symbols) do |staging| staging.retain! if keep_tmp || debug_symbols prepare_patches @@ -2437,8 +2437,8 @@ class Formula } end - def stage(interactive: false) - active_spec.stage do |staging| + def stage(interactive: false, debug_symbols: false) + active_spec.stage(debug_symbols: debug_symbols) do |staging| @source_modified_time = active_spec.source_modified_time @buildpath = Pathname.pwd env_home = buildpath/".brew_home" diff --git a/Library/Homebrew/mksource.rb b/Library/Homebrew/mksource.rb new file mode 100644 index 0000000000..8dc93af6cc --- /dev/null +++ b/Library/Homebrew/mksource.rb @@ -0,0 +1,84 @@ +# typed: false +# frozen_string_literal: true + +# Performs {Formula#mktemp}'s functionality, and tracks the results. +# Each instance is only intended to be used once. +class Mksource + extend T::Sig + + include FileUtils + + # Path to the tmpdir used in this run, as a {Pathname}. + attr_reader :tmpdir + + def initialize(prefix, opts = {}) + @prefix = prefix + @retain = opts[:retain] + @quiet = false + end + + # Instructs this {Mksource} to retain the staged files. + sig { void } + def retain! + @retain = true + end + + # True if the staged temporary files should be retained. + def retain? + @retain + end + + # Instructs this Mksource to not emit messages when retention is triggered. + sig { void } + def quiet! + @quiet = true + end + + sig { returns(String) } + def to_s + "[Mksource: #{tmpdir} retain=#{@retain} quiet=#{@quiet}]" + end + + def run + @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP)) + + # Make sure files inside the temporary directory have the same group as the + # brew instance. + # + # Reference from `man 2 open` + # > When a new file is created, it is given the group of the directory which + # contains it. + group_id = if HOMEBREW_BREW_FILE.grpowned? + HOMEBREW_BREW_FILE.stat.gid + else + Process.gid + end + begin + chown(nil, group_id, tmpdir) + rescue Errno::EPERM + opoo "Failed setting group \"#{Etc.getgrgid(group_id).name}\" on #{tmpdir}" + end + + begin + Dir.chdir(tmpdir) { yield self } + ensure + ignore_interrupts { chmod_rm_rf(tmpdir) } unless retain? + end + ensure + ohai "Temporary files retained at:", @tmpdir.to_s if retain? && !@tmpdir.nil? && !@quiet + end + + private + + def chmod_rm_rf(path) + if path.directory? && !path.symlink? + chmod("u+rw", path) if path.owned? # Need permissions in order to see the contents + path.children.each { |child| chmod_rm_rf(child) } + rmdir(path) + else + rm_f(path) + end + rescue + nil # Just skip this directory. + end +end diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index a8e5f712c3..834b30ea0d 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -5,6 +5,7 @@ require "download_strategy" require "checksum" require "version" require "mktemp" +require "mksource" require "livecheck" require "extend/on_system" @@ -89,14 +90,14 @@ class Resource # dir using {Mktemp} so that works with all subtypes. # # @api public - def stage(target = nil, &block) + def stage(target = nil, debug_symbols: false, &block) raise ArgumentError, "target directory or block is required" if !target && block.blank? prepare_patches fetch_patches(skip_downloaded: true) fetch unless downloaded? - unpack(target, &block) + unpack(target, debug_symbols: debug_symbols, &block) end def prepare_patches @@ -120,9 +121,9 @@ class Resource # If block is given, yield to that block with `|stage|`, where stage # is a {ResourceStageContext}. # A target or a block must be given, but not both. - def unpack(target = nil) + def unpack(target = nil, debug_symbols: false) current_working_directory = Pathname.pwd - mktemp(download_name) do |staging| + stage_resource(download_name, debug_symbols: debug_symbols) do |staging| downloader.stage do @source_modified_time = downloader.source_modified_time apply_patches @@ -235,8 +236,8 @@ class Resource protected - def mktemp(prefix, &block) - Mktemp.new(prefix).run(&block) + def stage_resource(prefix, debug_symbols: false, &block) + debug_symbols ? Mksource.new(prefix).run(&block) : Mktemp.new(prefix).run(&block) end private From b2d94dc897f25083cddb994c9b981834d9df6fd0 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 31 Jul 2022 21:01:42 +0200 Subject: [PATCH 029/122] update arg names in docs and signature --- Library/Homebrew/formula.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index f54935939f..fd2ccb0a65 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,18 +1625,19 @@ class Formula end private :extract_macho_slice_from - # Generate shell completions for a formula for bash, zsh, and fish, using the formula's binary. + # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. - # @param binary [Pathname] the binary to use for generating the completion scripts. Defaults to the binary with the - # name of the formula. + # @param executable [Pathname] the executable to use for generating the completion scripts. Defaults to the + # executable with the name of the formula. # @param cmd [String] the command to pass to the `binary`. Defaults to 'completion'. - # @param shell_as_flag [Boolean] specify if `shells` should each be passed as flags to the `binary`. - # Defaults to `false`. + # @param shell_parameter_format [String]/[Symbol] specify how `shells` should each be passed + # to the `executable`. Takes either a String representing a prefix, or one of [:flag, :arg, :none]. + # Defaults to plainly passing the shell. sig { - params(base_name: String, shells: T::Array[Symbol], binary: Pathname, cmd: String, - shell_prefix: T.nilable(T.any(Symbol, String))).void + params(base_name: String, shells: T::Array[Symbol], executable: Pathname, cmd: String, + shell_parameter_format: T.nilable(T.any(Symbol, String))).void } def generate_completions_from_executable(base_name: name, shells: [:bash, :zsh, :fish], From 8b1eb32e99efa05d263c8508becc187b44c9d33b Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sun, 31 Jul 2022 20:33:25 +0100 Subject: [PATCH 030/122] Sources now retained in Caches/Homebrew/Sources Full path is ~/Library/Caches/Homebrew/Sources This creates a brand new directory for each build, but leaves previous. --- Library/Homebrew/mksource.rb | 84 ------------------------------------ Library/Homebrew/mktemp.rb | 11 ++++- Library/Homebrew/resource.rb | 3 +- 3 files changed, 10 insertions(+), 88 deletions(-) delete mode 100644 Library/Homebrew/mksource.rb diff --git a/Library/Homebrew/mksource.rb b/Library/Homebrew/mksource.rb deleted file mode 100644 index 8dc93af6cc..0000000000 --- a/Library/Homebrew/mksource.rb +++ /dev/null @@ -1,84 +0,0 @@ -# typed: false -# frozen_string_literal: true - -# Performs {Formula#mktemp}'s functionality, and tracks the results. -# Each instance is only intended to be used once. -class Mksource - extend T::Sig - - include FileUtils - - # Path to the tmpdir used in this run, as a {Pathname}. - attr_reader :tmpdir - - def initialize(prefix, opts = {}) - @prefix = prefix - @retain = opts[:retain] - @quiet = false - end - - # Instructs this {Mksource} to retain the staged files. - sig { void } - def retain! - @retain = true - end - - # True if the staged temporary files should be retained. - def retain? - @retain - end - - # Instructs this Mksource to not emit messages when retention is triggered. - sig { void } - def quiet! - @quiet = true - end - - sig { returns(String) } - def to_s - "[Mksource: #{tmpdir} retain=#{@retain} quiet=#{@quiet}]" - end - - def run - @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP)) - - # Make sure files inside the temporary directory have the same group as the - # brew instance. - # - # Reference from `man 2 open` - # > When a new file is created, it is given the group of the directory which - # contains it. - group_id = if HOMEBREW_BREW_FILE.grpowned? - HOMEBREW_BREW_FILE.stat.gid - else - Process.gid - end - begin - chown(nil, group_id, tmpdir) - rescue Errno::EPERM - opoo "Failed setting group \"#{Etc.getgrgid(group_id).name}\" on #{tmpdir}" - end - - begin - Dir.chdir(tmpdir) { yield self } - ensure - ignore_interrupts { chmod_rm_rf(tmpdir) } unless retain? - end - ensure - ohai "Temporary files retained at:", @tmpdir.to_s if retain? && !@tmpdir.nil? && !@quiet - end - - private - - def chmod_rm_rf(path) - if path.directory? && !path.symlink? - chmod("u+rw", path) if path.owned? # Need permissions in order to see the contents - path.children.each { |child| chmod_rm_rf(child) } - rmdir(path) - else - rm_f(path) - end - rescue - nil # Just skip this directory. - end -end diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index c95f6241bd..16aa64a0d5 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -13,7 +13,8 @@ class Mktemp def initialize(prefix, opts = {}) @prefix = prefix - @retain = opts[:retain] + @retain_in_sources = opts[:retain_in_sources] + @retain = opts[:retain] || @retain_in_sources @quiet = false end @@ -40,7 +41,13 @@ class Mktemp end def run - @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP)) + if @retain_in_sources + root = "#{HOMEBREW_CACHE}/Sources" + FileUtils.mkdir_p root + else + root = HOMEBREW_TEMP + end + @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", root)) # Make sure files inside the temporary directory have the same group as the # brew instance. diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 834b30ea0d..2246ae42e4 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -5,7 +5,6 @@ require "download_strategy" require "checksum" require "version" require "mktemp" -require "mksource" require "livecheck" require "extend/on_system" @@ -237,7 +236,7 @@ class Resource protected def stage_resource(prefix, debug_symbols: false, &block) - debug_symbols ? Mksource.new(prefix).run(&block) : Mktemp.new(prefix).run(&block) + Mktemp.new(prefix, retain_in_sources: debug_symbols).run(&block) end private From b792a4f645b613ba7e9337777dabbfd92dbfc3a5 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Sun, 31 Jul 2022 21:48:02 +0200 Subject: [PATCH 031/122] fix TypeError --- Library/Homebrew/formula.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index fd2ccb0a65..cf1ad0deb1 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1659,7 +1659,7 @@ class Formula elsif shell_parameter_format == :arg "--shell=#{shell}" elsif shell_parameter_format == :none - nil + "" else "#{shell_parameter_format}#{shell}" end From 93132c6876a6484bae0436bdb3d93c6717bcf828 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sun, 31 Jul 2022 20:54:14 +0100 Subject: [PATCH 032/122] Always put source files in the same directory There's no point in saving old ones because the debug symbols will only for the newest bulid anyway. Currently blows away what was there before, which isn't ideal for a dev workflow. Maybe that should be changed, given a tar file should be a tar file, so shouldn't change. But there are many different types of files. --- Library/Homebrew/mktemp.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index 16aa64a0d5..7a9302e419 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -42,12 +42,13 @@ class Mktemp def run if @retain_in_sources - root = "#{HOMEBREW_CACHE}/Sources" - FileUtils.mkdir_p root + source_dir = "#{HOMEBREW_CACHE}/Sources/#{@prefix.tr "@", "AT"}" + chmod_rm_rf(source_dir) # clear out previous (otherwise not sure what happens) + FileUtils.mkdir_p(source_dir) + @tmpdir = Pathname.new(source_dir) else - root = HOMEBREW_TEMP + @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP)) end - @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", root)) # Make sure files inside the temporary directory have the same group as the # brew instance. From 41a526546661f400011d0ea56f7daa60cec458af Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sun, 31 Jul 2022 21:06:33 +0100 Subject: [PATCH 033/122] Improve messaging of debug source location --- Library/Homebrew/mktemp.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index 7a9302e419..92718d36f4 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -29,6 +29,11 @@ class Mktemp @retain end + # True if the source files should be retained. + def retain_in_sources? + @retain_in_sources + end + # Instructs this Mktemp to not emit messages when retention is triggered. sig { void } def quiet! @@ -73,7 +78,10 @@ class Mktemp ignore_interrupts { chmod_rm_rf(tmpdir) } unless retain? end ensure - ohai "Temporary files retained at:", @tmpdir.to_s if retain? && !@tmpdir.nil? && !@quiet + if retain? && !@tmpdir.nil? && !@quiet + message = retain_in_sources? ? "Source files for debugging available at:" : "Temporary files retained at:" + ohai message, @tmpdir.to_s + end end private From bee353109049781e6321977ce6b134e8709d102d Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Mon, 1 Aug 2022 15:25:34 -0700 Subject: [PATCH 034/122] Improve style --- Library/Homebrew/extend/os/mac/extend/ENV/shared.rb | 10 ++-------- Library/Homebrew/extend/os/mac/extend/ENV/std.rb | 10 ++-------- Library/Homebrew/test/cmd/install_spec.rb | 2 +- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb index 019c3091f7..6ee43c0bb8 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -4,14 +4,8 @@ module SharedEnvExtension extend T::Sig - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) generic_shared_setup_build_environment( formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, debug_symbols: debug_symbols diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb index 1c255a151e..d17b35c64d 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -10,14 +10,8 @@ module Stdenv ["#{HOMEBREW_LIBRARY}/Homebrew/os/mac/pkgconfig/#{MacOS.version}"] end - def setup_build_environment( - formula: nil, - cc: nil, - build_bottle: false, - bottle_arch: nil, - testing_formula: false, - debug_symbols: false - ) + def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, + debug_symbols: false) generic_setup_build_environment(formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, testing_formula: testing_formula, debug_symbols: debug_symbols) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index 590ee68506..cffebfc524 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -76,7 +76,7 @@ describe "brew install" do it "installs formulae with debug symbols", :integration_test do setup_test_formula "testball1" - expect { brew "install", "testball1", "--debug-symbols", "-s" } + expect { brew "install", "testball1", "--debug-symbols", "--build-from-source" } .to output(%r{#{HOMEBREW_CELLAR}/testball1/0\.1}o).to_stdout .and not_to_output.to_stderr .and be_a_success From 5b1724ef33fe88c62e485646d45d0b33699d7720 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Mon, 1 Aug 2022 15:27:17 -0700 Subject: [PATCH 035/122] Fix rubocop warning by ignoring for `install_args` --- Library/Homebrew/.rubocop.yml | 2 +- Library/Homebrew/cmd/install.rb | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/.rubocop.yml b/Library/Homebrew/.rubocop.yml index f9590b7800..07b613ecb3 100644 --- a/Library/Homebrew/.rubocop.yml +++ b/Library/Homebrew/.rubocop.yml @@ -16,7 +16,7 @@ Lint/NestedMethodDefinition: Metrics/AbcSize: Max: 280 Metrics/BlockLength: - Max: 111 + Max: 106 Exclude: # TODO: extract more of the bottling logic - "dev-cmd/bottle.rb" diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 6844ef124b..18f8034488 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -20,6 +20,7 @@ module Homebrew module_function + # rubocop:disable Metrics/BlockLength sig { returns(CLI::Parser) } def install_args Homebrew::CLI::Parser.new do @@ -141,6 +142,7 @@ module Homebrew named_args [:formula, :cask], min: 1 end end + # rubocop:enable Metrics/BlockLength def install args = install_args.parse From fdf17f06b1c9a35e544653ed4c46ea0b9866e610 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Mon, 1 Aug 2022 16:30:00 -0700 Subject: [PATCH 036/122] Test for dSYM directory on Mac --- Library/Homebrew/test/cmd/install_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index cffebfc524..3840f00f1e 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -80,6 +80,7 @@ describe "brew install" do .to output(%r{#{HOMEBREW_CELLAR}/testball1/0\.1}o).to_stdout .and not_to_output.to_stderr .and be_a_success - expect(HOMEBREW_CELLAR/"testball1/0.1/foo/test").not_to be_a_file + expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file + expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM").to be_a_directory if OS.mac? end end From 676e3d4923c3c92c46f479c54e4cbf2ac0fb71c0 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Mon, 1 Aug 2022 18:30:14 -0700 Subject: [PATCH 037/122] Change name of option on mktemp From retain_in_sources to retain_in_cache --- Library/Homebrew/mktemp.rb | 12 ++++++------ Library/Homebrew/resource.rb | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index 92718d36f4..1e958159f2 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -13,8 +13,8 @@ class Mktemp def initialize(prefix, opts = {}) @prefix = prefix - @retain_in_sources = opts[:retain_in_sources] - @retain = opts[:retain] || @retain_in_sources + @retain_in_cache = opts[:retain_in_cache] + @retain = opts[:retain] || @retain_in_cache @quiet = false end @@ -30,8 +30,8 @@ class Mktemp end # True if the source files should be retained. - def retain_in_sources? - @retain_in_sources + def retain_in_cache? + @retain_in_cache end # Instructs this Mktemp to not emit messages when retention is triggered. @@ -46,7 +46,7 @@ class Mktemp end def run - if @retain_in_sources + if @retain_in_cache source_dir = "#{HOMEBREW_CACHE}/Sources/#{@prefix.tr "@", "AT"}" chmod_rm_rf(source_dir) # clear out previous (otherwise not sure what happens) FileUtils.mkdir_p(source_dir) @@ -79,7 +79,7 @@ class Mktemp end ensure if retain? && !@tmpdir.nil? && !@quiet - message = retain_in_sources? ? "Source files for debugging available at:" : "Temporary files retained at:" + message = retain_in_cache? ? "Source files for debugging available at:" : "Temporary files retained at:" ohai message, @tmpdir.to_s end end diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 2246ae42e4..b3a127bc59 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -236,7 +236,7 @@ class Resource protected def stage_resource(prefix, debug_symbols: false, &block) - Mktemp.new(prefix, retain_in_sources: debug_symbols).run(&block) + Mktemp.new(prefix, retain_in_cache: debug_symbols).run(&block) end private From 07e299760a0315d5af6c13dab172c2dba97d07c2 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 2 Aug 2022 08:33:40 -0700 Subject: [PATCH 038/122] mktemp: use "present?" instead of '!nil?" Co-authored-by: Mike McQuaid --- Library/Homebrew/mktemp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index 1e958159f2..b0a394f319 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -78,7 +78,7 @@ class Mktemp ignore_interrupts { chmod_rm_rf(tmpdir) } unless retain? end ensure - if retain? && !@tmpdir.nil? && !@quiet + if retain? && @tmpdir.present? && !@quiet message = retain_in_cache? ? "Source files for debugging available at:" : "Temporary files retained at:" ohai message, @tmpdir.to_s end From d35f2e76a77f53cf2c6f75a1beb36b92e54d595b Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 2 Aug 2022 08:39:02 -0700 Subject: [PATCH 039/122] Move Metrics/Blocklength disable to rubocop.yml --- Library/Homebrew/.rubocop.yml | 1 + Library/Homebrew/cmd/install.rb | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Library/Homebrew/.rubocop.yml b/Library/Homebrew/.rubocop.yml index 07b613ecb3..b5ba4ec572 100644 --- a/Library/Homebrew/.rubocop.yml +++ b/Library/Homebrew/.rubocop.yml @@ -21,6 +21,7 @@ Metrics/BlockLength: # TODO: extract more of the bottling logic - "dev-cmd/bottle.rb" - "test/**/*" + - "cmd/install.rb" Metrics/BlockNesting: Max: 5 Metrics/ClassLength: diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 18f8034488..6844ef124b 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -20,7 +20,6 @@ module Homebrew module_function - # rubocop:disable Metrics/BlockLength sig { returns(CLI::Parser) } def install_args Homebrew::CLI::Parser.new do @@ -142,7 +141,6 @@ module Homebrew named_args [:formula, :cask], min: 1 end end - # rubocop:enable Metrics/BlockLength def install args = install_args.parse From 88a69b3de20e0faa12f8dee2c2298617d76b55ec Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 2 Aug 2022 08:47:19 -0700 Subject: [PATCH 040/122] Restore previous style --- Library/Homebrew/build.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 0722cb060c..ec430e04ba 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -78,8 +78,13 @@ class Build ENV.keg_only_deps = keg_only_deps ENV.deps = formula_deps ENV.run_time_deps = run_time_deps - ENV.setup_build_environment(formula: formula, cc: args.cc, build_bottle: args.build_bottle?, - bottle_arch: args.bottle_arch, debug_symbols: args.debug_symbols?) + ENV.setup_build_environment( + formula: formula, + cc: args.cc, + build_bottle: args.build_bottle?, + bottle_arch: args.bottle_arch, + debug_symbols: args.debug_symbols?, + ) reqs.each do |req| req.modify_build_environment( env: args.env, cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch, @@ -87,8 +92,13 @@ class Build end deps.each(&:modify_build_environment) else - ENV.setup_build_environment(formula: formula, cc: args.cc, build_bottle: args.build_bottle?, - bottle_arch: args.bottle_arch, debug_symbols: args.debug_symbols?) + ENV.setup_build_environment( + formula: formula, + cc: args.cc, + build_bottle: args.build_bottle?, + bottle_arch: args.bottle_arch, + debug_symbols: args.debug_symbols?, + ) reqs.each do |req| req.modify_build_environment( env: args.env, cc: args.cc, build_bottle: args.build_bottle?, bottle_arch: args.bottle_arch, From 60831da3b82feb4f44e9b540e74eb929bb7b68c3 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 2 Aug 2022 08:50:37 -0700 Subject: [PATCH 041/122] DRY up formula prefix --- Library/Homebrew/mktemp.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index b0a394f319..e7b50a9740 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -46,13 +46,14 @@ class Mktemp end def run + prefix_name = @prefix.tr "@", "AT" if @retain_in_cache - source_dir = "#{HOMEBREW_CACHE}/Sources/#{@prefix.tr "@", "AT"}" + source_dir = "#{HOMEBREW_CACHE}/Sources/#{prefix_name}" chmod_rm_rf(source_dir) # clear out previous (otherwise not sure what happens) FileUtils.mkdir_p(source_dir) @tmpdir = Pathname.new(source_dir) else - @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP)) + @tmpdir = Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) end # Make sure files inside the temporary directory have the same group as the From 89c1d6812dac1c2c11d7c653cf5ec66302d80dd6 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Tue, 2 Aug 2022 08:53:15 -0700 Subject: [PATCH 042/122] Test sources are dropped in HOMEBREW_CACHE/Sources --- Library/Homebrew/test/cmd/install_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index 3840f00f1e..dbf9d6a358 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -82,5 +82,6 @@ describe "brew install" do .and be_a_success expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM").to be_a_directory if OS.mac? + expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory end end From fec5b4080a87cb99e1aff19d36afcbbec4f725cf Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Wed, 3 Aug 2022 20:54:16 +0800 Subject: [PATCH 043/122] linux/diagnostic: add check for versioned GCC linkage This complements my other two GCC-on-Linux PRs (#13631, #13633), however they are both reliant on bottles eventually being (re-)poured. Let's try to speed that up by returning an error message from `brew doctor` whenever a user has formulae installed that would benefit from a `brew reinstall`. --- .../Homebrew/extend/os/linux/diagnostic.rb | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Library/Homebrew/extend/os/linux/diagnostic.rb b/Library/Homebrew/extend/os/linux/diagnostic.rb index 35eb83ff10..d3d46cd79c 100644 --- a/Library/Homebrew/extend/os/linux/diagnostic.rb +++ b/Library/Homebrew/extend/os/linux/diagnostic.rb @@ -139,6 +139,34 @@ module Homebrew e.g. by using homebrew instead). EOS end + + def check_gcc_dependent_linkage + gcc_dependents = Formula.installed.select do |formula| + next false unless formula.tap&.core_tap? + + formula.recursive_dependencies.map(&:name).include? "gcc" + rescue TapFormulaUnavailableError + false + end + return if gcc_dependents.empty? + + badly_linked = gcc_dependents.select do |dependent| + keg = Keg.new(dependent.prefix) + keg.binary_executable_or_library_files.any? do |binary| + paths = binary.rpath.split(":") + versioned_linkage = paths.any? { |path| path.match?(%r{lib/gcc/\d+$}) } + unversioned_linkage = paths.any? { |path| path.match?(%r{lib/gcc/current$}) } + + versioned_linkage && !unversioned_linkage + end + end + return if badly_linked.empty? + + inject_file_list badly_linked, <<~EOS + Formulae which link to GCC through a versioned path were found. These formulae + are prone to breaking when GCC is updated. You should `brew reinstall` these formulae: + EOS + end end end end From 4302af67b7e4e772342449fb888bcf4f3595d60c Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Thu, 4 Aug 2022 22:09:40 +0800 Subject: [PATCH 044/122] formula_auditor: audit for Linux-only dependencies on GCC As we've seen, allowing Linux-only dependencies on GCC results in its dependency tree growing out of control to the point of being extremely painful to maintain. Let's stop this situation from getting worse by: - failing a `--strict` audit when there is a Linux-only GCC dependency. This also prevents new formulae from having such a dependency. - failing any audit whenever a formula that did not previously have a Linux-only GCC dependency picks one up If a future formula update causes a formula to fail to build on Linux because it needs a newer GCC when it previously did not, then we should not bottle it. We can bottle this hypothetical formula when our bottling distribution includes a new enough version of GCC. --- Library/Homebrew/formula_auditor.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index 2cc9ad690e..9d51183606 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -332,6 +332,23 @@ module Homebrew end return unless @core_tap + + # Prevent formulae from declaring Linux-only dependencies on GCC, + # or else its dependency tree grows out of control. + on_linux_deps = formula.to_hash_with_variations.dig("variations", :x86_64_linux, "dependencies") + if on_linux_deps&.include? "gcc" + bad_gcc_dep = @strict || begin + fv = FormulaVersions.new(formula) + prev_on_linux_deps = fv.formula_at_revision("origin/HEAD") do |prev_f| + prev_f.to_hash_with_variations.dig("variations", :x86_64_linux, "dependencies") + end + + prev_on_linux_deps&.exclude? "gcc" + end + + problem "Formulae in homebrew/core should not have a Linux-only dependency on GCC." if bad_gcc_dep + end + return if formula.tap&.audit_exception :versioned_dependencies_conflicts_allowlist, formula.name # The number of conflicts on Linux is absurd. From 2ce58f9fcba5a9c214d9f56c6101b1c5bab3a304 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Thu, 4 Aug 2022 08:52:49 -0700 Subject: [PATCH 045/122] fix removing of previous source --- Library/Homebrew/mktemp.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index e7b50a9740..0127327189 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -47,11 +47,11 @@ class Mktemp def run prefix_name = @prefix.tr "@", "AT" - if @retain_in_cache + if retain_in_cache? source_dir = "#{HOMEBREW_CACHE}/Sources/#{prefix_name}" - chmod_rm_rf(source_dir) # clear out previous (otherwise not sure what happens) - FileUtils.mkdir_p(source_dir) @tmpdir = Pathname.new(source_dir) + chmod_rm_rf(@tmpdir) # clear out previous (otherwise not sure what happens) + FileUtils.mkdir_p(source_dir) else @tmpdir = Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) end From 0b554a41387e164b8aae668bc9eb2e459106d5b4 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Thu, 4 Aug 2022 08:53:07 -0700 Subject: [PATCH 046/122] Style --- Library/Homebrew/extend/os/mac/extend/ENV/shared.rb | 7 +++---- Library/Homebrew/extend/os/mac/extend/ENV/super.rb | 6 ++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb index 6ee43c0bb8..e2d47c2e76 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/shared.rb @@ -6,10 +6,9 @@ module SharedEnvExtension def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, debug_symbols: false) - generic_shared_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, - testing_formula: testing_formula, debug_symbols: debug_symbols - ) + generic_shared_setup_build_environment(formula: formula, cc: cc, build_bottle: build_bottle, + bottle_arch: bottle_arch, testing_formula: testing_formula, + debug_symbols: debug_symbols) # Normalise the system Perl version used, where multiple may be available self["VERSIONER_PERL_VERSION"] = MacOS.preferred_perl_version diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb index 4c7d767fbb..af0482205c 100644 --- a/Library/Homebrew/extend/os/mac/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/mac/extend/ENV/super.rb @@ -101,10 +101,8 @@ module Superenv MacOS::CLT::PKG_PATH end - generic_setup_build_environment( - formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, - testing_formula: testing_formula, debug_symbols: debug_symbols - ) + generic_setup_build_environment(formula: formula, cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + testing_formula: testing_formula, debug_symbols: debug_symbols) # Filter out symbols known not to be defined since GNU Autotools can't # reliably figure this out with Xcode 8 and above. From 6fbadb35e71fa9e37e11457b5efe3954163fcf5d Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Fri, 5 Aug 2022 16:06:22 -0700 Subject: [PATCH 047/122] Style fix Co-authored-by: Mike McQuaid --- Library/Homebrew/extend/ENV.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb index 54b293ee87..391a241305 100644 --- a/Library/Homebrew/extend/ENV.rb +++ b/Library/Homebrew/extend/ENV.rb @@ -46,7 +46,7 @@ module EnvActivation tmp_env = to_hash.dup.extend(EnvActivation) T.cast(tmp_env, EnvActivation).activate_extensions!(env: env) T.cast(tmp_env, T.any(Superenv, Stdenv)) - .setup_build_environment(cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, + .setup_build_environment(cc: cc, build_bottle: build_bottle, bottle_arch: bottle_arch, debug_symbols: debug_symbols) replace(tmp_env) From 936d363c44be481bc6be207decac04778844d31a Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Fri, 5 Aug 2022 16:12:39 -0700 Subject: [PATCH 048/122] Style Co-authored-by: Mike McQuaid --- Library/Homebrew/mktemp.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index 0127327189..ea3e767bdd 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -47,13 +47,13 @@ class Mktemp def run prefix_name = @prefix.tr "@", "AT" - if retain_in_cache? - source_dir = "#{HOMEBREW_CACHE}/Sources/#{prefix_name}" - @tmpdir = Pathname.new(source_dir) - chmod_rm_rf(@tmpdir) # clear out previous (otherwise not sure what happens) - FileUtils.mkdir_p(source_dir) + @tmpdir = if retain_in_cache? + tmpdir = HOMEBREW_CACHE/"Sources/#{prefix_name}" + chmod_rm_rf(tmpdir) # clear out previous staging directory + tmpdir.parent.mkpath + tmpdir else - @tmpdir = Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) + Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) end # Make sure files inside the temporary directory have the same group as the From 45d8f3789f3710e31a3bf2777a282f1671b02213 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Thu, 4 Aug 2022 18:11:35 -0700 Subject: [PATCH 049/122] Test of set_debug_symbols --- Library/Homebrew/test/ENV_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Library/Homebrew/test/ENV_spec.rb b/Library/Homebrew/test/ENV_spec.rb index c09a50bca6..af0b71261f 100644 --- a/Library/Homebrew/test/ENV_spec.rb +++ b/Library/Homebrew/test/ENV_spec.rb @@ -205,5 +205,12 @@ describe "ENV" do expect(env["HOMEBREW_CCCFG"]).to include("g") end end + + describe "#set_debug_symbols" do + it "sets the debug symbols flag" do + env.set_debug_symbols + expect(env["HOMEBREW_CCCFG"]).to include("D") + end + end end end From 47bf7b8a8a08bbaf9d77d5238de961dce14b02af Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Fri, 5 Aug 2022 16:18:20 -0700 Subject: [PATCH 050/122] Fix source cache directory creation --- Library/Homebrew/mktemp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index ea3e767bdd..fcc0301e6e 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -50,7 +50,7 @@ class Mktemp @tmpdir = if retain_in_cache? tmpdir = HOMEBREW_CACHE/"Sources/#{prefix_name}" chmod_rm_rf(tmpdir) # clear out previous staging directory - tmpdir.parent.mkpath + tmpdir.mkpath tmpdir else Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) From 683bcd92b04f8b13b75570c23bf1f6904db12f16 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Fri, 5 Aug 2022 16:54:32 -0700 Subject: [PATCH 051/122] Attempted linux test --- Library/Homebrew/test/cmd/install_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index dbf9d6a358..e9b9949af0 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -82,6 +82,10 @@ describe "brew install" do .and be_a_success expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM").to be_a_directory if OS.mac? + if OS.linux? + expect { system_command("objdump", "-h", "${HOMEBREW_CELLAR}/testball1/0.1/bin/test") } + .to output(%r{\.debug}).to_stdout + end expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory end end From d6067418c1e2e2c4872d0318acfc8305f9eb5884 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Fri, 5 Aug 2022 17:00:54 -0700 Subject: [PATCH 052/122] Fix tmpdir take 2 --- Library/Homebrew/mktemp.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index fcc0301e6e..a691fcecc0 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -48,10 +48,10 @@ class Mktemp def run prefix_name = @prefix.tr "@", "AT" @tmpdir = if retain_in_cache? - tmpdir = HOMEBREW_CACHE/"Sources/#{prefix_name}" + tmp_dir = HOMEBREW_CACHE/"Sources/#{prefix_name}" chmod_rm_rf(tmpdir) # clear out previous staging directory - tmpdir.mkpath - tmpdir + tmp_dir.mkpath + tmp_dir else Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) end @@ -68,15 +68,15 @@ class Mktemp Process.gid end begin - chown(nil, group_id, tmpdir) + chown(nil, group_id, @tmpdir) rescue Errno::EPERM - opoo "Failed setting group \"#{Etc.getgrgid(group_id).name}\" on #{tmpdir}" + opoo "Failed setting group \"#{Etc.getgrgid(group_id).name}\" on #{@tmpdir}" end begin Dir.chdir(tmpdir) { yield self } ensure - ignore_interrupts { chmod_rm_rf(tmpdir) } unless retain? + ignore_interrupts { chmod_rm_rf(@tmpdir) } unless retain? end ensure if retain? && @tmpdir.present? && !@quiet From f930dd58a04c82a510ed8942cef9129c8933fe1d Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Fri, 5 Aug 2022 17:02:10 -0700 Subject: [PATCH 053/122] Fix style --- Library/Homebrew/test/cmd/install_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index e9b9949af0..2a13c187bd 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -84,7 +84,7 @@ describe "brew install" do expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM").to be_a_directory if OS.mac? if OS.linux? expect { system_command("objdump", "-h", "${HOMEBREW_CELLAR}/testball1/0.1/bin/test") } - .to output(%r{\.debug}).to_stdout + .to output(/\.debug/).to_stdout end expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory end From 19a66e75c445decd66bf16f1778e9e880fad1460 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sat, 6 Aug 2022 10:06:32 -0700 Subject: [PATCH 054/122] Second try at objdump call for linux --- Library/Homebrew/test/cmd/install_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index 2a13c187bd..82cdcddacc 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -83,7 +83,7 @@ describe "brew install" do expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM").to be_a_directory if OS.mac? if OS.linux? - expect { system_command("objdump", "-h", "${HOMEBREW_CELLAR}/testball1/0.1/bin/test") } + expect { system_command("objdump", args: ["-h", "${HOMEBREW_CELLAR}/testball1/0.1/bin/test"]) } .to output(/\.debug/).to_stdout end expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory From e4486019641ab43268d473ed4c8ec2e95f49f483 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 15:08:17 +0200 Subject: [PATCH 055/122] rename `cmd` to `subcmd` --- Library/Homebrew/formula.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index cf1ad0deb1..44ca74df61 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1631,18 +1631,18 @@ class Formula # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. # @param executable [Pathname] the executable to use for generating the completion scripts. Defaults to the # executable with the name of the formula. - # @param cmd [String] the command to pass to the `binary`. Defaults to 'completion'. + # @param subcmd [String] the command to pass to the `executable`. Defaults to 'completion'. # @param shell_parameter_format [String]/[Symbol] specify how `shells` should each be passed # to the `executable`. Takes either a String representing a prefix, or one of [:flag, :arg, :none]. # Defaults to plainly passing the shell. sig { - params(base_name: String, shells: T::Array[Symbol], executable: Pathname, cmd: String, + params(base_name: String, shells: T::Array[Symbol], executable: Pathname, subcmd: String, shell_parameter_format: T.nilable(T.any(Symbol, String))).void } def generate_completions_from_executable(base_name: name, shells: [:bash, :zsh, :fish], executable: bin/base_name, - cmd: "completion", + subcmd: "completion", shell_parameter_format: nil) completion_script_path_map = { bash: bash_completion/base_name, @@ -1665,7 +1665,7 @@ class Formula end script_path.dirname.mkpath - script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, executable, cmd, shell_parameter) + script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, executable, subcmd, shell_parameter) end end From 55a26ce4cc0045116aa5d397b55d487e8118b7db Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 15:11:06 +0200 Subject: [PATCH 056/122] make `executable` and `subcmd` mandatory args --- Library/Homebrew/formula.rb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 44ca74df61..4a25fa042e 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1627,22 +1627,21 @@ class Formula # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # + # @param executable [Pathname] the executable to use for generating the completion scripts. + # @param subcmd [String] the command to pass to the `executable`. # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. - # @param executable [Pathname] the executable to use for generating the completion scripts. Defaults to the - # executable with the name of the formula. - # @param subcmd [String] the command to pass to the `executable`. Defaults to 'completion'. # @param shell_parameter_format [String]/[Symbol] specify how `shells` should each be passed # to the `executable`. Takes either a String representing a prefix, or one of [:flag, :arg, :none]. # Defaults to plainly passing the shell. sig { - params(base_name: String, shells: T::Array[Symbol], executable: Pathname, subcmd: String, + params(executable: Pathname, subcmd: String, base_name: String, shells: T::Array[Symbol], shell_parameter_format: T.nilable(T.any(Symbol, String))).void } - def generate_completions_from_executable(base_name: name, + def generate_completions_from_executable(executable, + subcmd, + base_name: name, shells: [:bash, :zsh, :fish], - executable: bin/base_name, - subcmd: "completion", shell_parameter_format: nil) completion_script_path_map = { bash: bash_completion/base_name, From 08bf179f7ac68ea6a112c1f8aebe9f6e440f8239 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 15:14:06 +0200 Subject: [PATCH 057/122] fix documentation --- Library/Homebrew/formula.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 4a25fa042e..a50da9a0f4 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1628,10 +1628,10 @@ class Formula # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # # @param executable [Pathname] the executable to use for generating the completion scripts. - # @param subcmd [String] the command to pass to the `executable`. + # @param subcmd [String] the subcommand to pass to the `executable`. # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. - # @param shell_parameter_format [String]/[Symbol] specify how `shells` should each be passed + # @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed # to the `executable`. Takes either a String representing a prefix, or one of [:flag, :arg, :none]. # Defaults to plainly passing the shell. sig { From 3786887146e8bf5bed920947d660be5c38d913e8 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 15:40:54 +0200 Subject: [PATCH 058/122] add examples --- Library/Homebrew/formula.rb | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index a50da9a0f4..6cfe0e44ba 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1634,6 +1634,48 @@ class Formula # @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed # to the `executable`. Takes either a String representing a prefix, or one of [:flag, :arg, :none]. # Defaults to plainly passing the shell. + # + # @example Using default values for optional arguments + # generate_completions_from_executable(bin/"foo", "completions") + # translates to + # + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "bash") + # + # (zsh_completion/"_foo").write Utils.safe_popen_read({ "SHELL" => "zsh" }, bin/"foo", "completions", "zsh") + # + # (fish_completion/"foo.fish").write Utils.safe_popen_read({ "SHELL" => "fish" }, bin/"foo", "completions", "fish") + # + # @example Selecting shells and using a different base_name + # generate_completions_from_executable(bin/"foo", "completions", shells: [:bash, :zsh], base_name: "bar") + # translates to + # + # (bash_completion/"bar").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "bash") + # + # (zsh_completion/"_bar").write Utils.safe_popen_read({ "SHELL" => "zsh" }, bin/"foo", "completions", "zsh") + # + # @example Using predefined shell_parameter_format :flag + # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :flag, shells: [:bash]) + # translates to + # + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--bash") + # + # @example Using predefined shell_parameter_format :arg + # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :arg, shells: [:bash]) + # translates to + # + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--shell=bash") + # + # @example Using predefined shell_parameter_format :none + # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :none, shells: [:bash]) + # translates to + # + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions") + # + # @example Using custom shell_parameter_format + # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: "--selected-shell=", shells: [:bash]) + # translates to + # + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--selected-shell=bash") sig { params(executable: Pathname, subcmd: String, base_name: String, shells: T::Array[Symbol], shell_parameter_format: T.nilable(T.any(Symbol, String))).void From 64d368aeb93323fbf51790d306d0729cc29c5a8f Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 10 Aug 2022 15:15:21 +0100 Subject: [PATCH 059/122] missing_formula: message for postgres rename. PostgreSQL is being renamed to always be a versioned formula so handle when people type `brew install postgresql`. --- Library/Homebrew/missing_formula.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Library/Homebrew/missing_formula.rb b/Library/Homebrew/missing_formula.rb index c2bfa50f6e..a3736fede8 100644 --- a/Library/Homebrew/missing_formula.rb +++ b/Library/Homebrew/missing_formula.rb @@ -89,6 +89,12 @@ module Homebrew uconv is part of the icu4c formula: brew install icu4c EOS + when "postgresql", "postgres" then <<~EOS + postgresql breaks existing databases on upgrade without human intervention. + + See a more specific version to install with: + brew formulae | grep postgresql@ + EOS end end alias generic_disallowed_reason disallowed_reason From 999623b45d0661ba5eb15ecbfd31709e91955195 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Wed, 10 Aug 2022 22:51:44 +0800 Subject: [PATCH 060/122] ENV/super: add Python's `libexec/"bin"` directory when applicable When Homebrew/homebrew-core#107517 is merged, builds will no longer be able to find `python@3.9` as `python3`. This is also what is likely to happen to `python@3.10` when we add a `python@3.11`. This is likely to break many builds, so let's make sure they can keep finding a `python3` for formulae that don't have a dependency on the latest Python3. This is arguably something we should've done earlier: it also means that builds that go looking for an unversioned `python` end up finding our Python3 (whenever present in the build environment) instead of, say, `/usr/bin/python` which is typically Python2. --- Library/Homebrew/extend/ENV/super.rb | 4 +++- Library/Homebrew/extend/os/linux/extend/ENV/super.rb | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index c89a4604c5..2e996d46db 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -125,8 +125,10 @@ module Superenv sig { returns(T::Array[Pathname]) } def homebrew_extra_paths - [] + deps.select { |d| d.name.match? Version.formula_optionally_versioned_regex(:python) } + .map { |d| d.opt_libexec/"bin" } end + alias generic_homebrew_extra_paths homebrew_extra_paths sig { returns(T.nilable(PATH)) } def determine_path diff --git a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb index 8dd6f95c8d..1281a12038 100644 --- a/Library/Homebrew/extend/os/linux/extend/ENV/super.rb +++ b/Library/Homebrew/extend/os/linux/extend/ENV/super.rb @@ -27,7 +27,7 @@ module Superenv end def homebrew_extra_paths - paths = [] + paths = generic_homebrew_extra_paths paths += %w[binutils make].map do |f| bin = Formulary.factory(f).opt_bin bin if bin.directory? From 074bc3c24760cfa55080701347a0628a9c82d34b Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 18:00:44 +0200 Subject: [PATCH 061/122] fix style --- Library/Homebrew/formula.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 6cfe0e44ba..672793ffb8 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1663,7 +1663,8 @@ class Formula # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :arg, shells: [:bash]) # translates to # - # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--shell=bash") + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", + # "completions", "--shell=bash") # # @example Using predefined shell_parameter_format :none # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: :none, shells: [:bash]) @@ -1672,10 +1673,12 @@ class Formula # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions") # # @example Using custom shell_parameter_format - # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: "--selected-shell=", shells: [:bash]) + # generate_completions_from_executable(bin/"foo", "completions", shell_parameter_format: "--selected-shell=", + # shells: [:bash]) # translates to # - # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", "completions", "--selected-shell=bash") + # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", + # "completions", "--selected-shell=bash") sig { params(executable: Pathname, subcmd: String, base_name: String, shells: T::Array[Symbol], shell_parameter_format: T.nilable(T.any(Symbol, String))).void From 00471be51432248c1f008f414f0e826704522d99 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 19:07:19 +0200 Subject: [PATCH 062/122] add test --- Library/Homebrew/test/formula_spec.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index f9e3f93116..9d7df566cb 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -1693,4 +1693,28 @@ describe Formula do expect(f.test).to eq(2) end end + + describe "#generate_completions_from_executable" do + let(:f) do + Class.new(Testball) do + def install + bin.mkpath + (bin/"foo").write <<-EOF + echo completion + EOF + + FileUtils.chmod "+x", bin/"foo" + + generate_completions_from_executable(bin/"foo", "test") + end + end.new + end + + it "generates completion scripts" do + f.brew { f.install } + expect(f.bash_completion/"foo").to be_a_file + expect(f.zsh_completion/"_foo").to be_a_file + expect(f.fish_completion/"foo.fish").to be_a_file + end + end end From d819c949b4f85ed6a6642c3ae6c655d0b7615141 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 20:21:05 +0200 Subject: [PATCH 063/122] fix test --- Library/Homebrew/test/formula_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index 9b9f735215..668edab59c 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -2015,9 +2015,9 @@ describe Formula do it "generates completion scripts" do f.brew { f.install } - expect(f.bash_completion/"foo").to be_a_file - expect(f.zsh_completion/"_foo").to be_a_file - expect(f.fish_completion/"foo.fish").to be_a_file + expect(f.bash_completion/"testball").to be_a_file + expect(f.zsh_completion/"_testball").to be_a_file + expect(f.fish_completion/"testball.fish").to be_a_file end end end From a666b1bce8733472f2253bc56183dda7bbe376dd Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Wed, 10 Aug 2022 22:31:43 +0200 Subject: [PATCH 064/122] fix style --- Library/Homebrew/test/formula_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index 668edab59c..bada984de5 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -1996,7 +1996,7 @@ describe Formula do }.to raise_error("ignore_missing_libraries is available on Linux only") end end - + describe "#generate_completions_from_executable" do let(:f) do Class.new(Testball) do From ec132ff851ffe67bba358251ff3f07365a833710 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Fri, 5 Aug 2022 15:35:25 -0400 Subject: [PATCH 065/122] Add and adjust cask rubocops to handle variables --- Library/Homebrew/rubocops/cask/ast/stanza.rb | 10 +- .../rubocops/cask/constants/stanza.rb | 1 + Library/Homebrew/rubocops/cask/extend/node.rb | 5 +- Library/Homebrew/rubocops/cask/variables.rb | 76 ++++++ Library/Homebrew/rubocops/rubocop-cask.rb | 1 + .../rubocops/cask/stanza_grouping_spec.rb | 222 ++++++++++++++++ .../test/rubocops/cask/stanza_order_spec.rb | 168 ++++++++++++ .../test/rubocops/cask/variables_spec.rb | 251 ++++++++++++++++++ 8 files changed, 731 insertions(+), 3 deletions(-) create mode 100644 Library/Homebrew/rubocops/cask/variables.rb create mode 100644 Library/Homebrew/test/rubocops/cask/variables_spec.rb diff --git a/Library/Homebrew/rubocops/cask/ast/stanza.rb b/Library/Homebrew/rubocops/cask/ast/stanza.rb index e17e849e74..2088a43655 100644 --- a/Library/Homebrew/rubocops/cask/ast/stanza.rb +++ b/Library/Homebrew/rubocops/cask/ast/stanza.rb @@ -21,11 +21,11 @@ module RuboCop alias stanza_node method_node - def_delegator :stanza_node, :method_name, :stanza_name def_delegator :stanza_node, :parent, :parent_node + def_delegator :stanza_node, :arch_variable? def source_range - stanza_node.expression + stanza_node.location_expression end def source_range_with_comments @@ -38,6 +38,12 @@ module RuboCop def_delegator :source_range_with_comments, :source, :source_with_comments + def stanza_name + return :on_arch_conditional if arch_variable? + + stanza_node.method_name + end + def stanza_group Constants::STANZA_GROUP_HASH[stanza_name] end diff --git a/Library/Homebrew/rubocops/cask/constants/stanza.rb b/Library/Homebrew/rubocops/cask/constants/stanza.rb index 93a9b67d55..5294a1c45f 100644 --- a/Library/Homebrew/rubocops/cask/constants/stanza.rb +++ b/Library/Homebrew/rubocops/cask/constants/stanza.rb @@ -6,6 +6,7 @@ module RuboCop # Constants available globally for use in all cask cops. module Constants STANZA_GROUPS = [ + [:arch, :on_arch_conditional], [:version, :sha256], [:language], [:url, :appcast, :name, :desc, :homepage], diff --git a/Library/Homebrew/rubocops/cask/extend/node.rb b/Library/Homebrew/rubocops/cask/extend/node.rb index 906518db49..c0c4f5f993 100644 --- a/Library/Homebrew/rubocops/cask/extend/node.rb +++ b/Library/Homebrew/rubocops/cask/extend/node.rb @@ -15,8 +15,11 @@ module RuboCop def_node_matcher :val_node, "{(pair _ $_) (hash (pair _ $_) ...)}" def_node_matcher :cask_block?, "(block (send nil? :cask _) args ...)" + def_node_matcher :arch_variable?, "(lvasgn _ (send nil? :on_arch_conditional ...))" def stanza? + return true if arch_variable? + (send_type? || block_type?) && STANZA_ORDER.include?(method_name) end @@ -24,7 +27,7 @@ module RuboCop loc.is_a?(Parser::Source::Map::Heredoc) end - def expression + def location_expression base_expression = loc.expression descendants.select(&:heredoc?).reduce(base_expression) do |expr, node| expr.join(node.loc.heredoc_end) diff --git a/Library/Homebrew/rubocops/cask/variables.rb b/Library/Homebrew/rubocops/cask/variables.rb new file mode 100644 index 0000000000..cf434e1b65 --- /dev/null +++ b/Library/Homebrew/rubocops/cask/variables.rb @@ -0,0 +1,76 @@ +# typed: false +# frozen_string_literal: true + +require "forwardable" + +module RuboCop + module Cop + module Cask + # This cop audits variables in casks. + # + # @example + # # bad + # cask do + # arch = Hardware::CPU.intel? ? "darwin" : "darwin-arm64" + # end + # + # # good + # cask 'foo' do + # arch arm: "darwin-arm64", intel: "darwin" + # end + class Variables < Base + extend Forwardable + extend AutoCorrector + include CaskHelp + + def on_cask(cask_block) + @cask_block = cask_block + add_offenses + end + + private + + def_delegator :@cask_block, :cask_node + + def add_offenses + variable_assignment(cask_node) do |node, var_name, arch_condition, true_node, false_node| + arm_node, intel_node = if arch_condition == :arm? + [true_node, false_node] + else + [false_node, true_node] + end + + replacement_string = if var_name == :arch + "arch " + else + "#{var_name} = on_arch_conditional " + end + replacement_parameters = [] + replacement_parameters << "arm: #{arm_node.source}" unless blank_node?(arm_node) + replacement_parameters << "intel: #{intel_node.source}" unless blank_node?(intel_node) + replacement_string += replacement_parameters.join(", ") + + add_offense(node, message: "Use `#{replacement_string}` instead of `#{node.source}`") do |corrector| + corrector.replace(node, replacement_string) + end + end + end + + def blank_node?(node) + case node.type + when :str + node.value.empty? + when :nil + true + else + false + end + end + + def_node_search :variable_assignment, <<~PATTERN + $(lvasgn $_ (if (send (const (const nil? :Hardware) :CPU) ${:arm? :intel?}) $_ $_)) + PATTERN + end + end + end +end diff --git a/Library/Homebrew/rubocops/rubocop-cask.rb b/Library/Homebrew/rubocops/rubocop-cask.rb index 63b02b0e19..673b6a5231 100644 --- a/Library/Homebrew/rubocops/rubocop-cask.rb +++ b/Library/Homebrew/rubocops/rubocop-cask.rb @@ -19,3 +19,4 @@ require_relative "cask/no_dsl_version" require_relative "cask/stanza_order" require_relative "cask/stanza_grouping" require_relative "cask/url_legacy_comma_separators" +require_relative "cask/variables" diff --git a/Library/Homebrew/test/rubocops/cask/stanza_grouping_spec.rb b/Library/Homebrew/test/rubocops/cask/stanza_grouping_spec.rb index 3cce050983..4d806bdef7 100644 --- a/Library/Homebrew/test/rubocops/cask/stanza_grouping_spec.rb +++ b/Library/Homebrew/test/rubocops/cask/stanza_grouping_spec.rb @@ -41,6 +41,22 @@ describe RuboCop::Cop::Cask::StanzaGrouping do include_examples "does not report any offenses" end + context "when no stanzas or variable assignments are incorrectly grouped" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + + version :latest + sha256 :no_check + end + CASK + end + + include_examples "does not report any offenses" + end + context "when one stanza is incorrectly grouped" do let(:source) do <<-CASK.undent @@ -74,6 +90,78 @@ describe RuboCop::Cop::Cask::StanzaGrouping do include_examples "autocorrects source" end + context "when the arch stanza is incorrectly grouped" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + version :latest + sha256 :no_check + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + + version :latest + sha256 :no_check + end + CASK + end + let(:expected_offenses) do + [{ + message: missing_line_msg, + severity: :convention, + line: 3, + column: 0, + source: " version :latest", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when one variable assignment is incorrectly grouped" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + version :latest + sha256 :no_check + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + + version :latest + sha256 :no_check + end + CASK + end + let(:expected_offenses) do + [{ + message: missing_line_msg, + severity: :convention, + line: 4, + column: 0, + source: " version :latest", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + context "when many stanzas are incorrectly grouped" do let(:source) do <<-CASK.undent @@ -142,6 +230,94 @@ describe RuboCop::Cop::Cask::StanzaGrouping do include_examples "autocorrects source" end + context "when many stanzas and variable assignments are incorrectly grouped" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + + platform = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + version :latest + sha256 :no_check + url 'https://foo.brew.sh/foo.zip' + + name 'Foo' + + homepage 'https://foo.brew.sh' + + app 'Foo.app' + uninstall :quit => 'com.example.foo', + :kext => 'com.example.foo.kextextension' + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + platform = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + + version :latest + sha256 :no_check + + url 'https://foo.brew.sh/foo.zip' + name 'Foo' + homepage 'https://foo.brew.sh' + + app 'Foo.app' + + uninstall :quit => 'com.example.foo', + :kext => 'com.example.foo.kextextension' + end + CASK + end + let(:expected_offenses) do + [{ + message: extra_line_msg, + severity: :convention, + line: 4, + column: 0, + source: "\n", + }, { + message: missing_line_msg, + severity: :convention, + line: 6, + column: 0, + source: " version :latest", + }, { + message: missing_line_msg, + severity: :convention, + line: 8, + column: 0, + source: " url 'https://foo.brew.sh/foo.zip'", + }, { + message: extra_line_msg, + severity: :convention, + line: 9, + column: 0, + source: "\n", + }, { + message: extra_line_msg, + severity: :convention, + line: 11, + column: 0, + source: "\n", + }, { + message: missing_line_msg, + severity: :convention, + line: 15, + column: 0, + source: " uninstall :quit => 'com.example.foo',", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + context "when caveats stanza is incorrectly grouped" do let(:source) do format(<<-CASK.undent, caveats: caveats.strip) @@ -284,6 +460,52 @@ describe RuboCop::Cop::Cask::StanzaGrouping do include_examples "autocorrects source" end + context "when a stanza has a comment and there is a variable assignment" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + # comment with an empty line between + version :latest + sha256 :no_check + + # comment directly above + postflight do + puts 'We have liftoff!' + end + url 'https://foo.brew.sh/foo.zip' + name 'Foo' + app 'Foo.app' + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + + # comment with an empty line between + version :latest + sha256 :no_check + + # comment directly above + postflight do + puts 'We have liftoff!' + end + + url 'https://foo.brew.sh/foo.zip' + name 'Foo' + + app 'Foo.app' + end + CASK + end + + include_examples "autocorrects source" + end + # TODO: detect incorrectly grouped stanzas in nested expressions context "when stanzas are nested in a conditional expression" do let(:source) do diff --git a/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb b/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb index c5cc7594a2..8e512193a6 100644 --- a/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb +++ b/Library/Homebrew/test/rubocops/cask/stanza_order_spec.rb @@ -25,8 +25,11 @@ describe RuboCop::Cop::Cask::StanzaOrder do let(:source) do <<-CASK.undent cask 'foo' do + arch arm: "arm", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" version :latest sha256 :no_check + foo = "bar" end CASK end @@ -72,6 +75,136 @@ describe RuboCop::Cop::Cask::StanzaOrder do include_examples "autocorrects source" end + context "when the arch stanza is out of order" do + let(:source) do + <<-CASK.undent + cask 'foo' do + version :latest + sha256 :no_check + arch arm: "arm", intel: "x86_64" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm", intel: "x86_64" + version :latest + sha256 :no_check + end + CASK + end + let(:expected_offenses) do + [{ + message: "`version` stanza out of order", + severity: :convention, + line: 2, + column: 2, + source: "version :latest", + }, { + message: "`sha256` stanza out of order", + severity: :convention, + line: 3, + column: 2, + source: "sha256 :no_check", + }, { + message: "`arch` stanza out of order", + severity: :convention, + line: 4, + column: 2, + source: 'arch arm: "arm", intel: "x86_64"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when an arch variable assignment is out of order" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm", intel: "x86_64" + sha256 :no_check + version :latest + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + version :latest + sha256 :no_check + end + CASK + end + let(:expected_offenses) do + [{ + message: "`sha256` stanza out of order", + severity: :convention, + line: 3, + column: 2, + source: "sha256 :no_check", + }, { + message: "`on_arch_conditional` stanza out of order", + severity: :convention, + line: 5, + column: 2, + source: 'folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when an arch variable assignment is above the arch stanza" do + let(:source) do + <<-CASK.undent + cask 'foo' do + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + arch arm: "arm", intel: "x86_64" + version :latest + sha256 :no_check + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm", intel: "x86_64" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + version :latest + sha256 :no_check + end + CASK + end + let(:expected_offenses) do + [{ + message: "`on_arch_conditional` stanza out of order", + severity: :convention, + line: 2, + column: 2, + source: 'folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin"', + }, { + message: "`arch` stanza out of order", + severity: :convention, + line: 3, + column: 2, + source: 'arch arm: "arm", intel: "x86_64"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + context "when many stanzas are out of order" do let(:source) do <<-CASK.undent @@ -197,6 +330,41 @@ describe RuboCop::Cop::Cask::StanzaOrder do include_examples "autocorrects source" end + context "when a variable assignment is out of order with a comment" do + let(:source) do + <<-CASK.undent + cask 'foo' do + version :latest + sha256 :no_check + # comment with an empty line between + + # comment directly above + postflight do + puts 'We have liftoff!' + end + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" # comment on same line + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" # comment on same line + version :latest + sha256 :no_check + # comment with an empty line between + + # comment directly above + postflight do + puts 'We have liftoff!' + end + end + CASK + end + + include_examples "autocorrects source" + end + context "when the caveats stanza is out of order" do let(:source) do format(<<-CASK.undent, caveats: caveats.strip) diff --git a/Library/Homebrew/test/rubocops/cask/variables_spec.rb b/Library/Homebrew/test/rubocops/cask/variables_spec.rb new file mode 100644 index 0000000000..45fd184025 --- /dev/null +++ b/Library/Homebrew/test/rubocops/cask/variables_spec.rb @@ -0,0 +1,251 @@ +# typed: false +# frozen_string_literal: true + +require "rubocops/rubocop-cask" +require "test/rubocops/cask/shared_examples/cask_cop" + +describe RuboCop::Cop::Cask::Variables do + include CaskCop + + subject(:cop) { described_class.new } + + context "when there are no variables" do + let(:source) do + <<-CASK.undent + cask "foo" do + version :latest + end + CASK + end + + include_examples "does not report any offenses" + end + + context "when there is an arch stanza" do + let(:source) do + <<-CASK.undent + cask "foo" do + arch arm: "darwin-arm64", intel: "darwin" + end + CASK + end + + include_examples "does not report any offenses" + end + + context "when there is a non-arch variable that uses the arch conditional" do + let(:source) do + <<-CASK.undent + cask "foo" do + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + end + CASK + end + + include_examples "does not report any offenses" + end + + context "when there is an arch variable" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch = Hardware::CPU.intel? ? "darwin" : "darwin-arm64" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "darwin-arm64", intel: "darwin" + end + CASK + end + let(:expected_offenses) do + [{ + message: 'Use `arch arm: "darwin-arm64", intel: "darwin"` instead of ' \ + '`arch = Hardware::CPU.intel? ? "darwin" : "darwin-arm64"`', + severity: :convention, + line: 2, + column: 2, + source: 'arch = Hardware::CPU.intel? ? "darwin" : "darwin-arm64"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there is an arch with an empty string" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch = Hardware::CPU.intel? ? "" : "arm64" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "arm64" + end + CASK + end + let(:expected_offenses) do + [{ + message: 'Use `arch arm: "arm64"` instead of ' \ + '`arch = Hardware::CPU.intel? ? "" : "arm64"`', + severity: :convention, + line: 2, + column: 2, + source: 'arch = Hardware::CPU.intel? ? "" : "arm64"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there is a non-arch variable" do + let(:source) do + <<-CASK.undent + cask 'foo' do + folder = Hardware::CPU.intel? ? "darwin" : "darwin-arm64" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + end + CASK + end + let(:expected_offenses) do + [{ + message: 'Use `folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin"` instead of ' \ + '`folder = Hardware::CPU.intel? ? "darwin" : "darwin-arm64"`', + severity: :convention, + line: 2, + column: 2, + source: 'folder = Hardware::CPU.intel? ? "darwin" : "darwin-arm64"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there is a non-arch variable with an empty string" do + let(:source) do + <<-CASK.undent + cask 'foo' do + folder = Hardware::CPU.intel? ? "amd64" : "" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + folder = on_arch_conditional intel: "amd64" + end + CASK + end + let(:expected_offenses) do + [{ + message: 'Use `folder = on_arch_conditional intel: "amd64"` instead of ' \ + '`folder = Hardware::CPU.intel? ? "amd64" : ""`', + severity: :convention, + line: 2, + column: 2, + source: 'folder = Hardware::CPU.intel? ? "amd64" : ""', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there is an arch and a non-arch variable" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch = Hardware::CPU.arm? ? "darwin-arm64" : "darwin" + folder = Hardware::CPU.arm? ? "darwin-arm64" : "darwin" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: "darwin-arm64", intel: "darwin" + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + end + CASK + end + let(:expected_offenses) do + [{ + message: 'Use `arch arm: "darwin-arm64", intel: "darwin"` instead of ' \ + '`arch = Hardware::CPU.arm? ? "darwin-arm64" : "darwin"`', + severity: :convention, + line: 2, + column: 2, + source: 'arch = Hardware::CPU.arm? ? "darwin-arm64" : "darwin"', + }, { + message: 'Use `folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin"` instead of ' \ + '`folder = Hardware::CPU.arm? ? "darwin-arm64" : "darwin"`', + severity: :convention, + line: 3, + column: 2, + source: 'folder = Hardware::CPU.arm? ? "darwin-arm64" : "darwin"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there are two non-arch variables" do + let(:source) do + <<-CASK.undent + cask 'foo' do + folder = Hardware::CPU.arm? ? "darwin-arm64" : "darwin" + platform = Hardware::CPU.intel? ? "darwin": "darwin-arm64" + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + platform = on_arch_conditional arm: "darwin-arm64", intel: "darwin" + end + CASK + end + let(:expected_offenses) do + [{ + message: 'Use `folder = on_arch_conditional arm: "darwin-arm64", intel: "darwin"` instead of ' \ + '`folder = Hardware::CPU.arm? ? "darwin-arm64" : "darwin"`', + severity: :convention, + line: 2, + column: 2, + source: 'folder = Hardware::CPU.arm? ? "darwin-arm64" : "darwin"', + }, { + message: 'Use `platform = on_arch_conditional arm: "darwin-arm64", intel: "darwin"` instead of ' \ + '`platform = Hardware::CPU.intel? ? "darwin": "darwin-arm64"`', + severity: :convention, + line: 3, + column: 2, + source: 'platform = Hardware::CPU.intel? ? "darwin": "darwin-arm64"', + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end +end From aa2682a098fd84c9edbbe54350f0e9a796a312b3 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Wed, 10 Aug 2022 16:55:19 -1000 Subject: [PATCH 066/122] These tests don't test anything On MacOS, the compile flags `-g` are not set, and I can't figure out how to set them here. `dsymutil` runs successfully regardless of if there are debug symbols or not. Same on linux therefore the test cannot succeed. --- Library/Homebrew/test/cmd/install_spec.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index 82cdcddacc..2eb96de51d 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -74,17 +74,26 @@ describe "brew install" do end it "installs formulae with debug symbols", :integration_test do - setup_test_formula "testball1" + setup_test_formula "testball1", <<~RUBY + def install + prefix.install Dir["*"] + (buildpath/"test.c").write \ + "#include \\nint main(){printf(\\"test\\");return 0;}" + bin.mkpath + system ENV.cc, "test.c", "-o", bin/"test" + end + RUBY expect { brew "install", "testball1", "--debug-symbols", "--build-from-source" } .to output(%r{#{HOMEBREW_CELLAR}/testball1/0\.1}o).to_stdout .and not_to_output.to_stderr .and be_a_success expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file - expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM").to be_a_directory if OS.mac? + expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM/Contents/Resources/DWARF/test").to be_a_file if OS.mac? if OS.linux? - expect { system_command("objdump", args: ["-h", "${HOMEBREW_CELLAR}/testball1/0.1/bin/test"]) } - .to output(/\.debug/).to_stdout + # raise system_command("ls", args: ["-lasR", HOMEBREW_CELLAR/"testball1/0.1"]).merged_output + # expect { system_command("objdump", args: ["-h", HOMEBREW_CELLAR/"testball1/0.1/bin/test"]) } + # .to output(/\.debug/).to_stdout end expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory end From e90371f8abd188c046692ed4998737cba656e697 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Mon, 1 Aug 2022 14:30:04 +0200 Subject: [PATCH 067/122] cask: add audit for incorrect signing --- Library/Homebrew/cask/audit.rb | 41 ++++++++++++++++--- Library/Homebrew/cask/auditor.rb | 5 +++ Library/Homebrew/cask/cmd/audit.rb | 5 +++ Library/Homebrew/test/cask/audit_spec.rb | 52 +++++++++++++++++++++++- 4 files changed, 96 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index 91bcf2d3ec..d8f703710d 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -20,28 +20,31 @@ module Cask attr_reader :cask, :download - attr_predicate :appcast?, :new_cask?, :strict?, :online?, :token_conflicts? + attr_predicate :appcast?, :new_cask?, :strict?, :signing?, :online?, :token_conflicts? def initialize(cask, appcast: nil, download: nil, quarantine: nil, - token_conflicts: nil, online: nil, strict: nil, + token_conflicts: nil, online: nil, strict: nil, signing: nil, new_cask: nil) - # `new_cask` implies `online` and `strict` + # `new_cask` implies `online`, `token_conflicts`, `strict` and signing online = new_cask if online.nil? strict = new_cask if strict.nil? + signing = new_cask if signing.nil? + token_conflicts = new_cask if token_conflicts.nil? # `online` implies `appcast` and `download` appcast = online if appcast.nil? download = online if download.nil? - # `new_cask` implies `token_conflicts` - token_conflicts = new_cask if token_conflicts.nil? + # `signing` implies `download` + download = signing if download.nil? @cask = cask @appcast = appcast @download = Download.new(cask, quarantine: quarantine) if download @online = online @strict = strict + @signing = signing @new_cask = new_cask @token_conflicts = token_conflicts end @@ -81,6 +84,7 @@ module Cask check_github_repository_archived check_github_prerelease_version check_bitbucket_repository + check_signing self rescue => e odebug e, e.backtrace @@ -550,6 +554,33 @@ module Cask add_error "download not possible: #{e}" end + def check_signing + return if !signing? || download.blank? || cask.url.blank? + + odebug "Auditing signing" + odebug cask.artifacts + artifacts = cask.artifacts.select { |k| k.is_a?(Artifact::Pkg) || k.is_a?(Artifact::App) } + + return if artifacts.empty? + + downloaded_path = download.fetch + primary_container = UnpackStrategy.detect(downloaded_path, type: @cask.container&.type, merge_xattrs: true) + + return if primary_container.nil? + + Dir.mktmpdir do |tmpdir| + tmpdir = Pathname(tmpdir) + primary_container.extract_nestedly(to: tmpdir, basename: downloaded_path.basename, verbose: false) + cask.artifacts.each do |artifact| + result = system_command("codesign", args: [ + "--verify", + tmpdir/artifact.source.basename, + ], print_stderr: false) + add_warning result.merged_output unless result.success? + end + end + end + def check_livecheck_version return unless appcast? diff --git a/Library/Homebrew/cask/auditor.rb b/Library/Homebrew/cask/auditor.rb index 508fb0a379..2b80340860 100644 --- a/Library/Homebrew/cask/auditor.rb +++ b/Library/Homebrew/cask/auditor.rb @@ -15,6 +15,7 @@ module Cask audit_online: nil, audit_new_cask: nil, audit_strict: nil, + audit_signing: nil, audit_token_conflicts: nil, quarantine: nil, any_named_args: nil, @@ -29,6 +30,7 @@ module Cask audit_online: audit_online, audit_new_cask: audit_new_cask, audit_strict: audit_strict, + audit_signing: audit_signing, audit_token_conflicts: audit_token_conflicts, quarantine: quarantine, any_named_args: any_named_args, @@ -46,6 +48,7 @@ module Cask audit_appcast: nil, audit_online: nil, audit_strict: nil, + audit_signing: nil, audit_token_conflicts: nil, audit_new_cask: nil, quarantine: nil, @@ -60,6 +63,7 @@ module Cask @audit_online = audit_online @audit_new_cask = audit_new_cask @audit_strict = audit_strict + @audit_signing = audit_signing @quarantine = quarantine @audit_token_conflicts = audit_token_conflicts @any_named_args = any_named_args @@ -133,6 +137,7 @@ module Cask appcast: @audit_appcast, online: @audit_online, strict: @audit_strict, + signing: @audit_signing, new_cask: @audit_new_cask, token_conflicts: @audit_token_conflicts, download: @audit_download, diff --git a/Library/Homebrew/cask/cmd/audit.rb b/Library/Homebrew/cask/cmd/audit.rb index 516f4199bd..be8a6abeb4 100644 --- a/Library/Homebrew/cask/cmd/audit.rb +++ b/Library/Homebrew/cask/cmd/audit.rb @@ -19,6 +19,8 @@ module Cask description: "Audit the appcast" switch "--[no-]token-conflicts", description: "Audit for token conflicts" + switch "--[no-]signing", + description: "Audit for signed apps, which is required on ARM" switch "--[no-]strict", description: "Run additional, stricter style checks" switch "--[no-]online", @@ -50,6 +52,7 @@ module Cask appcast: args.appcast?, online: args.online?, strict: args.strict?, + signing: args.signing?, new_cask: args.new_cask?, token_conflicts: args.token_conflicts?, quarantine: args.quarantine?, @@ -71,6 +74,7 @@ module Cask appcast: nil, online: nil, strict: nil, + signing: nil, new_cask: nil, token_conflicts: nil, quarantine: nil, @@ -84,6 +88,7 @@ module Cask audit_appcast: appcast, audit_online: online, audit_strict: strict, + audit_signing: signing, audit_new_cask: new_cask, audit_token_conflicts: token_conflicts, quarantine: quarantine, diff --git a/Library/Homebrew/test/cask/audit_spec.rb b/Library/Homebrew/test/cask/audit_spec.rb index 212cca3405..020b8dfe33 100644 --- a/Library/Homebrew/test/cask/audit_spec.rb +++ b/Library/Homebrew/test/cask/audit_spec.rb @@ -411,6 +411,53 @@ describe Cask::Audit, :cask do end end + describe "signing checks" do + let(:download_double) { instance_double(Cask::Download) } + let(:unpack_double) { instance_double(UnpackStrategy::Zip) } + + before do + allow(audit).to receive(:download).and_return(download_double) + allow(audit).to receive(:signing?).and_return(true) + allow(audit).to receive(:check_https_availability) + end + + context "when cask is not using a signed artifact" do + let(:cask) do + tmp_cask "signing-cask-test", <<~RUBY + cask 'signing-cask-test' do + version '1.0' + url "https://brew.sh/index.html" + binary 'Audit.app' + end + RUBY + end + + it "does not fail" do + expect(download_double).not_to receive(:fetch) + expect(UnpackStrategy).not_to receive(:detect) + expect(run).not_to warn_with(/Audit\.app/) + end + end + + context "when cask is using a signed artifact" do + let(:cask) do + tmp_cask "signing-cask-test", <<~RUBY + cask 'signing-cask-test' do + version '1.0' + url "https://brew.sh/" + pkg 'Audit.app' + end + RUBY + end + + it "does not fail since no extract" do + allow(download_double).to receive(:fetch).and_return(Pathname.new("/tmp/test.zip")) + allow(UnpackStrategy).to receive(:detect).and_return(nil) + expect(run).not_to warn_with(/Audit\.app/) + end + end + end + describe "livecheck should be skipped" do let(:online) { true } let(:message) { /Version '[^']*' differs from '[^']*' retrieved by livecheck\./ } @@ -888,7 +935,7 @@ describe Cask::Audit, :cask do end describe "audit of downloads" do - let(:cask_token) { "with-binary" } + let(:cask_token) { "basic-cask" } let(:cask) { Cask::CaskLoader.load(cask_token) } let(:download_double) { instance_double(Cask::Download) } let(:message) { "Download Failed" } @@ -896,10 +943,11 @@ describe Cask::Audit, :cask do before do allow(audit).to receive(:download).and_return(download_double) allow(audit).to receive(:check_https_availability) + allow(UnpackStrategy).to receive(:detect).and_return(nil) end it "when download and verification succeed it does not fail" do - expect(download_double).to receive(:fetch) + expect(download_double).to receive(:fetch).and_return(Pathname.new("/tmp/test.zip")) expect(run).to pass end From 19530b223995716908fbd602c31b521a94c49bdc Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:02:32 +0200 Subject: [PATCH 068/122] make subcmd optional again, formulae like `certigo` need it --- Library/Homebrew/formula.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index dd7cbfbb71..0392f05957 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,7 +1625,7 @@ class Formula # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # # @param executable [Pathname] the executable to use for generating the completion scripts. - # @param subcmd [String] the subcommand to pass to the `executable`. + # @param subcmd [String] the subcommand to pass to the `executable`, if any. Defaults to `nil`. # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. # @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed @@ -1677,11 +1677,11 @@ class Formula # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", # "completions", "--selected-shell=bash") sig { - params(executable: Pathname, subcmd: String, base_name: String, shells: T::Array[Symbol], + params(executable: Pathname, subcmd: T.nilable(String), base_name: String, shells: T::Array[Symbol], shell_parameter_format: T.nilable(T.any(Symbol, String))).void } def generate_completions_from_executable(executable, - subcmd, + subcmd = nil, base_name: name, shells: [:bash, :zsh, :fish], shell_parameter_format: nil) @@ -1705,8 +1705,13 @@ class Formula "#{shell_parameter_format}#{shell}" end + popen_read_args = %w[] + popen_read_args << executable + popen_read_args << subcmd if subcmd.present? + popen_read_args << shell_parameter + script_path.dirname.mkpath - script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, executable, subcmd, shell_parameter) + script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, *popen_read_args) end end From a79e8c3692cd6dd4237ac93bfc8cf85a48074c8b Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:26:17 +0200 Subject: [PATCH 069/122] allow `subcmd` to take an array, formulae like circleci need it --- Library/Homebrew/formula.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 0392f05957..cd7122cbf3 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1625,7 +1625,7 @@ class Formula # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # # @param executable [Pathname] the executable to use for generating the completion scripts. - # @param subcmd [String] the subcommand to pass to the `executable`, if any. Defaults to `nil`. + # @param subcmd [String] the subcommand(s) to pass to the `executable`, if any. Defaults to `nil`. # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. # @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed @@ -1677,7 +1677,7 @@ class Formula # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", # "completions", "--selected-shell=bash") sig { - params(executable: Pathname, subcmd: T.nilable(String), base_name: String, shells: T::Array[Symbol], + params(executable: Pathname, subcmd: T.nilable(T.any(String, T::Array[String])), base_name: String, shells: T::Array[Symbol], shell_parameter_format: T.nilable(T.any(Symbol, String))).void } def generate_completions_from_executable(executable, @@ -1709,6 +1709,7 @@ class Formula popen_read_args << executable popen_read_args << subcmd if subcmd.present? popen_read_args << shell_parameter + popen_read_args.flatten! script_path.dirname.mkpath script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, *popen_read_args) From fa22a167d31993b8e19b92f8037f327305a9a12b Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Thu, 11 Aug 2022 18:12:08 +0200 Subject: [PATCH 070/122] refactor to variable length `commands` arg --- Library/Homebrew/formula.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index cd7122cbf3..162d93fbac 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1624,8 +1624,8 @@ class Formula # Generate shell completions for a formula for bash, zsh, and fish, using the formula's executable. # - # @param executable [Pathname] the executable to use for generating the completion scripts. - # @param subcmd [String] the subcommand(s) to pass to the `executable`, if any. Defaults to `nil`. + # @param commands [Pathname, String] the path to the executable and any passed subcommand(s) + # to use for generating the completion scripts. # @param base_name [String] the base name of the generated completion script. Defaults to the formula name. # @param shells [Array] the shells to generate completion scripts for. Defaults to `[:bash, :zsh, :fish]`. # @param shell_parameter_format [String, Symbol] specify how `shells` should each be passed @@ -1677,11 +1677,10 @@ class Formula # (bash_completion/"foo").write Utils.safe_popen_read({ "SHELL" => "bash" }, bin/"foo", # "completions", "--selected-shell=bash") sig { - params(executable: Pathname, subcmd: T.nilable(T.any(String, T::Array[String])), base_name: String, shells: T::Array[Symbol], + params(commands: T.any(Pathname, String), base_name: String, shells: T::Array[Symbol], shell_parameter_format: T.nilable(T.any(Symbol, String))).void } - def generate_completions_from_executable(executable, - subcmd = nil, + def generate_completions_from_executable(*commands, base_name: name, shells: [:bash, :zsh, :fish], shell_parameter_format: nil) @@ -1706,8 +1705,7 @@ class Formula end popen_read_args = %w[] - popen_read_args << executable - popen_read_args << subcmd if subcmd.present? + popen_read_args << commands popen_read_args << shell_parameter popen_read_args.flatten! From 2369a58665d151035cb8047343a10fb9e0f40806 Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Thu, 11 Aug 2022 20:59:51 +0200 Subject: [PATCH 071/122] simplify --- Library/Homebrew/formula.rb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 162d93fbac..e8220d1fa0 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1704,13 +1704,8 @@ class Formula "#{shell_parameter_format}#{shell}" end - popen_read_args = %w[] - popen_read_args << commands - popen_read_args << shell_parameter - popen_read_args.flatten! - script_path.dirname.mkpath - script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, *popen_read_args) + script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, *commands, shell_parameter) end end From 873954cb71dc76dd2e1e5c57c18a1a31b3cf2c0c Mon Sep 17 00:00:00 2001 From: Max Eisner <4730112+max-ae@users.noreply.github.com> Date: Thu, 11 Aug 2022 21:32:03 +0200 Subject: [PATCH 072/122] Revert "simplify" This reverts commit 2369a58665d151035cb8047343a10fb9e0f40806. --- Library/Homebrew/formula.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index e8220d1fa0..162d93fbac 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1704,8 +1704,13 @@ class Formula "#{shell_parameter_format}#{shell}" end + popen_read_args = %w[] + popen_read_args << commands + popen_read_args << shell_parameter + popen_read_args.flatten! + script_path.dirname.mkpath - script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, *commands, shell_parameter) + script_path.write Utils.safe_popen_read({ "SHELL" => shell.to_s }, *popen_read_args) end end From e3a67d2220dc6a04ad89ccb69e212ffa15cfd735 Mon Sep 17 00:00:00 2001 From: Martijn Pieters Date: Thu, 11 Aug 2022 21:00:38 +0100 Subject: [PATCH 073/122] brew: add XDG_RUNTIME_DIR copy Further support for brew services; `systemctl --user` falls back to XDG_RUNTIME_DIR if no DBUS daemon is available. --- bin/brew | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/brew b/bin/brew index 30e1fec5f2..bdbaac8ae9 100755 --- a/bin/brew +++ b/bin/brew @@ -75,7 +75,7 @@ HOMEBREW_LIBRARY="${HOMEBREW_REPOSITORY}/Library" # Copy and export all HOMEBREW_* variables previously mentioned in # manpage or used elsewhere by Homebrew. -for VAR in BAT_THEME BROWSER DISPLAY EDITOR NO_COLOR TMUX DBUS_SESSION_BUS_ADDRESS +for VAR in BAT_THEME BROWSER DISPLAY EDITOR NO_COLOR TMUX DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR do # Skip if variable value is empty. [[ -z "${!VAR}" ]] && continue From 2c829380b5ea18ed32595b89560b46b23887ce65 Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Thu, 11 Aug 2022 10:54:18 -1000 Subject: [PATCH 074/122] Test that --debug-symbols succeeds Due to limitations of the test framework, this only tests that the command with the --debug-symbols flag succeeds and that on MacOS the `dsymutil` is run. --- Library/Homebrew/test/cmd/install_spec.rb | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/Library/Homebrew/test/cmd/install_spec.rb b/Library/Homebrew/test/cmd/install_spec.rb index 2eb96de51d..c7a4bba552 100644 --- a/Library/Homebrew/test/cmd/install_spec.rb +++ b/Library/Homebrew/test/cmd/install_spec.rb @@ -74,15 +74,7 @@ describe "brew install" do end it "installs formulae with debug symbols", :integration_test do - setup_test_formula "testball1", <<~RUBY - def install - prefix.install Dir["*"] - (buildpath/"test.c").write \ - "#include \\nint main(){printf(\\"test\\");return 0;}" - bin.mkpath - system ENV.cc, "test.c", "-o", bin/"test" - end - RUBY + setup_test_formula "testball1" expect { brew "install", "testball1", "--debug-symbols", "--build-from-source" } .to output(%r{#{HOMEBREW_CELLAR}/testball1/0\.1}o).to_stdout @@ -90,11 +82,6 @@ describe "brew install" do .and be_a_success expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test").to be_a_file expect(HOMEBREW_CELLAR/"testball1/0.1/bin/test.dSYM/Contents/Resources/DWARF/test").to be_a_file if OS.mac? - if OS.linux? - # raise system_command("ls", args: ["-lasR", HOMEBREW_CELLAR/"testball1/0.1"]).merged_output - # expect { system_command("objdump", args: ["-h", HOMEBREW_CELLAR/"testball1/0.1/bin/test"]) } - # .to output(/\.debug/).to_stdout - end expect(HOMEBREW_CACHE/"Sources/testball1").to be_a_directory end end From ad7e5ccc4451136854296958ffd2d87b31280a62 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Thu, 11 Aug 2022 19:14:21 -0400 Subject: [PATCH 075/122] Add additional test --- .../test/rubocops/cask/variables_spec.rb | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Library/Homebrew/test/rubocops/cask/variables_spec.rb b/Library/Homebrew/test/rubocops/cask/variables_spec.rb index 45fd184025..96f44ef162 100644 --- a/Library/Homebrew/test/rubocops/cask/variables_spec.rb +++ b/Library/Homebrew/test/rubocops/cask/variables_spec.rb @@ -76,6 +76,37 @@ describe RuboCop::Cop::Cask::Variables do include_examples "autocorrects source" end + context "when there is an arch variable that doesn't use strings" do + let(:source) do + <<-CASK.undent + cask 'foo' do + arch = Hardware::CPU.intel? ? :darwin : :darwin_arm64 + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + arch arm: :darwin_arm64, intel: :darwin + end + CASK + end + let(:expected_offenses) do + [{ + message: "Use `arch arm: :darwin_arm64, intel: :darwin` instead of " \ + "`arch = Hardware::CPU.intel? ? :darwin : :darwin_arm64`", + severity: :convention, + line: 2, + column: 2, + source: "arch = Hardware::CPU.intel? ? :darwin : :darwin_arm64", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + context "when there is an arch with an empty string" do let(:source) do <<-CASK.undent From 8fb03838db90e8a0c614007c4d777b08c931de4b Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Thu, 11 Aug 2022 23:59:20 -0400 Subject: [PATCH 076/122] `bump-cask-pr`: fix `sha256` replacement with `arch` --- Library/Homebrew/dev-cmd/bump-cask-pr.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Library/Homebrew/dev-cmd/bump-cask-pr.rb b/Library/Homebrew/dev-cmd/bump-cask-pr.rb index cc33184b1a..a123af9da0 100644 --- a/Library/Homebrew/dev-cmd/bump-cask-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-cask-pr.rb @@ -138,8 +138,10 @@ module Homebrew replacement_pairs << fetch_cask(tmp_contents, config: lang_config) end + # TODO: Use SimulateSystem once all casks use on_system blocks if tmp_contents.include?("Hardware::CPU.intel?") other_intel = !Hardware::CPU.intel? + Homebrew::SimulateSystem.arch = other_intel ? :intel : :arm other_contents = tmp_contents.gsub("Hardware::CPU.intel?", other_intel.to_s) other_cask = Cask::CaskLoader.load(other_contents) @@ -151,6 +153,8 @@ module Homebrew lang_config = other_cask.config.merge(Cask::Config.new(explicit: { languages: [language] })) replacement_pairs << fetch_cask(other_contents, config: lang_config) end + + Homebrew::SimulateSystem.clear end end end From 04ff6a18f4e4fa4cdd5e4da39dca1127eaf443ef Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 12 Aug 2022 09:34:51 +0100 Subject: [PATCH 077/122] Tweak --debug-symbols description. --- Library/Homebrew/cmd/install.rb | 3 +-- Library/Homebrew/cmd/reinstall.rb | 3 +-- Library/Homebrew/cmd/upgrade.rb | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index e4d6ab4b47..a312190440 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -93,8 +93,7 @@ module Homebrew }], [:switch, "--debug-symbols", { depends_on: "--build-from-source", - description: "Generate debug symbols on build. Source will be retained in a temporary directory. " \ - "(see --keep-tmp)", + description: "Generate debug symbols on build. Source will be retained in a cache directory. ", }], [:switch, "--build-bottle", { description: "Prepare the formula for eventual bottling during installation, skipping any " \ diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb index e7d8331dcc..62f4777e0d 100644 --- a/Library/Homebrew/cmd/reinstall.rb +++ b/Library/Homebrew/cmd/reinstall.rb @@ -59,8 +59,7 @@ module Homebrew }], [:switch, "--debug-symbols", { depends_on: "--build-from-source", - description: "Generate debug symbols on build. Source will be retained in a temporary directory. " \ - "(see --keep-tmp)", + description: "Generate debug symbols on build. Source will be retained in a cache directory. ", }], [:switch, "--display-times", { env: :display_install_times, diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index 3da6d1232e..f176a26a5b 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -70,8 +70,7 @@ module Homebrew }], [:switch, "--debug-symbols", { depends_on: "--build-from-source", - description: "Generate debug symbols on build. Source will be retained in a temporary directory. " \ - "(see --keep-tmp)", + description: "Generate debug symbols on build. Source will be retained in a cache directory. ", }], [:switch, "--display-times", { env: :display_install_times, From 71e169ecd260c21b4e264423d2205d1ce771837b Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Fri, 12 Aug 2022 09:07:17 +0000 Subject: [PATCH 078/122] Update maintainers, manpage and completions. Autogenerated by the [update-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/update-man-completions.yml) workflow. --- completions/bash/brew | 4 ++++ completions/fish/brew.fish | 4 ++++ completions/zsh/_brew | 12 ++++++++---- docs/Manpage.md | 6 ++++++ manpages/brew.1 | 12 ++++++++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/completions/bash/brew b/completions/bash/brew index 7ee107cea1..c124dd0e05 100644 --- a/completions/bash/brew +++ b/completions/bash/brew @@ -1091,6 +1091,7 @@ _brew_instal() { --cc --colorpickerdir --debug + --debug-symbols --dictionarydir --display-times --fetch-HEAD @@ -1149,6 +1150,7 @@ _brew_install() { --cc --colorpickerdir --debug + --debug-symbols --dictionarydir --display-times --fetch-HEAD @@ -1708,6 +1710,7 @@ _brew_reinstall() { --cask --colorpickerdir --debug + --debug-symbols --dictionarydir --display-times --fontdir @@ -2360,6 +2363,7 @@ _brew_upgrade() { --cask --colorpickerdir --debug + --debug-symbols --dictionarydir --display-times --dry-run diff --git a/completions/fish/brew.fish b/completions/fish/brew.fish index 17e0059810..5104ca09e5 100644 --- a/completions/fish/brew.fish +++ b/completions/fish/brew.fish @@ -786,6 +786,7 @@ __fish_brew_complete_arg 'instal' -l cask -d 'Treat all named arguments as casks __fish_brew_complete_arg 'instal' -l cc -d 'Attempt to compile using the specified compiler, which should be the name of the compiler\'s executable, e.g. `gcc-7` for GCC 7. In order to use LLVM\'s clang, specify `llvm_clang`. To use the Apple-provided clang, specify `clang`. This option will only accept compilers that are provided by Homebrew or bundled with macOS. Please do not file issues if you encounter errors while using this option' __fish_brew_complete_arg 'instal' -l colorpickerdir -d 'Target location for Color Pickers (default: `~/Library/ColorPickers`)' __fish_brew_complete_arg 'instal' -l debug -d 'If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory' +__fish_brew_complete_arg 'instal' -l debug-symbols -d 'Generate debug symbols on build. Source will be retained in a cache directory. ' __fish_brew_complete_arg 'instal' -l dictionarydir -d 'Target location for Dictionaries (default: `~/Library/Dictionaries`)' __fish_brew_complete_arg 'instal' -l display-times -d 'Print install times for each package at the end of the run' __fish_brew_complete_arg 'instal' -l fetch-HEAD -d 'Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository\'s HEAD will only be checked for updates when a new stable or development version has been released' @@ -835,6 +836,7 @@ __fish_brew_complete_arg 'install' -l cask -d 'Treat all named arguments as cask __fish_brew_complete_arg 'install' -l cc -d 'Attempt to compile using the specified compiler, which should be the name of the compiler\'s executable, e.g. `gcc-7` for GCC 7. In order to use LLVM\'s clang, specify `llvm_clang`. To use the Apple-provided clang, specify `clang`. This option will only accept compilers that are provided by Homebrew or bundled with macOS. Please do not file issues if you encounter errors while using this option' __fish_brew_complete_arg 'install' -l colorpickerdir -d 'Target location for Color Pickers (default: `~/Library/ColorPickers`)' __fish_brew_complete_arg 'install' -l debug -d 'If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory' +__fish_brew_complete_arg 'install' -l debug-symbols -d 'Generate debug symbols on build. Source will be retained in a cache directory. ' __fish_brew_complete_arg 'install' -l dictionarydir -d 'Target location for Dictionaries (default: `~/Library/Dictionaries`)' __fish_brew_complete_arg 'install' -l display-times -d 'Print install times for each package at the end of the run' __fish_brew_complete_arg 'install' -l fetch-HEAD -d 'Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository\'s HEAD will only be checked for updates when a new stable or development version has been released' @@ -1178,6 +1180,7 @@ __fish_brew_complete_arg 'reinstall' -l build-from-source -d 'Compile formula fr __fish_brew_complete_arg 'reinstall' -l cask -d 'Treat all named arguments as casks' __fish_brew_complete_arg 'reinstall' -l colorpickerdir -d 'Target location for Color Pickers (default: `~/Library/ColorPickers`)' __fish_brew_complete_arg 'reinstall' -l debug -d 'If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory' +__fish_brew_complete_arg 'reinstall' -l debug-symbols -d 'Generate debug symbols on build. Source will be retained in a cache directory. ' __fish_brew_complete_arg 'reinstall' -l dictionarydir -d 'Target location for Dictionaries (default: `~/Library/Dictionaries`)' __fish_brew_complete_arg 'reinstall' -l display-times -d 'Print install times for each formula at the end of the run' __fish_brew_complete_arg 'reinstall' -l fontdir -d 'Target location for Fonts (default: `~/Library/Fonts`)' @@ -1557,6 +1560,7 @@ __fish_brew_complete_arg 'upgrade' -l build-from-source -d 'Compile formula from __fish_brew_complete_arg 'upgrade' -l cask -d 'Treat all named arguments as casks. If no named arguments are specified, upgrade only outdated casks' __fish_brew_complete_arg 'upgrade' -l colorpickerdir -d 'Target location for Color Pickers (default: `~/Library/ColorPickers`)' __fish_brew_complete_arg 'upgrade' -l debug -d 'If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory' +__fish_brew_complete_arg 'upgrade' -l debug-symbols -d 'Generate debug symbols on build. Source will be retained in a cache directory. ' __fish_brew_complete_arg 'upgrade' -l dictionarydir -d 'Target location for Dictionaries (default: `~/Library/Dictionaries`)' __fish_brew_complete_arg 'upgrade' -l display-times -d 'Print install times for each package at the end of the run' __fish_brew_complete_arg 'upgrade' -l dry-run -d 'Show what would be upgraded, but do not actually upgrade anything' diff --git a/completions/zsh/_brew b/completions/zsh/_brew index e8b6c5d327..b771e55fd5 100644 --- a/completions/zsh/_brew +++ b/completions/zsh/_brew @@ -968,6 +968,7 @@ _brew_instal() { '(--cask)--cc[Attempt to compile using the specified compiler, which should be the name of the compiler'\''s executable, e.g. `gcc-7` for GCC 7. In order to use LLVM'\''s clang, specify `llvm_clang`. To use the Apple-provided clang, specify `clang`. This option will only accept compilers that are provided by Homebrew or bundled with macOS. Please do not file issues if you encounter errors while using this option]' \ '(--formula)--colorpickerdir[Target location for Color Pickers (default: `~/Library/ColorPickers`)]' \ '--debug[If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory]' \ + '(--cask)--debug-symbols[Generate debug symbols on build. Source will be retained in a cache directory. ]' \ '(--formula)--dictionarydir[Target location for Dictionaries (default: `~/Library/Dictionaries`)]' \ '(--cask)--display-times[Print install times for each package at the end of the run]' \ '(--cask)--fetch-HEAD[Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository'\''s HEAD will only be checked for updates when a new stable or development version has been released]' \ @@ -1004,7 +1005,7 @@ _brew_instal() { '(--casks --binaries --require-sha --quarantine --skip-cask-deps --zap --appdir --colorpickerdir --prefpanedir --qlplugindir --mdimporterdir --dictionarydir --fontdir --servicedir --input-methoddir --internet-plugindir --audio-unit-plugindir --vst-plugindir --vst3-plugindir --screen-saverdir --language)--formula[Treat all named arguments as formulae]' \ '*::formula:__brew_formulae' \ - cask \ - '(--formulae --env --ignore-dependencies --only-dependencies --cc --build-from-source --force-bottle --include-test --HEAD --fetch-HEAD --keep-tmp --build-bottle --bottle-arch --display-times --interactive --git --overwrite)--cask[Treat all named arguments as casks]' \ + '(--formulae --env --ignore-dependencies --only-dependencies --cc --build-from-source --force-bottle --include-test --HEAD --fetch-HEAD --keep-tmp --debug-symbols --build-bottle --bottle-arch --display-times --interactive --git --overwrite)--cask[Treat all named arguments as casks]' \ '*::cask:__brew_casks' } @@ -1021,6 +1022,7 @@ _brew_install() { '(--cask)--cc[Attempt to compile using the specified compiler, which should be the name of the compiler'\''s executable, e.g. `gcc-7` for GCC 7. In order to use LLVM'\''s clang, specify `llvm_clang`. To use the Apple-provided clang, specify `clang`. This option will only accept compilers that are provided by Homebrew or bundled with macOS. Please do not file issues if you encounter errors while using this option]' \ '(--formula)--colorpickerdir[Target location for Color Pickers (default: `~/Library/ColorPickers`)]' \ '--debug[If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory]' \ + '(--cask)--debug-symbols[Generate debug symbols on build. Source will be retained in a cache directory. ]' \ '(--formula)--dictionarydir[Target location for Dictionaries (default: `~/Library/Dictionaries`)]' \ '(--cask)--display-times[Print install times for each package at the end of the run]' \ '(--cask)--fetch-HEAD[Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository'\''s HEAD will only be checked for updates when a new stable or development version has been released]' \ @@ -1057,7 +1059,7 @@ _brew_install() { '(--casks --binaries --require-sha --quarantine --skip-cask-deps --zap --appdir --colorpickerdir --prefpanedir --qlplugindir --mdimporterdir --dictionarydir --fontdir --servicedir --input-methoddir --internet-plugindir --audio-unit-plugindir --vst-plugindir --vst3-plugindir --screen-saverdir --language)--formula[Treat all named arguments as formulae]' \ '*::formula:__brew_formulae' \ - cask \ - '(--formulae --env --ignore-dependencies --only-dependencies --cc --build-from-source --force-bottle --include-test --HEAD --fetch-HEAD --keep-tmp --build-bottle --bottle-arch --display-times --interactive --git --overwrite)--cask[Treat all named arguments as casks]' \ + '(--formulae --env --ignore-dependencies --only-dependencies --cc --build-from-source --force-bottle --include-test --HEAD --fetch-HEAD --keep-tmp --debug-symbols --build-bottle --bottle-arch --display-times --interactive --git --overwrite)--cask[Treat all named arguments as casks]' \ '*::cask:__brew_casks' } @@ -1436,6 +1438,7 @@ _brew_reinstall() { '(--cask --force-bottle)--build-from-source[Compile formula from source even if a bottle is available]' \ '(--formula)--colorpickerdir[Target location for Color Pickers (default: `~/Library/ColorPickers`)]' \ '--debug[If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory]' \ + '(--cask)--debug-symbols[Generate debug symbols on build. Source will be retained in a cache directory. ]' \ '(--formula)--dictionarydir[Target location for Dictionaries (default: `~/Library/Dictionaries`)]' \ '(--cask)--display-times[Print install times for each formula at the end of the run]' \ '(--formula)--fontdir[Target location for Fonts (default: `~/Library/Fonts`)]' \ @@ -1467,7 +1470,7 @@ _brew_reinstall() { '(--casks --binaries --require-sha --quarantine --skip-cask-deps --zap --appdir --colorpickerdir --prefpanedir --qlplugindir --mdimporterdir --dictionarydir --fontdir --servicedir --input-methoddir --internet-plugindir --audio-unit-plugindir --vst-plugindir --vst3-plugindir --screen-saverdir --language)--formula[Treat all named arguments as formulae]' \ '*::formula:__brew_formulae' \ - cask \ - '(--formulae --build-from-source --interactive --force-bottle --keep-tmp --display-times --git)--cask[Treat all named arguments as casks]' \ + '(--formulae --build-from-source --interactive --force-bottle --keep-tmp --debug-symbols --display-times --git)--cask[Treat all named arguments as casks]' \ '*::cask:__brew_casks' } @@ -1904,6 +1907,7 @@ _brew_upgrade() { '(--cask --force-bottle)--build-from-source[Compile formula from source even if a bottle is available]' \ '(--formula)--colorpickerdir[Target location for Color Pickers (default: `~/Library/ColorPickers`)]' \ '--debug[If brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory]' \ + '(--cask)--debug-symbols[Generate debug symbols on build. Source will be retained in a cache directory. ]' \ '(--formula)--dictionarydir[Target location for Dictionaries (default: `~/Library/Dictionaries`)]' \ '(--cask)--display-times[Print install times for each package at the end of the run]' \ '--dry-run[Show what would be upgraded, but do not actually upgrade anything]' \ @@ -1939,7 +1943,7 @@ _brew_upgrade() { '(--casks --binaries --require-sha --quarantine --skip-cask-deps --greedy --greedy-latest --greedy-auto-updates --appdir --colorpickerdir --prefpanedir --qlplugindir --mdimporterdir --dictionarydir --fontdir --servicedir --input-methoddir --internet-plugindir --audio-unit-plugindir --vst-plugindir --vst3-plugindir --screen-saverdir --language)--formula[Treat all named arguments as formulae. If no named arguments are specified, upgrade only outdated formulae]' \ '*::outdated_formula:__brew_outdated_formulae' \ - outdated_cask \ - '(--formulae --build-from-source --interactive --force-bottle --fetch-HEAD --ignore-pinned --keep-tmp --display-times)--cask[Treat all named arguments as casks. If no named arguments are specified, upgrade only outdated casks]' \ + '(--formulae --build-from-source --interactive --force-bottle --fetch-HEAD --ignore-pinned --keep-tmp --debug-symbols --display-times)--cask[Treat all named arguments as casks. If no named arguments are specified, upgrade only outdated casks]' \ '*::outdated_cask:__brew_outdated_casks' } diff --git a/docs/Manpage.md b/docs/Manpage.md index c08de40f3c..f30d1d1bed 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -344,6 +344,8 @@ is already installed but outdated. Fetch the upstream repository to detect if the HEAD installation of the formula is outdated. Otherwise, the repository's HEAD will only be checked for updates when a new stable or development version has been released. * `--keep-tmp`: Retain the temporary files created during installation. +* `--debug-symbols`: + Generate debug symbols on build. Source will be retained in a cache directory. * `--build-bottle`: Prepare the formula for eventual bottling during installation, skipping any post-install steps. * `--bottle-arch`: @@ -545,6 +547,8 @@ reinstalled formulae or, every 30 days, for all formulae. Install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation. * `--keep-tmp`: Retain the temporary files created during installation. +* `--debug-symbols`: + Generate debug symbols on build. Source will be retained in a cache directory. * `--display-times`: Print install times for each formula at the end of the run. * `-g`, `--git`: @@ -729,6 +733,8 @@ upgraded formulae or, every 30 days, for all formulae. Set a successful exit status even if pinned formulae are not upgraded. * `--keep-tmp`: Retain the temporary files created during installation. +* `--debug-symbols`: + Generate debug symbols on build. Source will be retained in a cache directory. * `--display-times`: Print install times for each package at the end of the run. * `--cask`: diff --git a/manpages/brew.1 b/manpages/brew.1 index ed2d1ef1ff..4c568bb1c6 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -465,6 +465,10 @@ Fetch the upstream repository to detect if the HEAD installation of the formula Retain the temporary files created during installation\. . .TP +\fB\-\-debug\-symbols\fR +Generate debug symbols on build\. Source will be retained in a cache directory\. +. +.TP \fB\-\-build\-bottle\fR Prepare the formula for eventual bottling during installation, skipping any post\-install steps\. . @@ -754,6 +758,10 @@ Install from a bottle if it exists for the current or newest version of macOS, e Retain the temporary files created during installation\. . .TP +\fB\-\-debug\-symbols\fR +Generate debug symbols on build\. Source will be retained in a cache directory\. +. +.TP \fB\-\-display\-times\fR Print install times for each formula at the end of the run\. . @@ -1007,6 +1015,10 @@ Set a successful exit status even if pinned formulae are not upgraded\. Retain the temporary files created during installation\. . .TP +\fB\-\-debug\-symbols\fR +Generate debug symbols on build\. Source will be retained in a cache directory\. +. +.TP \fB\-\-display\-times\fR Print install times for each package at the end of the run\. . From 98a53e4781f20e2ab769eae6ac02e2ac59d1175b Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Sat, 13 Aug 2022 01:11:09 +0800 Subject: [PATCH 079/122] language/python: support `python3` from PATH in `#detected_python_shebang` Some formulae are flexible about the version of Python3 that they use. However, when we use `#detected_python_shebang` on these formulae, they become coupled to the specific version of Python3 declared in the formula. This is harmful because 1. it prevents us from using `uses_from_macos "python"` even in formulae where we should be able to 2. it forces us to rebuild the formula whenever we make changes to the Python dependency when nothing but the shebang would have changed as a consequence of the rebuild For an example of this, see Homebrew/homebrew-core#107905. I'd also like to do this to get rid of some really terrible hacks we have in `glib-utils` as a means of decoupling `glib` from the specific versioned Python dependency it used to have. See Homebrew/homebrew-core#103916, or Homebrew/homebrew-core#106045 for a proposal to give the same treatment to `gobject-introspection`. --- Library/Homebrew/language/python.rb | 20 ++++++++++++------- .../test/language/python/shebang_spec.rb | 15 ++++++++++++-- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/language/python.rb b/Library/Homebrew/language/python.rb index c0297a85cb..f01e733e31 100644 --- a/Library/Homebrew/language/python.rb +++ b/Library/Homebrew/language/python.rb @@ -103,16 +103,22 @@ module Language ) end - def detected_python_shebang(formula = self) - python_deps = formula.deps.map(&:name).grep(/^python(@.*)?$/) + def detected_python_shebang(formula = self, use_python_from_path: false) + python_path = if use_python_from_path + "/usr/bin/env python3" + else + python_deps = formula.deps.map(&:name).grep(/^python(@.*)?$/) - raise ShebangDetectionError.new("Python", "formula does not depend on Python") if python_deps.empty? - if python_deps.length > 1 - raise ShebangDetectionError.new("Python", "formula has multiple Python dependencies") + raise ShebangDetectionError.new("Python", "formula does not depend on Python") if python_deps.empty? + if python_deps.length > 1 + raise ShebangDetectionError.new("Python", "formula has multiple Python dependencies") + end + + python_dep = python_deps.first + Formula[python_dep].opt_bin/python_dep.sub("@", "") end - python_dep = python_deps.first - python_shebang_rewrite_info(Formula[python_dep].opt_bin/python_dep.sub("@", "")) + python_shebang_rewrite_info(python_path) end end diff --git a/Library/Homebrew/test/language/python/shebang_spec.rb b/Library/Homebrew/test/language/python/shebang_spec.rb index 4fa44b83f3..96cb94257f 100644 --- a/Library/Homebrew/test/language/python/shebang_spec.rb +++ b/Library/Homebrew/test/language/python/shebang_spec.rb @@ -21,7 +21,7 @@ describe Language::Python::Shebang do before do file.write <<~EOS - #!/usr/bin/env python3 + #!/usr/bin/python2 a b c @@ -34,7 +34,7 @@ describe Language::Python::Shebang do describe "#detected_python_shebang" do it "can be used to replace Python shebangs" do expect(Formulary).to receive(:factory).with(python_f.name).and_return(python_f) - Utils::Shebang.rewrite_shebang described_class.detected_python_shebang(f), file + Utils::Shebang.rewrite_shebang described_class.detected_python_shebang(f, use_python_from_path: false), file expect(File.read(file)).to eq <<~EOS #!#{HOMEBREW_PREFIX}/opt/python@3.11/bin/python3.11 @@ -43,5 +43,16 @@ describe Language::Python::Shebang do c EOS end + + it "can be pointed to a `python3` in PATH" do + Utils::Shebang.rewrite_shebang described_class.detected_python_shebang(f, use_python_from_path: true), file + + expect(File.read(file)).to eq <<~EOS + #!/usr/bin/env python3 + a + b + c + EOS + end end end From 399631fced519ae6157e6f3f37a16e61b03912bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 18:04:47 +0000 Subject: [PATCH 080/122] build(deps): bump rubocop from 1.34.1 to 1.35.0 in /Library/Homebrew Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.34.1 to 1.35.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.34.1...v1.35.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index 61febf66ff..8494e8cbc8 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -124,14 +124,14 @@ GEM rspec (>= 3, < 4) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.34.1) + rubocop (1.35.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.1.2.1) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.20.0, < 2.0) + rubocop-ast (>= 1.20.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.21.0) From 95356dd9dda2cc40e714d55c4d96615ae82802f9 Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Fri, 12 Aug 2022 18:11:23 +0000 Subject: [PATCH 081/122] brew vendor-gems: commit updates. --- Library/Homebrew/vendor/bundle/bundler/setup.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index 69885e22a4..f29c2ff69b 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -86,7 +86,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec_junit_formatter $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-ast-1.21.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-progressbar-1.11.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unicode-display_width-2.2.0/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-1.34.1/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-1.35.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-performance-1.14.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rails-2.15.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-2.12.1/lib" From 891d0cfc721a82e662509cf61aa7bfd9c45d43b5 Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Sat, 13 Aug 2022 00:13:41 +0000 Subject: [PATCH 082/122] spdx: update license data. Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/master/.github/workflows/spdx.yml). --- .../Homebrew/data/spdx/spdx_exceptions.json | 724 +- Library/Homebrew/data/spdx/spdx_licenses.json | 10659 ++++++++-------- 2 files changed, 5754 insertions(+), 5629 deletions(-) diff --git a/Library/Homebrew/data/spdx/spdx_exceptions.json b/Library/Homebrew/data/spdx/spdx_exceptions.json index 62f5e044c8..67992986a2 100644 --- a/Library/Homebrew/data/spdx/spdx_exceptions.json +++ b/Library/Homebrew/data/spdx/spdx_exceptions.json @@ -1,22 +1,55 @@ { - "licenseListVersion": "3.17", + "licenseListVersion": "3.18", "exceptions": [ { - "reference": "./FLTK-exception.json", + "reference": "./Qt-GPL-exception-1.0.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./FLTK-exception.html", + "detailsUrl": "./Qt-GPL-exception-1.0.html", "referenceNumber": 1, - "name": "FLTK exception", - "licenseExceptionId": "FLTK-exception", + "name": "Qt GPL exception 1.0", + "licenseExceptionId": "Qt-GPL-exception-1.0", "seeAlso": [ - "http://www.fltk.org/COPYING.php" + "http://code.qt.io/cgit/qt/qtbase.git/tree/LICENSE.GPL3-EXCEPT" + ] + }, + { + "reference": "./Fawkes-Runtime-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Fawkes-Runtime-exception.html", + "referenceNumber": 2, + "name": "Fawkes Runtime Exception", + "licenseExceptionId": "Fawkes-Runtime-exception", + "seeAlso": [ + "http://www.fawkesrobotics.org/about/license/" + ] + }, + { + "reference": "./openvpn-openssl-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./openvpn-openssl-exception.html", + "referenceNumber": 3, + "name": "OpenVPN OpenSSL Exception", + "licenseExceptionId": "openvpn-openssl-exception", + "seeAlso": [ + "http://openvpn.net/index.php/license.html" + ] + }, + { + "reference": "./DigiRule-FOSS-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./DigiRule-FOSS-exception.html", + "referenceNumber": 4, + "name": "DigiRule FOSS License Exception", + "licenseExceptionId": "DigiRule-FOSS-exception", + "seeAlso": [ + "http://www.digirulesolutions.com/drupal/foss" ] }, { "reference": "./Bootloader-exception.json", "isDeprecatedLicenseId": false, "detailsUrl": "./Bootloader-exception.html", - "referenceNumber": 2, + "referenceNumber": 5, "name": "Bootloader Distribution Exception", "licenseExceptionId": "Bootloader-exception", "seeAlso": [ @@ -24,87 +57,21 @@ ] }, { - "reference": "./WxWindows-exception-3.1.json", + "reference": "./OpenJDK-assembly-exception-1.0.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./WxWindows-exception-3.1.html", - "referenceNumber": 3, - "name": "WxWindows Library Exception 3.1", - "licenseExceptionId": "WxWindows-exception-3.1", - "seeAlso": [ - "http://www.opensource.org/licenses/WXwindows" - ] - }, - { - "reference": "./Linux-syscall-note.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Linux-syscall-note.html", - "referenceNumber": 4, - "name": "Linux Syscall Note", - "licenseExceptionId": "Linux-syscall-note", - "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/COPYING" - ] - }, - { - "reference": "./Qt-LGPL-exception-1.1.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Qt-LGPL-exception-1.1.html", - "referenceNumber": 5, - "name": "Qt LGPL exception 1.1", - "licenseExceptionId": "Qt-LGPL-exception-1.1", - "seeAlso": [ - "http://code.qt.io/cgit/qt/qtbase.git/tree/LGPL_EXCEPTION.txt" - ] - }, - { - "reference": "./LLVM-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./LLVM-exception.html", + "detailsUrl": "./OpenJDK-assembly-exception-1.0.html", "referenceNumber": 6, - "name": "LLVM Exception", - "licenseExceptionId": "LLVM-exception", + "name": "OpenJDK Assembly exception 1.0", + "licenseExceptionId": "OpenJDK-assembly-exception-1.0", "seeAlso": [ - "http://llvm.org/foundation/relicensing/LICENSE.txt" - ] - }, - { - "reference": "./PS-or-PDF-font-exception-20170817.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./PS-or-PDF-font-exception-20170817.html", - "referenceNumber": 7, - "name": "PS/PDF font exception (2017-08-17)", - "licenseExceptionId": "PS-or-PDF-font-exception-20170817", - "seeAlso": [ - "https://github.com/ArtifexSoftware/urw-base35-fonts/blob/65962e27febc3883a17e651cdb23e783668c996f/LICENSE" - ] - }, - { - "reference": "./GCC-exception-3.1.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./GCC-exception-3.1.html", - "referenceNumber": 8, - "name": "GCC Runtime Library exception 3.1", - "licenseExceptionId": "GCC-exception-3.1", - "seeAlso": [ - "http://www.gnu.org/licenses/gcc-exception-3.1.html" - ] - }, - { - "reference": "./Autoconf-exception-3.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Autoconf-exception-3.0.html", - "referenceNumber": 9, - "name": "Autoconf exception 3.0", - "licenseExceptionId": "Autoconf-exception-3.0", - "seeAlso": [ - "http://www.gnu.org/licenses/autoconf-exception-3.0.html" + "http://openjdk.java.net/legal/assembly-exception.html" ] }, { "reference": "./LGPL-3.0-linking-exception.json", "isDeprecatedLicenseId": false, "detailsUrl": "./LGPL-3.0-linking-exception.html", - "referenceNumber": 10, + "referenceNumber": 7, "name": "LGPL-3.0 Linking Exception", "licenseExceptionId": "LGPL-3.0-linking-exception", "seeAlso": [ @@ -114,21 +81,21 @@ ] }, { - "reference": "./GCC-exception-2.0.json", + "reference": "./u-boot-exception-2.0.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./GCC-exception-2.0.html", - "referenceNumber": 11, - "name": "GCC Runtime Library exception 2.0", - "licenseExceptionId": "GCC-exception-2.0", + "detailsUrl": "./u-boot-exception-2.0.html", + "referenceNumber": 8, + "name": "U-Boot exception 2.0", + "licenseExceptionId": "u-boot-exception-2.0", "seeAlso": [ - "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003dLicenses/Exceptions" ] }, { "reference": "./Bison-exception-2.2.json", "isDeprecatedLicenseId": false, "detailsUrl": "./Bison-exception-2.2.html", - "referenceNumber": 12, + "referenceNumber": 9, "name": "Bison exception 2.2", "licenseExceptionId": "Bison-exception-2.2", "seeAlso": [ @@ -136,37 +103,70 @@ ] }, { - "reference": "./openvpn-openssl-exception.json", + "reference": "./OCaml-LGPL-linking-exception.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./openvpn-openssl-exception.html", + "detailsUrl": "./OCaml-LGPL-linking-exception.html", + "referenceNumber": 10, + "name": "OCaml LGPL Linking Exception", + "licenseExceptionId": "OCaml-LGPL-linking-exception", + "seeAlso": [ + "https://caml.inria.fr/ocaml/license.en.html" + ] + }, + { + "reference": "./Swift-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Swift-exception.html", + "referenceNumber": 11, + "name": "Swift Exception", + "licenseExceptionId": "Swift-exception", + "seeAlso": [ + "https://swift.org/LICENSE.txt", + "https://github.com/apple/swift-package-manager/blob/7ab2275f447a5eb37497ed63a9340f8a6d1e488b/LICENSE.txt#L205" + ] + }, + { + "reference": "./CLISP-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./CLISP-exception-2.0.html", + "referenceNumber": 12, + "name": "CLISP exception 2.0", + "licenseExceptionId": "CLISP-exception-2.0", + "seeAlso": [ + "http://sourceforge.net/p/clisp/clisp/ci/default/tree/COPYRIGHT" + ] + }, + { + "reference": "./Qwt-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Qwt-exception-1.0.html", "referenceNumber": 13, - "name": "OpenVPN OpenSSL Exception", - "licenseExceptionId": "openvpn-openssl-exception", + "name": "Qwt exception 1.0", + "licenseExceptionId": "Qwt-exception-1.0", "seeAlso": [ - "http://openvpn.net/index.php/license.html" + "http://qwt.sourceforge.net/qwtlicense.html" ] }, { - "reference": "./Libtool-exception.json", + "reference": "./Universal-FOSS-exception-1.0.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./Libtool-exception.html", + "detailsUrl": "./Universal-FOSS-exception-1.0.html", "referenceNumber": 14, - "name": "Libtool Exception", - "licenseExceptionId": "Libtool-exception", + "name": "Universal FOSS Exception, Version 1.0", + "licenseExceptionId": "Universal-FOSS-exception-1.0", "seeAlso": [ - "http://git.savannah.gnu.org/cgit/libtool.git/tree/m4/libtool.m4" + "https://oss.oracle.com/licenses/universal-foss-exception/" ] }, { - "reference": "./Autoconf-exception-2.0.json", + "reference": "./LLVM-exception.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./Autoconf-exception-2.0.html", + "detailsUrl": "./LLVM-exception.html", "referenceNumber": 15, - "name": "Autoconf exception 2.0", - "licenseExceptionId": "Autoconf-exception-2.0", + "name": "LLVM Exception", + "licenseExceptionId": "LLVM-exception", "seeAlso": [ - "http://ac-archive.sourceforge.net/doc/copyright.html", - "http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.gz" + "http://llvm.org/foundation/relicensing/LICENSE.txt" ] }, { @@ -181,11 +181,267 @@ "https://github.com/mirror/wget/blob/master/src/http.c#L20" ] }, + { + "reference": "./GStreamer-exception-2008.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GStreamer-exception-2008.html", + "referenceNumber": 17, + "name": "GStreamer Exception (2008)", + "licenseExceptionId": "GStreamer-exception-2008", + "seeAlso": [ + "https://gstreamer.freedesktop.org/documentation/frequently-asked-questions/licensing.html?gi-language\u003dc#licensing-of-applications-using-gstreamer" + ] + }, + { + "reference": "./FLTK-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./FLTK-exception.html", + "referenceNumber": 18, + "name": "FLTK exception", + "licenseExceptionId": "FLTK-exception", + "seeAlso": [ + "http://www.fltk.org/COPYING.php" + ] + }, + { + "reference": "./GPL-3.0-linking-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GPL-3.0-linking-exception.html", + "referenceNumber": 19, + "name": "GPL-3.0 Linking Exception", + "licenseExceptionId": "GPL-3.0-linking-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs" + ] + }, + { + "reference": "./Qt-LGPL-exception-1.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Qt-LGPL-exception-1.1.html", + "referenceNumber": 20, + "name": "Qt LGPL exception 1.1", + "licenseExceptionId": "Qt-LGPL-exception-1.1", + "seeAlso": [ + "http://code.qt.io/cgit/qt/qtbase.git/tree/LGPL_EXCEPTION.txt" + ] + }, + { + "reference": "./Classpath-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Classpath-exception-2.0.html", + "referenceNumber": 21, + "name": "Classpath exception 2.0", + "licenseExceptionId": "Classpath-exception-2.0", + "seeAlso": [ + "http://www.gnu.org/software/classpath/license.html", + "https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception" + ] + }, + { + "reference": "./Nokia-Qt-exception-1.1.json", + "isDeprecatedLicenseId": true, + "detailsUrl": "./Nokia-Qt-exception-1.1.html", + "referenceNumber": 22, + "name": "Nokia Qt LGPL exception 1.1", + "licenseExceptionId": "Nokia-Qt-exception-1.1", + "seeAlso": [ + "https://www.keepassx.org/dev/projects/keepassx/repository/revisions/b8dfb9cc4d5133e0f09cd7533d15a4f1c19a40f2/entry/LICENSE.NOKIA-LGPL-EXCEPTION" + ] + }, + { + "reference": "./389-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./389-exception.html", + "referenceNumber": 23, + "name": "389 Directory Server Exception", + "licenseExceptionId": "389-exception", + "seeAlso": [ + "http://directory.fedoraproject.org/wiki/GPL_Exception_License_Text", + "https://web.archive.org/web/20080828121337/http://directory.fedoraproject.org/wiki/GPL_Exception_License_Text" + ] + }, + { + "reference": "./Font-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Font-exception-2.0.html", + "referenceNumber": 24, + "name": "Font exception 2.0", + "licenseExceptionId": "Font-exception-2.0", + "seeAlso": [ + "http://www.gnu.org/licenses/gpl-faq.html#FontException" + ] + }, + { + "reference": "./GStreamer-exception-2005.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GStreamer-exception-2005.html", + "referenceNumber": 25, + "name": "GStreamer Exception (2005)", + "licenseExceptionId": "GStreamer-exception-2005", + "seeAlso": [ + "https://gstreamer.freedesktop.org/documentation/frequently-asked-questions/licensing.html?gi-language\u003dc#licensing-of-applications-using-gstreamer" + ] + }, + { + "reference": "./SHL-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./SHL-2.0.html", + "referenceNumber": 26, + "name": "Solderpad Hardware License v2.0", + "licenseExceptionId": "SHL-2.0", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-2.0/" + ] + }, + { + "reference": "./WxWindows-exception-3.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./WxWindows-exception-3.1.html", + "referenceNumber": 27, + "name": "WxWindows Library Exception 3.1", + "licenseExceptionId": "WxWindows-exception-3.1", + "seeAlso": [ + "http://www.opensource.org/licenses/WXwindows" + ] + }, + { + "reference": "./Autoconf-exception-3.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-3.0.html", + "referenceNumber": 28, + "name": "Autoconf exception 3.0", + "licenseExceptionId": "Autoconf-exception-3.0", + "seeAlso": [ + "http://www.gnu.org/licenses/autoconf-exception-3.0.html" + ] + }, + { + "reference": "./PS-or-PDF-font-exception-20170817.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./PS-or-PDF-font-exception-20170817.html", + "referenceNumber": 29, + "name": "PS/PDF font exception (2017-08-17)", + "licenseExceptionId": "PS-or-PDF-font-exception-20170817", + "seeAlso": [ + "https://github.com/ArtifexSoftware/urw-base35-fonts/blob/65962e27febc3883a17e651cdb23e783668c996f/LICENSE" + ] + }, + { + "reference": "./Autoconf-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-2.0.html", + "referenceNumber": 30, + "name": "Autoconf exception 2.0", + "licenseExceptionId": "Autoconf-exception-2.0", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html", + "http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.gz" + ] + }, + { + "reference": "./SHL-2.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./SHL-2.1.html", + "referenceNumber": 31, + "name": "Solderpad Hardware License v2.1", + "licenseExceptionId": "SHL-2.1", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-2.1/" + ] + }, + { + "reference": "./LZMA-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./LZMA-exception.html", + "referenceNumber": 32, + "name": "LZMA exception", + "licenseExceptionId": "LZMA-exception", + "seeAlso": [ + "http://nsis.sourceforge.net/Docs/AppendixI.html#I.6" + ] + }, + { + "reference": "./GCC-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GCC-exception-2.0.html", + "referenceNumber": 33, + "name": "GCC Runtime Library exception 2.0", + "licenseExceptionId": "GCC-exception-2.0", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + ] + }, + { + "reference": "./eCos-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./eCos-exception-2.0.html", + "referenceNumber": 34, + "name": "eCos exception 2.0", + "licenseExceptionId": "eCos-exception-2.0", + "seeAlso": [ + "http://ecos.sourceware.org/license-overview.html" + ] + }, + { + "reference": "./gnu-javamail-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./gnu-javamail-exception.html", + "referenceNumber": 35, + "name": "GNU JavaMail exception", + "licenseExceptionId": "gnu-javamail-exception", + "seeAlso": [ + "http://www.gnu.org/software/classpathx/javamail/javamail.html" + ] + }, + { + "reference": "./OCCT-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./OCCT-exception-1.0.html", + "referenceNumber": 36, + "name": "Open CASCADE Exception 1.0", + "licenseExceptionId": "OCCT-exception-1.0", + "seeAlso": [ + "http://www.opencascade.com/content/licensing" + ] + }, + { + "reference": "./KiCad-libraries-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./KiCad-libraries-exception.html", + "referenceNumber": 37, + "name": "KiCad Libraries Exception", + "licenseExceptionId": "KiCad-libraries-exception", + "seeAlso": [ + "https://www.kicad.org/libraries/license/" + ] + }, + { + "reference": "./GCC-exception-3.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GCC-exception-3.1.html", + "referenceNumber": 38, + "name": "GCC Runtime Library exception 3.1", + "licenseExceptionId": "GCC-exception-3.1", + "seeAlso": [ + "http://www.gnu.org/licenses/gcc-exception-3.1.html" + ] + }, + { + "reference": "./freertos-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./freertos-exception-2.0.html", + "referenceNumber": 39, + "name": "FreeRTOS Exception 2.0", + "licenseExceptionId": "freertos-exception-2.0", + "seeAlso": [ + "https://web.archive.org/web/20060809182744/http://www.freertos.org/a00114.html" + ] + }, { "reference": "./GPL-CC-1.0.json", "isDeprecatedLicenseId": false, "detailsUrl": "./GPL-CC-1.0.html", - "referenceNumber": 17, + "referenceNumber": 40, "name": "GPL Cooperation Commitment 1.0", "licenseExceptionId": "GPL-CC-1.0", "seeAlso": [ @@ -193,143 +449,11 @@ "https://gplcc.github.io/gplcc/Project/README-PROJECT.html" ] }, - { - "reference": "./OCaml-LGPL-linking-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./OCaml-LGPL-linking-exception.html", - "referenceNumber": 18, - "name": "OCaml LGPL Linking Exception", - "licenseExceptionId": "OCaml-LGPL-linking-exception", - "seeAlso": [ - "https://caml.inria.fr/ocaml/license.en.html" - ] - }, - { - "reference": "./Universal-FOSS-exception-1.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Universal-FOSS-exception-1.0.html", - "referenceNumber": 19, - "name": "Universal FOSS Exception, Version 1.0", - "licenseExceptionId": "Universal-FOSS-exception-1.0", - "seeAlso": [ - "https://oss.oracle.com/licenses/universal-foss-exception/" - ] - }, - { - "reference": "./i2p-gpl-java-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./i2p-gpl-java-exception.html", - "referenceNumber": 20, - "name": "i2p GPL+Java Exception", - "licenseExceptionId": "i2p-gpl-java-exception", - "seeAlso": [ - "http://geti2p.net/en/get-involved/develop/licenses#java_exception" - ] - }, - { - "reference": "./CLISP-exception-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./CLISP-exception-2.0.html", - "referenceNumber": 21, - "name": "CLISP exception 2.0", - "licenseExceptionId": "CLISP-exception-2.0", - "seeAlso": [ - "http://sourceforge.net/p/clisp/clisp/ci/default/tree/COPYRIGHT" - ] - }, - { - "reference": "./OCCT-exception-1.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./OCCT-exception-1.0.html", - "referenceNumber": 22, - "name": "Open CASCADE Exception 1.0", - "licenseExceptionId": "OCCT-exception-1.0", - "seeAlso": [ - "http://www.opencascade.com/content/licensing" - ] - }, - { - "reference": "./Qwt-exception-1.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Qwt-exception-1.0.html", - "referenceNumber": 23, - "name": "Qwt exception 1.0", - "licenseExceptionId": "Qwt-exception-1.0", - "seeAlso": [ - "http://qwt.sourceforge.net/qwtlicense.html" - ] - }, - { - "reference": "./gnu-javamail-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./gnu-javamail-exception.html", - "referenceNumber": 24, - "name": "GNU JavaMail exception", - "licenseExceptionId": "gnu-javamail-exception", - "seeAlso": [ - "http://www.gnu.org/software/classpathx/javamail/javamail.html" - ] - }, - { - "reference": "./u-boot-exception-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./u-boot-exception-2.0.html", - "referenceNumber": 25, - "name": "U-Boot exception 2.0", - "licenseExceptionId": "u-boot-exception-2.0", - "seeAlso": [ - "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003dLicenses/Exceptions" - ] - }, - { - "reference": "./freertos-exception-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./freertos-exception-2.0.html", - "referenceNumber": 26, - "name": "FreeRTOS Exception 2.0", - "licenseExceptionId": "freertos-exception-2.0", - "seeAlso": [ - "https://web.archive.org/web/20060809182744/http://www.freertos.org/a00114.html" - ] - }, - { - "reference": "./Qt-GPL-exception-1.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Qt-GPL-exception-1.0.html", - "referenceNumber": 27, - "name": "Qt GPL exception 1.0", - "licenseExceptionId": "Qt-GPL-exception-1.0", - "seeAlso": [ - "http://code.qt.io/cgit/qt/qtbase.git/tree/LICENSE.GPL3-EXCEPT" - ] - }, - { - "reference": "./OpenJDK-assembly-exception-1.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./OpenJDK-assembly-exception-1.0.html", - "referenceNumber": 28, - "name": "OpenJDK Assembly exception 1.0", - "licenseExceptionId": "OpenJDK-assembly-exception-1.0", - "seeAlso": [ - "http://openjdk.java.net/legal/assembly-exception.html" - ] - }, - { - "reference": "./SHL-2.1.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./SHL-2.1.html", - "referenceNumber": 29, - "name": "Solderpad Hardware License v2.1", - "licenseExceptionId": "SHL-2.1", - "seeAlso": [ - "https://solderpad.org/licenses/SHL-2.1/" - ] - }, { "reference": "./mif-exception.json", "isDeprecatedLicenseId": false, "detailsUrl": "./mif-exception.html", - "referenceNumber": 30, + "referenceNumber": 41, "name": "Macros and Inline Functions Exception", "licenseExceptionId": "mif-exception", "seeAlso": [ @@ -339,128 +463,38 @@ ] }, { - "reference": "./Fawkes-Runtime-exception.json", + "reference": "./Linux-syscall-note.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./Fawkes-Runtime-exception.html", - "referenceNumber": 31, - "name": "Fawkes Runtime Exception", - "licenseExceptionId": "Fawkes-Runtime-exception", + "detailsUrl": "./Linux-syscall-note.html", + "referenceNumber": 42, + "name": "Linux Syscall Note", + "licenseExceptionId": "Linux-syscall-note", "seeAlso": [ - "http://www.fawkesrobotics.org/about/license/" + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/COPYING" ] }, { - "reference": "./Swift-exception.json", + "reference": "./i2p-gpl-java-exception.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./Swift-exception.html", - "referenceNumber": 32, - "name": "Swift Exception", - "licenseExceptionId": "Swift-exception", + "detailsUrl": "./i2p-gpl-java-exception.html", + "referenceNumber": 43, + "name": "i2p GPL+Java Exception", + "licenseExceptionId": "i2p-gpl-java-exception", "seeAlso": [ - "https://swift.org/LICENSE.txt", - "https://github.com/apple/swift-package-manager/blob/7ab2275f447a5eb37497ed63a9340f8a6d1e488b/LICENSE.txt#L205" + "http://geti2p.net/en/get-involved/develop/licenses#java_exception" ] }, { - "reference": "./GPL-3.0-linking-exception.json", + "reference": "./Libtool-exception.json", "isDeprecatedLicenseId": false, - "detailsUrl": "./GPL-3.0-linking-exception.html", - "referenceNumber": 33, - "name": "GPL-3.0 Linking Exception", - "licenseExceptionId": "GPL-3.0-linking-exception", + "detailsUrl": "./Libtool-exception.html", + "referenceNumber": 44, + "name": "Libtool Exception", + "licenseExceptionId": "Libtool-exception", "seeAlso": [ - "https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs" - ] - }, - { - "reference": "./SHL-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./SHL-2.0.html", - "referenceNumber": 34, - "name": "Solderpad Hardware License v2.0", - "licenseExceptionId": "SHL-2.0", - "seeAlso": [ - "https://solderpad.org/licenses/SHL-2.0/" - ] - }, - { - "reference": "./Classpath-exception-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Classpath-exception-2.0.html", - "referenceNumber": 35, - "name": "Classpath exception 2.0", - "licenseExceptionId": "Classpath-exception-2.0", - "seeAlso": [ - "http://www.gnu.org/software/classpath/license.html", - "https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception" - ] - }, - { - "reference": "./LZMA-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./LZMA-exception.html", - "referenceNumber": 36, - "name": "LZMA exception", - "licenseExceptionId": "LZMA-exception", - "seeAlso": [ - "http://nsis.sourceforge.net/Docs/AppendixI.html#I.6" - ] - }, - { - "reference": "./Font-exception-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./Font-exception-2.0.html", - "referenceNumber": 37, - "name": "Font exception 2.0", - "licenseExceptionId": "Font-exception-2.0", - "seeAlso": [ - "http://www.gnu.org/licenses/gpl-faq.html#FontException" - ] - }, - { - "reference": "./Nokia-Qt-exception-1.1.json", - "isDeprecatedLicenseId": true, - "detailsUrl": "./Nokia-Qt-exception-1.1.html", - "referenceNumber": 38, - "name": "Nokia Qt LGPL exception 1.1", - "licenseExceptionId": "Nokia-Qt-exception-1.1", - "seeAlso": [ - "https://www.keepassx.org/dev/projects/keepassx/repository/revisions/b8dfb9cc4d5133e0f09cd7533d15a4f1c19a40f2/entry/LICENSE.NOKIA-LGPL-EXCEPTION" - ] - }, - { - "reference": "./DigiRule-FOSS-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./DigiRule-FOSS-exception.html", - "referenceNumber": 39, - "name": "DigiRule FOSS License Exception", - "licenseExceptionId": "DigiRule-FOSS-exception", - "seeAlso": [ - "http://www.digirulesolutions.com/drupal/foss" - ] - }, - { - "reference": "./eCos-exception-2.0.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./eCos-exception-2.0.html", - "referenceNumber": 40, - "name": "eCos exception 2.0", - "licenseExceptionId": "eCos-exception-2.0", - "seeAlso": [ - "http://ecos.sourceware.org/license-overview.html" - ] - }, - { - "reference": "./389-exception.json", - "isDeprecatedLicenseId": false, - "detailsUrl": "./389-exception.html", - "referenceNumber": 41, - "name": "389 Directory Server Exception", - "licenseExceptionId": "389-exception", - "seeAlso": [ - "http://directory.fedoraproject.org/wiki/GPL_Exception_License_Text" + "http://git.savannah.gnu.org/cgit/libtool.git/tree/m4/libtool.m4" ] } ], - "releaseDate": "2022-05-08" + "releaseDate": "2022-08-12" } \ No newline at end of file diff --git a/Library/Homebrew/data/spdx/spdx_licenses.json b/Library/Homebrew/data/spdx/spdx_licenses.json index a8fba9c425..dd3a2db7d8 100644 --- a/Library/Homebrew/data/spdx/spdx_licenses.json +++ b/Library/Homebrew/data/spdx/spdx_licenses.json @@ -1,187 +1,90 @@ { - "licenseListVersion": "3.17", + "licenseListVersion": "3.18", "licenses": [ { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", + "reference": "https://spdx.org/licenses/VSL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", "referenceNumber": 0, - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", - "licenseId": "CC-BY-NC-ND-2.0", + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" + "https://opensource.org/licenses/VSL-1.0" ], - "isOsiApproved": false + "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/SGI-B-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", + "reference": "https://spdx.org/licenses/GPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", "referenceNumber": 1, - "name": "SGI Free Software License B v2.0", - "licenseId": "SGI-B-2.0", + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0", "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" ], - "isOsiApproved": false, + "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/LPPL-1.3c.html", + "reference": "https://spdx.org/licenses/blessing.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", + "detailsUrl": "https://spdx.org/licenses/blessing.json", "referenceNumber": 2, - "name": "LaTeX Project Public License v1.3c", - "licenseId": "LPPL-1.3c", + "name": "SQLite Blessing", + "licenseId": "blessing", "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-3c.txt", - "https://opensource.org/licenses/LPPL-1.3c" + "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", + "https://sqlite.org/src/artifact/df5091916dbb40e6" ], - "isOsiApproved": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", + "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", "referenceNumber": 3, - "name": "NIST Public Domain Notice with license fallback", - "licenseId": "NIST-PD-fallback", + "name": "BSD 4 Clause Shortened", + "licenseId": "BSD-4-Clause-Shortened", "seeAlso": [ - "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", - "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" + "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/libtiff.html", + "reference": "https://spdx.org/licenses/Libpng.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libtiff.json", + "detailsUrl": "https://spdx.org/licenses/Libpng.json", "referenceNumber": 4, - "name": "libtiff License", - "licenseId": "libtiff", + "name": "libpng License", + "licenseId": "Libpng", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/libtiff" + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/XSkat.html", + "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/XSkat.json", + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", "referenceNumber": 5, - "name": "XSkat License", - "licenseId": "XSkat", + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "licenseId": "OFL-1.0-no-RFN", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/XSkat_License" + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "reference": "https://spdx.org/licenses/MakeIndex.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", + "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", "referenceNumber": 6, - "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0", - "licenseId": "PDDL-1.0", + "name": "MakeIndex License", + "licenseId": "MakeIndex", "seeAlso": [ - "http://opendatacommons.org/licenses/pddl/1.0/", - "https://opendatacommons.org/licenses/pddl/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/KiCad-libraries-exception.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/KiCad-libraries-exception.json", - "referenceNumber": 7, - "name": "KiCad Libraries Exception", - "licenseId": "KiCad-libraries-exception", - "seeAlso": [ - "https://www.kicad.org/libraries/license/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", - "referenceNumber": 8, - "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", - "licenseId": "CC-BY-NC-SA-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", - "referenceNumber": 9, - "name": "GNU Free Documentation License v1.1 only - no invariants", - "licenseId": "GFDL-1.1-no-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Xerox.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xerox.json", - "referenceNumber": 10, - "name": "Xerox License", - "licenseId": "Xerox", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Xerox" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", - "referenceNumber": 11, - "name": "LaTeX Project Public License v1.1", - "licenseId": "LPPL-1.1", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/VOSTROM.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", - "referenceNumber": 12, - "name": "VOSTROM Public License for Open Source", - "licenseId": "VOSTROM", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/VOSTROM" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/UCL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", - "referenceNumber": 13, - "name": "Upstream Compatibility License v1.0", - "licenseId": "UCL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/UCL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ADSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ADSL.json", - "referenceNumber": 14, - "name": "Amazon Digital Services License", - "licenseId": "ADSL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + "https://fedoraproject.org/wiki/Licensing/MakeIndex" ], "isOsiApproved": false }, @@ -189,7 +92,7 @@ "reference": "https://spdx.org/licenses/OSL-2.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", - "referenceNumber": 15, + "referenceNumber": 7, "name": "Open Software License 2.0", "licenseId": "OSL-2.0", "seeAlso": [ @@ -199,625 +102,36 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/AAL.html", + "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AAL.json", - "referenceNumber": 16, - "name": "Attribution Assurance License", - "licenseId": "AAL", + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", + "referenceNumber": 8, + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", "seeAlso": [ - "https://opensource.org/licenses/attribution" + "https://opensource.org/licenses/Artistic-1.0" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/FDK-AAC.html", + "reference": "https://spdx.org/licenses/ZPL-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", - "referenceNumber": 17, - "name": "Fraunhofer FDK AAC Codec Library", - "licenseId": "FDK-AAC", + "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", + "referenceNumber": 9, + "name": "Zope Public License 2.0", + "licenseId": "ZPL-2.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FDK-AAC", - "https://directory.fsf.org/wiki/License:Fdk" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/W3C-20150513.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", - "referenceNumber": 18, - "name": "W3C Software Notice and Document License (2015-05-13)", - "licenseId": "W3C-20150513", - "seeAlso": [ - "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AFL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", - "referenceNumber": 19, - "name": "Academic Free License v1.1", - "licenseId": "AFL-1.1", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", - "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + "http://old.zope.org/Resources/License/ZPL-2.0", + "https://opensource.org/licenses/ZPL-2.0" ], "isOsiApproved": true, "isFsfLibre": true }, - { - "reference": "https://spdx.org/licenses/W3C.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C.json", - "referenceNumber": 20, - "name": "W3C Software Notice and License (2002-12-31)", - "licenseId": "W3C", - "seeAlso": [ - "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", - "https://opensource.org/licenses/W3C" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Sleepycat.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", - "referenceNumber": 21, - "name": "Sleepycat License", - "licenseId": "Sleepycat", - "seeAlso": [ - "https://opensource.org/licenses/Sleepycat" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", - "referenceNumber": 22, - "name": "CeCILL Free Software License Agreement v1.1", - "licenseId": "CECILL-1.1", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mpich2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mpich2.json", - "referenceNumber": 23, - "name": "mpich2 License", - "licenseId": "mpich2", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SISSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SISSL.json", - "referenceNumber": 24, - "name": "Sun Industry Standards Source License v1.1", - "licenseId": "SISSL", - "seeAlso": [ - "http://www.openoffice.org/licenses/sissl_license.html", - "https://opensource.org/licenses/SISSL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NLOD-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", - "referenceNumber": 25, - "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", - "licenseId": "NLOD-1.0", - "seeAlso": [ - "http://data.norge.no/nlod/en/1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ANTLR-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", - "referenceNumber": 26, - "name": "ANTLR Software Rights Notice", - "licenseId": "ANTLR-PD", - "seeAlso": [ - "http://www.antlr2.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", - "referenceNumber": 27, - "name": "GNU General Public License v3.0 only", - "licenseId": "GPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/gnuplot.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/gnuplot.json", - "referenceNumber": 28, - "name": "gnuplot License", - "licenseId": "gnuplot", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Gnuplot" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NLOD-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", - "referenceNumber": 29, - "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", - "licenseId": "NLOD-2.0", - "seeAlso": [ - "http://data.norge.no/nlod/en/2.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", - "referenceNumber": 30, - "name": "BSD 3-Clause Open MPI variant", - "licenseId": "BSD-3-Clause-Open-MPI", - "seeAlso": [ - "https://www.open-mpi.org/community/license.php", - "http://www.netlib.org/lapack/LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", - "referenceNumber": 31, - "name": "Licence Libre du Québec – Permissive version 1.1", - "licenseId": "LiLiQ-P-1.1", - "seeAlso": [ - "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", - "http://opensource.org/licenses/LiLiQ-P-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", - "referenceNumber": 32, - "name": "BSD 3-Clause Clear License", - "licenseId": "BSD-3-Clause-Clear", - "seeAlso": [ - "http://labs.metacarta.com/license-explanation.html#license" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/FSFUL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFUL.json", - "referenceNumber": 33, - "name": "FSF Unlimited License", - "licenseId": "FSFUL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", - "referenceNumber": 34, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", - "licenseId": "CC-BY-NC-SA-2.0-UK", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", - "referenceNumber": 35, - "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", - "licenseId": "CERN-OHL-S-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Spencer-94.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", - "referenceNumber": 36, - "name": "Spencer License 94", - "licenseId": "Spencer-94", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", - "referenceNumber": 37, - "name": "CERN Open Hardware Licence v1.2", - "licenseId": "CERN-OHL-1.2", - "seeAlso": [ - "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", - "referenceNumber": 38, - "name": "GNU Free Documentation License v1.1 or later", - "licenseId": "GFDL-1.1-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", - "referenceNumber": 39, - "name": "Affero General Public License v1.0 or later", - "licenseId": "AGPL-1.0-or-later", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Wsuipa.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", - "referenceNumber": 40, - "name": "Wsuipa License", - "licenseId": "Wsuipa", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Wsuipa" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AML.json", - "referenceNumber": 41, - "name": "Apple MIT License", - "licenseId": "AML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", - "referenceNumber": 42, - "name": "BSD 2-Clause \"Simplified\" License", - "licenseId": "BSD-2-Clause", - "seeAlso": [ - "https://opensource.org/licenses/BSD-2-Clause" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/DSDP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DSDP.json", - "referenceNumber": 43, - "name": "DSDP License", - "licenseId": "DSDP", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/DSDP" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", - "referenceNumber": 44, - "name": "Creative Commons Attribution 2.5 Generic", - "licenseId": "CC-BY-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-CMU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", - "referenceNumber": 45, - "name": "CMU License", - "licenseId": "MIT-CMU", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", - "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Beerware.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Beerware.json", - "referenceNumber": 46, - "name": "Beerware License", - "licenseId": "Beerware", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Beerware", - "https://people.freebsd.org/~phk/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail.json", - "referenceNumber": 47, - "name": "Sendmail License", - "licenseId": "Sendmail", - "seeAlso": [ - "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", - "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", - "referenceNumber": 48, - "name": "Technische Universitaet Berlin License 1.0", - "licenseId": "TU-Berlin-1.0", - "seeAlso": [ - "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CNRI-Jython.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", - "referenceNumber": 49, - "name": "CNRI Jython License", - "licenseId": "CNRI-Jython", - "seeAlso": [ - "http://www.jython.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/mplus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/mplus.json", - "referenceNumber": 50, - "name": "mplus Font License", - "licenseId": "mplus", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CPOL-1.02.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", - "referenceNumber": 51, - "name": "Code Project Open License 1.02", - "licenseId": "CPOL-1.02", - "seeAlso": [ - "http://www.codeproject.com/info/cpol10.aspx" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", - "referenceNumber": 52, - "name": "BSD 3-Clause No Nuclear License 2014", - "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", - "seeAlso": [ - "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ISC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ISC.json", - "referenceNumber": 53, - "name": "ISC License", - "licenseId": "ISC", - "seeAlso": [ - "https://www.isc.org/licenses/", - "https://www.isc.org/downloads/software-support-policy/isc-license/", - "https://opensource.org/licenses/ISC" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", - "referenceNumber": 54, - "name": "Creative Commons Attribution Share Alike 4.0 International", - "licenseId": "CC-BY-SA-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/4.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Eurosym.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Eurosym.json", - "referenceNumber": 55, - "name": "Eurosym License", - "licenseId": "Eurosym", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Eurosym" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", - "referenceNumber": 56, - "name": "GNU Lesser General Public License v3.0 only", - "licenseId": "LGPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", - "referenceNumber": 57, - "name": "Open LDAP Public License v1.3", - "licenseId": "OLDAP-1.3", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", - "referenceNumber": 58, - "name": "GNU Free Documentation License v1.1 or later - invariants", - "licenseId": "GFDL-1.1-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Glulxe.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Glulxe.json", - "referenceNumber": 59, - "name": "Glulxe License", - "licenseId": "Glulxe", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Glulxe" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SimPL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", - "referenceNumber": 60, - "name": "Simple Public License 2.0", - "licenseId": "SimPL-2.0", - "seeAlso": [ - "https://opensource.org/licenses/SimPL-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", - "referenceNumber": 61, - "name": "Community Data License Agreement Permissive 2.0", - "licenseId": "CDLA-Permissive-2.0", - "seeAlso": [ - "https://cdla.dev/permissive-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", - "referenceNumber": 62, - "name": "GNU General Public License v2.0 w/Font exception", - "licenseId": "GPL-2.0-with-font-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-faq.html#FontException" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", - "referenceNumber": 63, - "name": "Open Government Licence v2.0", - "licenseId": "OGL-UK-2.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", - "referenceNumber": 64, - "name": "Creative Commons Attribution Share Alike 3.0 Germany", - "licenseId": "CC-BY-SA-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", - "referenceNumber": 65, + "referenceNumber": 10, "name": "Creative Commons Attribution No Derivatives 1.0 Generic", "licenseId": "CC-BY-ND-1.0", "seeAlso": [ @@ -827,36 +141,318 @@ "isFsfLibre": false }, { - "reference": "https://spdx.org/licenses/GFDL-1.1.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", - "referenceNumber": 66, - "name": "GNU Free Documentation License v1.1", - "licenseId": "GFDL-1.1", + "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", + "referenceNumber": 11, + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Xerox.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xerox.json", + "referenceNumber": 12, + "name": "Xerox License", + "licenseId": "Xerox", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xerox" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Arphic-1999.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", + "referenceNumber": 13, + "name": "Arphic Public License", + "licenseId": "Arphic-1999", + "seeAlso": [ + "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-TOU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", + "referenceNumber": 14, + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "seeAlso": [ + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", + "referenceNumber": 15, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-NC-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-advertising.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", + "referenceNumber": 16, + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", + "referenceNumber": 17, + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CC-BY-4.0.html", + "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", - "referenceNumber": 67, - "name": "Creative Commons Attribution 4.0 International", - "licenseId": "CC-BY-4.0", + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", + "referenceNumber": 18, + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", "seeAlso": [ - "https://creativecommons.org/licenses/by/4.0/legalcode" + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" ], - "isOsiApproved": false, + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", + "referenceNumber": 19, + "name": "European Union Public License 1.1", + "licenseId": "EUPL-1.1", + "seeAlso": [ + "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", + "https://opensource.org/licenses/EUPL-1.1" + ], + "isOsiApproved": true, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", + "referenceNumber": 20, + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OML.json", + "referenceNumber": 21, + "name": "Open Market License", + "licenseId": "OML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", + "referenceNumber": 22, + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", + "referenceNumber": 23, + "name": "Solderpad Hardware License v0.5", + "licenseId": "SHL-0.5", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.5/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", + "referenceNumber": 24, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", + "referenceNumber": 25, + "name": "GNU Free Documentation License v1.3 or later - invariants", + "licenseId": "GFDL-1.3-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", + "referenceNumber": 26, + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", + "referenceNumber": 27, + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", + "referenceNumber": 28, + "name": "Creative Commons Attribution Non Commercial 3.0 Germany", + "licenseId": "CC-BY-NC-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FreeImage.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeImage.json", + "referenceNumber": 29, + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "seeAlso": [ + "http://freeimage.sourceforge.net/freeimage-license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", + "referenceNumber": 30, + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "licenseId": "OFL-1.1-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", + "referenceNumber": 31, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Intel-ACPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", + "referenceNumber": 32, + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCCT-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", + "referenceNumber": 33, + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "seeAlso": [ + "http://www.opencascade.com/content/occt-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", + "referenceNumber": 34, + "name": "GNU Free Documentation License v1.2 or later - no invariants", + "licenseId": "GFDL-1.2-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GL2PS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GL2PS.json", + "referenceNumber": 35, + "name": "GL2PS License", + "licenseId": "GL2PS", + "seeAlso": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/OpenSSL.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", - "referenceNumber": 68, + "referenceNumber": 36, "name": "OpenSSL License", "licenseId": "OpenSSL", "seeAlso": [ @@ -866,328 +462,238 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", + "reference": "https://spdx.org/licenses/Ruby.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", - "referenceNumber": 69, - "name": "Technische Universitaet Berlin License 2.0", - "licenseId": "TU-Berlin-2.0", + "detailsUrl": "https://spdx.org/licenses/Ruby.json", + "referenceNumber": 37, + "name": "Ruby License", + "licenseId": "Ruby", "seeAlso": [ - "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" + "http://www.ruby-lang.org/en/LICENSE.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", + "referenceNumber": 38, + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Naumen.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Naumen.json", + "referenceNumber": 39, + "name": "Naumen Public License", + "licenseId": "Naumen", + "seeAlso": [ + "https://opensource.org/licenses/Naumen" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", + "referenceNumber": 40, + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/DOC.html", + "reference": "https://spdx.org/licenses/Adobe-Glyph.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DOC.json", - "referenceNumber": 70, - "name": "DOC License", - "licenseId": "DOC", + "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", + "referenceNumber": 41, + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", "seeAlso": [ - "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", - "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "reference": "https://spdx.org/licenses/NOSL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", - "referenceNumber": 71, - "name": "GNU Free Documentation License v1.2 or later - no invariants", - "licenseId": "GFDL-1.2-no-invariants-or-later", + "detailsUrl": "https://spdx.org/licenses/NOSL.json", + "referenceNumber": 42, + "name": "Netizen Open Source License", + "licenseId": "NOSL", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", + "referenceNumber": 43, + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/dvipdfm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", + "referenceNumber": 44, + "name": "dvipdfm License", + "licenseId": "dvipdfm", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/dvipdfm" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/QPL-1.0.html", + "reference": "https://spdx.org/licenses/Spencer-86.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", - "referenceNumber": 72, - "name": "Q Public License 1.0", - "licenseId": "QPL-1.0", + "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", + "referenceNumber": 45, + "name": "Spencer License 86", + "licenseId": "Spencer-86", "seeAlso": [ - "http://doc.qt.nokia.com/3.3/license.html", - "https://opensource.org/licenses/QPL-1.0", - "https://doc.qt.io/archives/3.3/license.html" + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", + "referenceNumber": 46, + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/LPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", + "referenceNumber": 47, + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BUSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", + "referenceNumber": 48, + "name": "Business Source License 1.1", + "licenseId": "BUSL-1.1", + "seeAlso": [ + "https://mariadb.com/bsl11/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", + "referenceNumber": 49, + "name": "CNRI Python License", + "licenseId": "CNRI-Python", + "seeAlso": [ + "https://opensource.org/licenses/CNRI-Python" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Saxpath.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Saxpath.json", + "referenceNumber": 50, + "name": "Saxpath License", + "licenseId": "Saxpath", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", + "referenceNumber": 51, + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-1.0" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", + "referenceNumber": 52, + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "seeAlso": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OLDAP-2.8.html", + "reference": "https://spdx.org/licenses/LPPL-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", - "referenceNumber": 73, - "name": "Open LDAP Public License v2.8", - "licenseId": "OLDAP-2.8", + "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", + "referenceNumber": 53, + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", "seeAlso": [ - "http://www.openldap.org/software/release/license.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OML.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OML.json", - "referenceNumber": 74, - "name": "Open Market License", - "licenseId": "OML", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + "http://www.latex-project.org/lppl/lppl-1-1.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OLDAP-2.7.html", + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", - "referenceNumber": 75, - "name": "Open LDAP Public License v2.7", - "licenseId": "OLDAP-2.7", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", + "referenceNumber": 54, + "name": "GNU Free Documentation License v1.1 or later - invariants", + "licenseId": "GFDL-1.1-invariants-or-later", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NIST-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", - "referenceNumber": 76, - "name": "NIST Public Domain Notice", - "licenseId": "NIST-PD", - "seeAlso": [ - "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", - "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Bitstream-Vera.html", + "reference": "https://spdx.org/licenses/Afmparse.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", - "referenceNumber": 77, - "name": "Bitstream Vera Font License", - "licenseId": "Bitstream-Vera", + "detailsUrl": "https://spdx.org/licenses/Afmparse.json", + "referenceNumber": 55, + "name": "Afmparse License", + "licenseId": "Afmparse", "seeAlso": [ - "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", - "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", - "referenceNumber": 78, - "name": "GNU Free Documentation License v1.2 or later", - "licenseId": "GFDL-1.2-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", - "referenceNumber": 79, - "name": "SIL Open Font License 1.1 with Reserved Font Name", - "licenseId": "OFL-1.1-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Bahyph.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Bahyph.json", - "referenceNumber": 80, - "name": "Bahyph License", - "licenseId": "Bahyph", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Bahyph" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Barr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Barr.json", - "referenceNumber": 81, - "name": "Barr License", - "licenseId": "Barr", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Barr" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/COIL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", - "referenceNumber": 82, - "name": "Copyfree Open Innovation License", - "licenseId": "COIL-1.0", - "seeAlso": [ - "https://coil.apotheon.org/plaintext/01.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", - "referenceNumber": 83, - "name": "GNU Free Documentation License v1.3", - "licenseId": "GFDL-1.3", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CECILL-B.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", - "referenceNumber": 84, - "name": "CeCILL-B Free Software License Agreement", - "licenseId": "CECILL-B", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/JPNIC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JPNIC.json", - "referenceNumber": 85, - "name": "Japan Network Information Center License", - "licenseId": "JPNIC", - "seeAlso": [ - "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Zed.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zed.json", - "referenceNumber": 86, - "name": "Zed License", - "licenseId": "Zed", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Zed" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ICU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ICU.json", - "referenceNumber": 87, - "name": "ICU License", - "licenseId": "ICU", - "seeAlso": [ - "http://source.icu-project.org/repos/icu/icu/trunk/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", - "referenceNumber": 88, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", - "licenseId": "CC-BY-NC-SA-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", - "referenceNumber": 89, - "name": "Creative Commons Attribution No Derivatives 3.0 Germany", - "licenseId": "CC-BY-ND-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", - "referenceNumber": 90, - "name": "bzip2 and libbzip2 License v1.0.5", - "licenseId": "bzip2-1.0.5", - "seeAlso": [ - "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", - "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", - "referenceNumber": 91, - "name": "Sun Public License v1.0", - "licenseId": "SPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/SPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/YPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", - "referenceNumber": 92, - "name": "Yahoo! Public License v1.0", - "licenseId": "YPL-1.0", - "seeAlso": [ - "http://www.zimbra.com/license/yahoo_public_license_1.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", - "referenceNumber": 93, - "name": "OSET Public License version 2.1", - "licenseId": "OSET-PL-2.1", - "seeAlso": [ - "http://www.osetfoundation.org/public-license", - "https://opensource.org/licenses/OPL-2.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Noweb.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Noweb.json", - "referenceNumber": 94, - "name": "Noweb License", - "licenseId": "Noweb", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Noweb" + "https://fedoraproject.org/wiki/Licensing/Afmparse" ], "isOsiApproved": false }, @@ -1195,7 +701,7 @@ "reference": "https://spdx.org/licenses/RPSL-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json", - "referenceNumber": 95, + "referenceNumber": 56, "name": "RealNetworks Public Source License v1.0", "licenseId": "RPSL-1.0", "seeAlso": [ @@ -1206,83 +712,952 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "reference": "https://spdx.org/licenses/EPL-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", - "referenceNumber": 96, - "name": "Lawrence Berkeley National Labs BSD variant license", - "licenseId": "BSD-3-Clause-LBNL", + "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", + "referenceNumber": 57, + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", + "referenceNumber": 58, + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "seeAlso": [ + "https://cdla.io/permissive-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", + "referenceNumber": 59, + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", + "referenceNumber": 60, + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "seeAlso": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", + "referenceNumber": 61, + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "seeAlso": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "reference": "https://spdx.org/licenses/CECILL-C.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", - "referenceNumber": 97, - "name": "Community Data License Agreement Sharing 1.0", - "licenseId": "CDLA-Sharing-1.0", + "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", + "referenceNumber": 62, + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", "seeAlso": [ - "https://cdla.io/sharing-1-0" + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/RPL-1.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", + "referenceNumber": 63, + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.5" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/libselinux-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", + "referenceNumber": 64, + "name": "libselinux public domain notice", + "licenseId": "libselinux-1.0", + "seeAlso": [ + "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CECILL-1.0.html", + "reference": "https://spdx.org/licenses/Zimbra-1.4.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", - "referenceNumber": 98, - "name": "CeCILL Free Software License Agreement v1.0", - "licenseId": "CECILL-1.0", + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", + "referenceNumber": 65, + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + "http://www.zimbra.com/legal/zimbra-public-license-1-4" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/AMPAS.html", + "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMPAS.json", - "referenceNumber": 99, - "name": "Academy of Motion Picture Arts and Sciences BSD", - "licenseId": "AMPAS", + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", + "referenceNumber": 66, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "referenceNumber": 67, + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-PDDC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", + "referenceNumber": 68, + "name": "Creative Commons Public Domain Dedication and Certification", + "licenseId": "CC-PDDC", + "seeAlso": [ + "https://creativecommons.org/licenses/publicdomain/" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/APAFML.html", + "reference": "https://spdx.org/licenses/OLDAP-2.8.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APAFML.json", - "referenceNumber": 100, - "name": "Adobe Postscript AFM License", - "licenseId": "APAFML", + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", + "referenceNumber": 69, + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" + "http://www.openldap.org/software/release/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", + "referenceNumber": 70, + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", + "referenceNumber": 71, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Leptonica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Leptonica.json", + "referenceNumber": 72, + "name": "Leptonica License", + "licenseId": "Leptonica", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", + "reference": "https://spdx.org/licenses/Python-2.0.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", - "referenceNumber": 101, - "name": "Creative Commons Attribution No Derivatives 3.0 Unported", - "licenseId": "CC-BY-ND-3.0", + "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", + "referenceNumber": 73, + "name": "Python License 2.0.1", + "licenseId": "Python-2.0.1", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + "https://www.python.org/download/releases/2.0.1/license/", + "https://docs.python.org/3/license.html", + "https://github.com/python/cpython/blob/main/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", + "referenceNumber": 74, + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3a.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", + "referenceNumber": 75, + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SimPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", + "referenceNumber": 76, + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/SimPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/W3C-20150513.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", + "referenceNumber": 77, + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "seeAlso": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", + "referenceNumber": 78, + "name": "BSD 3-Clause Open MPI variant", + "licenseId": "BSD-3-Clause-Open-MPI", + "seeAlso": [ + "https://www.open-mpi.org/community/license.php", + "http://www.netlib.org/lapack/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Protection.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", + "referenceNumber": 79, + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGTSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGTSL.json", + "referenceNumber": 80, + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "seeAlso": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FSFULLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", + "referenceNumber": 81, + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", + "referenceNumber": 82, + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", + "referenceNumber": 83, + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "seeAlso": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPA.json", + "referenceNumber": 84, + "name": "IPA Font License", + "licenseId": "IPA", + "seeAlso": [ + "https://opensource.org/licenses/IPA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", + "referenceNumber": 85, + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "licenseId": "CC-BY-NC-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.0/legalcode" ], "isOsiApproved": false, "isFsfLibre": false }, + { + "reference": "https://spdx.org/licenses/CECILL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", + "referenceNumber": 86, + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NLOD-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", + "referenceNumber": 87, + "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", + "licenseId": "NLOD-1.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PSF-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", + "referenceNumber": 88, + "name": "Python Software Foundation License 2.0", + "licenseId": "PSF-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", + "referenceNumber": 89, + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "licenseId": "CC-BY-NC-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Borceux.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Borceux.json", + "referenceNumber": 90, + "name": "Borceux license", + "licenseId": "Borceux", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Borceux" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", + "referenceNumber": 91, + "name": "TAPR Open Hardware License v1.0", + "licenseId": "TAPR-OHL-1.0", + "seeAlso": [ + "https://www.tapr.org/OHL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", + "referenceNumber": 92, + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "seeAlso": [ + "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-6.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", + "referenceNumber": 93, + "name": "The Parity Public License 6.0.0", + "licenseId": "Parity-6.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/6.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", + "referenceNumber": 94, + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", + "referenceNumber": 95, + "name": "BSD 3-Clause Modification", + "licenseId": "BSD-3-Clause-Modification", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", + "referenceNumber": 96, + "name": "GNU Free Documentation License v1.3 only - invariants", + "licenseId": "GFDL-1.3-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-94.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", + "referenceNumber": 97, + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unlicense.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense.json", + "referenceNumber": 98, + "name": "The Unlicense", + "licenseId": "Unlicense", + "seeAlso": [ + "https://unlicense.org/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", + "referenceNumber": 99, + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "seeAlso": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DSDP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DSDP.json", + "referenceNumber": 100, + "name": "DSDP License", + "licenseId": "DSDP", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/DSDP" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", + "referenceNumber": 101, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", + "licenseId": "CC-BY-NC-ND-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HTMLTIDY.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", + "referenceNumber": 102, + "name": "HTML Tidy License", + "licenseId": "HTMLTIDY", + "seeAlso": [ + "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", + "referenceNumber": 103, + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", + "seeAlso": [ + "http://artlibre.org/licence/lal/licence-art-libre-12/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", + "referenceNumber": 104, + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", + "referenceNumber": 105, + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", + "referenceNumber": 106, + "name": "SIL Open Font License 1.0 with Reserved Font Name", + "licenseId": "OFL-1.0-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zed.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zed.json", + "referenceNumber": 107, + "name": "Zed License", + "licenseId": "Zed", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Zed" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NGPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NGPL.json", + "referenceNumber": 108, + "name": "Nethack General Public License", + "licenseId": "NGPL", + "seeAlso": [ + "https://opensource.org/licenses/NGPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", + "referenceNumber": 109, + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IJG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG.json", + "referenceNumber": 110, + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "seeAlso": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3c.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", + "referenceNumber": 111, + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", + "referenceNumber": 112, + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-CMU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", + "referenceNumber": 113, + "name": "CMU License", + "licenseId": "MIT-CMU", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", + "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", + "referenceNumber": 114, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CNRI-Jython.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", + "referenceNumber": 115, + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "seeAlso": [ + "http://www.jython.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", + "referenceNumber": 116, + "name": "Creative Commons Attribution 3.0 Germany", + "licenseId": "CC-BY-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", + "referenceNumber": 117, + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/TCP-wrappers.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", + "referenceNumber": 118, + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "seeAlso": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", + "referenceNumber": 119, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", + "referenceNumber": 120, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Imlib2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Imlib2.json", + "referenceNumber": 121, + "name": "Imlib2 License", + "licenseId": "Imlib2", + "seeAlso": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/App-s2p.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/App-s2p.json", + "referenceNumber": 122, + "name": "App::s2p License", + "licenseId": "App-s2p", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/App-s2p" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", + "referenceNumber": 123, + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NTP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP.json", + "referenceNumber": 124, + "name": "NTP License", + "licenseId": "NTP", + "seeAlso": [ + "https://opensource.org/licenses/NTP" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", + "referenceNumber": 125, + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", + "referenceNumber": 126, + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", + "seeAlso": [ + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", + "referenceNumber": 127, + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "seeAlso": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SISSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", + "referenceNumber": 128, + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "seeAlso": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", + "referenceNumber": 129, + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", + "referenceNumber": 130, + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/DRL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", + "referenceNumber": 131, + "name": "Detection Rule License 1.0", + "licenseId": "DRL-1.0", + "seeAlso": [ + "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/D-FSL-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json", - "referenceNumber": 102, + "referenceNumber": 132, "name": "Deutsche Freie Software Lizenz", "licenseId": "D-FSL-1.0", "seeAlso": [ @@ -1298,77 +1673,88 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", + "reference": "https://spdx.org/licenses/BSD-3-Clause.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", - "referenceNumber": 103, - "name": "Creative Commons Attribution Non Commercial 3.0 Unported", - "licenseId": "CC-BY-NC-3.0", + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", + "referenceNumber": 133, + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/3.0/legalcode" + "https://opensource.org/licenses/BSD-3-Clause" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", + "referenceNumber": 134, + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "seeAlso": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-OpenIB.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", + "referenceNumber": 135, + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPOL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", + "referenceNumber": 136, + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "seeAlso": [ + "http://www.codeproject.com/info/cpol10.aspx" ], "isOsiApproved": false, "isFsfLibre": false }, { - "reference": "https://spdx.org/licenses/libpng-2.0.html", + "reference": "https://spdx.org/licenses/NICTA-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", - "referenceNumber": 104, - "name": "PNG Reference Library version 2", - "licenseId": "libpng-2.0", + "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", + "referenceNumber": 137, + "name": "NICTA Public Software License, Version 1.0", + "licenseId": "NICTA-1.0", "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", + "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", - "referenceNumber": 105, - "name": "PolyForm Noncommercial License 1.0.0", - "licenseId": "PolyForm-Noncommercial-1.0.0", + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", + "referenceNumber": 138, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", "seeAlso": [ - "https://polyformproject.org/licenses/noncommercial/1.0.0" + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/dvipdfm.html", + "reference": "https://spdx.org/licenses/Xnet.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", - "referenceNumber": 106, - "name": "dvipdfm License", - "licenseId": "dvipdfm", + "detailsUrl": "https://spdx.org/licenses/Xnet.json", + "referenceNumber": 139, + "name": "X.Net License", + "licenseId": "Xnet", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/dvipdfm" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", - "referenceNumber": 107, - "name": "GNU Free Documentation License v1.3 or later", - "licenseId": "GFDL-1.3-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OGTSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGTSL.json", - "referenceNumber": 108, - "name": "Open Group Test Suite License", - "licenseId": "OGTSL", - "seeAlso": [ - "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", - "https://opensource.org/licenses/OGTSL" + "https://opensource.org/licenses/Xnet" ], "isOsiApproved": true }, @@ -1376,7 +1762,7 @@ "reference": "https://spdx.org/licenses/NPL-1.1.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", - "referenceNumber": 109, + "referenceNumber": 140, "name": "Netscape Public License v1.1", "licenseId": "NPL-1.1", "seeAlso": [ @@ -1386,1520 +1772,52 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/GPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", - "referenceNumber": 110, - "name": "GNU General Public License v3.0 only", - "licenseId": "GPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", + "reference": "https://spdx.org/licenses/Parity-7.0.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", - "referenceNumber": 111, - "name": "CERN Open Hardware Licence Version 2 - Permissive", - "licenseId": "CERN-OHL-P-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", - "referenceNumber": 112, - "name": "Blue Oak Model License 1.0.0", - "licenseId": "BlueOak-1.0.0", - "seeAlso": [ - "https://blueoakcouncil.org/license/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", - "referenceNumber": 113, - "name": "GNU Affero General Public License v3.0 or later", - "licenseId": "AGPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/blessing.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/blessing.json", - "referenceNumber": 114, - "name": "SQLite Blessing", - "licenseId": "blessing", - "seeAlso": [ - "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", - "https://sqlite.org/src/artifact/df5091916dbb40e6" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ImageMagick.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", - "referenceNumber": 115, - "name": "ImageMagick License", - "licenseId": "ImageMagick", - "seeAlso": [ - "http://www.imagemagick.org/script/license.php" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", - "referenceNumber": 116, - "name": "Apple Public Source License 2.0", - "licenseId": "APSL-2.0", - "seeAlso": [ - "http://www.opensource.apple.com/license/apsl/" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MIT-advertising.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", - "referenceNumber": 117, - "name": "Enlightenment License (e16)", - "licenseId": "MIT-advertising", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/curl.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/curl.json", - "referenceNumber": 118, - "name": "curl License", - "licenseId": "curl", - "seeAlso": [ - "https://github.com/bagder/curl/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC0-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", - "referenceNumber": 119, - "name": "Creative Commons Zero v1.0 Universal", - "licenseId": "CC0-1.0", - "seeAlso": [ - "https://creativecommons.org/publicdomain/zero/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Zimbra-1.4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", - "referenceNumber": 120, - "name": "Zimbra Public License v1.4", - "licenseId": "Zimbra-1.4", - "seeAlso": [ - "http://www.zimbra.com/legal/zimbra-public-license-1-4" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", - "referenceNumber": 121, - "name": "Server Side Public License, v 1", - "licenseId": "SSPL-1.0", - "seeAlso": [ - "https://www.mongodb.com/licensing/server-side-public-license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/psutils.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/psutils.json", - "referenceNumber": 122, - "name": "psutils License", - "licenseId": "psutils", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/psutils" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", - "referenceNumber": 123, - "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", - "licenseId": "CC-BY-SA-2.0-UK", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/PSF-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", - "referenceNumber": 124, - "name": "Python Software Foundation License 2.0", - "licenseId": "PSF-2.0", - "seeAlso": [ - "https://opensource.org/licenses/Python-2.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Net-SNMP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", - "referenceNumber": 125, - "name": "Net-SNMP License", - "licenseId": "Net-SNMP", - "seeAlso": [ - "http://net-snmp.sourceforge.net/about/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NAIST-2003.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", - "referenceNumber": 126, - "name": "Nara Institute of Science and Technology License (2003)", - "licenseId": "NAIST-2003", - "seeAlso": [ - "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", - "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", - "referenceNumber": 127, - "name": "GNU Free Documentation License v1.2 or later - invariants", - "licenseId": "GFDL-1.2-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SGI-B-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", - "referenceNumber": 128, - "name": "SGI Free Software License B v1.0", - "licenseId": "SGI-B-1.0", - "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NBPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", - "referenceNumber": 129, - "name": "Net Boolean Public License v1", - "licenseId": "NBPL-1.0", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", - "referenceNumber": 130, - "name": "GNU Free Documentation License v1.2 only - invariants", - "licenseId": "GFDL-1.2-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/W3C-19980720.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", - "referenceNumber": 131, - "name": "W3C Software Notice and License (1998-07-20)", - "licenseId": "W3C-19980720", - "seeAlso": [ - "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", - "referenceNumber": 132, - "name": "SIL Open Font License 1.0 with no Reserved Font Name", - "licenseId": "OFL-1.0-no-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NetCDF.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NetCDF.json", - "referenceNumber": 133, - "name": "NetCDF license", - "licenseId": "NetCDF", - "seeAlso": [ - "http://www.unidata.ucar.edu/software/netcdf/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TMate.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TMate.json", - "referenceNumber": 134, - "name": "TMate Open Source License", - "licenseId": "TMate", - "seeAlso": [ - "http://svnkit.com/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NOSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NOSL.json", - "referenceNumber": 135, - "name": "Netizen Open Source License", - "licenseId": "NOSL", - "seeAlso": [ - "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", - "referenceNumber": 136, - "name": "CNRI Python Open Source GPL Compatible License Agreement", - "licenseId": "CNRI-Python-GPL-Compatible", - "seeAlso": [ - "http://www.python.org/download/releases/1.6.1/download_win/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-1-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", - "referenceNumber": 137, - "name": "BSD 1-Clause License", - "licenseId": "BSD-1-Clause", - "seeAlso": [ - "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", - "referenceNumber": 138, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", - "licenseId": "CC-BY-NC-SA-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", - "referenceNumber": 139, - "name": "BSD 3-Clause Modification", - "licenseId": "BSD-3-Clause-Modification", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GLWTPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", - "referenceNumber": 140, - "name": "Good Luck With That Public License", - "licenseId": "GLWTPL", - "seeAlso": [ - "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", + "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", "referenceNumber": 141, - "name": "GNU Free Documentation License v1.3 only", - "licenseId": "GFDL-1.3-only", + "name": "The Parity Public License 7.0.0", + "licenseId": "Parity-7.0.0", "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" + "https://paritylicense.com/versions/7.0.0.html" ], - "isOsiApproved": false, - "isFsfLibre": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OLDAP-2.2.html", + "reference": "https://spdx.org/licenses/XFree86-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", + "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", "referenceNumber": 142, - "name": "Open LDAP Public License v2.2", - "licenseId": "OLDAP-2.2", + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" + "http://www.xfree86.org/current/LICENSE4.html" ], - "isOsiApproved": false + "isOsiApproved": false, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", + "reference": "https://spdx.org/licenses/Watcom-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", + "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", "referenceNumber": 143, - "name": "Creative Commons Attribution No Derivatives 4.0 International", - "licenseId": "CC-BY-ND-4.0", + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + "https://opensource.org/licenses/Watcom-1.0" ], - "isOsiApproved": false, + "isOsiApproved": true, "isFsfLibre": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", + "reference": "https://spdx.org/licenses/HaskellReport.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", + "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", "referenceNumber": 144, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", - "licenseId": "CC-BY-NC-ND-3.0-DE", + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EUPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", - "referenceNumber": 145, - "name": "European Union Public License 1.0", - "licenseId": "EUPL-1.0", - "seeAlso": [ - "http://ec.europa.eu/idabc/en/document/7330.html", - "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Linux-OpenIB.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", - "referenceNumber": 146, - "name": "Linux Kernel Variant of OpenIB.org license", - "licenseId": "Linux-OpenIB", - "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", - "referenceNumber": 147, - "name": "GNU Library General Public License v2 or later", - "licenseId": "LGPL-2.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", - "referenceNumber": 148, - "name": "Open Software License 1.1", - "licenseId": "OSL-1.1", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/OSL1.1" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Spencer-86.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", - "referenceNumber": 149, - "name": "Spencer License 86", - "licenseId": "Spencer-86", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", - "referenceNumber": 150, - "name": "GNU Library General Public License v2 only", - "licenseId": "LGPL-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-PDDC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", - "referenceNumber": 151, - "name": "Creative Commons Public Domain Dedication and Certification", - "licenseId": "CC-PDDC", - "seeAlso": [ - "https://creativecommons.org/licenses/publicdomain/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", - "referenceNumber": 152, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", - "licenseId": "CC-BY-NC-ND-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", - "referenceNumber": 153, - "name": "Common Documentation License 1.0", - "licenseId": "CDL-1.0", - "seeAlso": [ - "http://www.opensource.apple.com/cdl/", - "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", - "https://www.gnu.org/licenses/license-list.html#ACDL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Elastic-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", - "referenceNumber": 154, - "name": "Elastic License 2.0", - "licenseId": "Elastic-2.0", - "seeAlso": [ - "https://www.elastic.co/licensing/elastic-license", - "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", - "referenceNumber": 155, - "name": "Creative Commons Attribution 2.0 Generic", - "licenseId": "CC-BY-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", - "referenceNumber": 156, - "name": "BSD 3-Clause No Military License", - "licenseId": "BSD-3-Clause-No-Military-License", - "seeAlso": [ - "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", - "https://github.com/greymass/swift-eosio/blob/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IJG.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IJG.json", - "referenceNumber": 157, - "name": "Independent JPEG Group License", - "licenseId": "IJG", - "seeAlso": [ - "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.3a.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", - "referenceNumber": 158, - "name": "LaTeX Project Public License v1.3a", - "licenseId": "LPPL-1.3a", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-3a.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SAX-PD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", - "referenceNumber": 159, - "name": "Sax Public Domain Notice", - "licenseId": "SAX-PD", - "seeAlso": [ - "http://www.saxproject.org/copying.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", - "referenceNumber": 160, - "name": "BitTorrent Open Source License v1.0", - "licenseId": "BitTorrent-1.0", - "seeAlso": [ - "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", - "referenceNumber": 161, - "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", - "licenseId": "OLDAP-2.0", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Giftware.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Giftware.json", - "referenceNumber": 162, - "name": "Giftware License", - "licenseId": "Giftware", - "seeAlso": [ - "http://liballeg.org/license.html#allegro-4-the-giftware-license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/C-UDA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", - "referenceNumber": 163, - "name": "Computational Use of Data Agreement v1.0", - "licenseId": "C-UDA-1.0", - "seeAlso": [ - "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", - "https://cdla.dev/computational-use-of-data-agreement-v1-0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", - "referenceNumber": 164, - "name": "GNU Library General Public License v2 or later", - "licenseId": "LGPL-2.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Rdisc.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Rdisc.json", - "referenceNumber": 165, - "name": "Rdisc License", - "licenseId": "Rdisc", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Rdisc_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", - "referenceNumber": 166, - "name": "GNU General Public License v2.0 w/Classpath exception", - "licenseId": "GPL-2.0-with-classpath-exception", - "seeAlso": [ - "https://www.gnu.org/software/classpath/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", - "referenceNumber": 167, - "name": "Creative Commons Attribution 3.0 United States", - "licenseId": "CC-BY-3.0-US", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/us/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CDDL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", - "referenceNumber": 168, - "name": "Common Development and Distribution License 1.0", - "licenseId": "CDDL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/cddl1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Xnet.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Xnet.json", - "referenceNumber": 169, - "name": "X.Net License", - "licenseId": "Xnet", - "seeAlso": [ - "https://opensource.org/licenses/Xnet" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", - "referenceNumber": 170, - "name": "Common Public License 1.0", - "licenseId": "CPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", - "referenceNumber": 171, - "name": "GNU Lesser General Public License v3.0 or later", - "licenseId": "LGPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NASA-1.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", - "referenceNumber": 172, - "name": "NASA Open Source Agreement 1.3", - "licenseId": "NASA-1.3", - "seeAlso": [ - "http://ti.arc.nasa.gov/opensource/nosa/", - "https://opensource.org/licenses/NASA-1.3" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/BUSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", - "referenceNumber": 173, - "name": "Business Source License 1.1", - "licenseId": "BUSL-1.1", - "seeAlso": [ - "https://mariadb.com/bsl11/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/etalab-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", - "referenceNumber": 174, - "name": "Etalab Open License 2.0", - "licenseId": "etalab-2.0", - "seeAlso": [ - "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", - "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-open-group.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", - "referenceNumber": 175, - "name": "MIT Open Group variant", - "licenseId": "MIT-open-group", - "seeAlso": [ - "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", - "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.4.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", - "referenceNumber": 176, - "name": "Open LDAP Public License v1.4", - "licenseId": "OLDAP-1.4", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", - "referenceNumber": 177, - "name": "GNU Free Documentation License v1.1 only - invariants", - "licenseId": "GFDL-1.1-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", - "referenceNumber": 178, - "name": "Reciprocal Public License 1.1", - "licenseId": "RPL-1.1", - "seeAlso": [ - "https://opensource.org/licenses/RPL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", - "referenceNumber": 179, - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", - "licenseId": "CC-BY-NC-ND-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFULLR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", - "referenceNumber": 180, - "name": "FSF Unlimited License (with License Retention)", - "licenseId": "FSFULLR", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Saxpath.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Saxpath.json", - "referenceNumber": 181, - "name": "Saxpath License", - "licenseId": "Saxpath", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Saxpath_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NTP-0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTP-0.json", - "referenceNumber": 182, - "name": "NTP No Attribution", - "licenseId": "NTP-0", - "seeAlso": [ - "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SISSL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", - "referenceNumber": 183, - "name": "Sun Industry Standards Source License v1.2", - "licenseId": "SISSL-1.2", - "seeAlso": [ - "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", - "referenceNumber": 184, - "name": "GNU General Public License v3.0 or later", - "licenseId": "GPL-3.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Apache-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", - "referenceNumber": 185, - "name": "Apache License 1.1", - "licenseId": "Apache-1.1", - "seeAlso": [ - "http://apache.org/licenses/LICENSE-1.1", - "https://opensource.org/licenses/Apache-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", - "referenceNumber": 186, - "name": "Creative Commons Attribution Share Alike 2.1 Japan", - "licenseId": "CC-BY-SA-2.1-JP", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", - "referenceNumber": 187, - "name": "GNU Affero General Public License v3.0 only", - "licenseId": "AGPL-3.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", - "referenceNumber": 188, - "name": "GNU General Public License v2.0 w/Autoconf exception", - "licenseId": "GPL-2.0-with-autoconf-exception", - "seeAlso": [ - "http://ac-archive.sourceforge.net/doc/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Artistic-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", - "referenceNumber": 189, - "name": "Artistic License 2.0", - "licenseId": "Artistic-2.0", - "seeAlso": [ - "http://www.perlfoundation.org/artistic_license_2_0", - "https://www.perlfoundation.org/artistic-license-20.html", - "https://opensource.org/licenses/artistic-license-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/App-s2p.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/App-s2p.json", - "referenceNumber": 190, - "name": "App::s2p License", - "licenseId": "App-s2p", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/App-s2p" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", - "referenceNumber": 191, - "name": "Unicode License Agreement - Data Files and Software (2015)", - "licenseId": "Unicode-DFS-2015", - "seeAlso": [ - "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/diffmark.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/diffmark.json", - "referenceNumber": 192, - "name": "diffmark license", - "licenseId": "diffmark", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/diffmark" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SNIA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SNIA.json", - "referenceNumber": 193, - "name": "SNIA Public License 1.1", - "licenseId": "SNIA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", - "referenceNumber": 194, - "name": "Creative Commons Attribution Share Alike 2.5 Generic", - "licenseId": "CC-BY-SA-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.5/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", - "referenceNumber": 195, - "name": "Linux man-pages Copyleft", - "licenseId": "Linux-man-pages-copyleft", - "seeAlso": [ - "https://www.kernel.org/doc/man-pages/licenses.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND-sell-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", - "referenceNumber": 196, - "name": "Historical Permission Notice and Disclaimer - sell variant", - "licenseId": "HPND-sell-variant", - "seeAlso": [ - "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ZPL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", - "referenceNumber": 197, - "name": "Zope Public License 2.1", - "licenseId": "ZPL-2.1", - "seeAlso": [ - "http://old.zope.org/Resources/ZPL/" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", - "referenceNumber": 198, - "name": "BSD-4-Clause (University of California-Specific)", - "licenseId": "BSD-4-Clause-UC", - "seeAlso": [ - "http://www.freebsd.org/copyright/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LAL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", - "referenceNumber": 199, - "name": "Licence Art Libre 1.2", - "licenseId": "LAL-1.2", - "seeAlso": [ - "http://artlibre.org/licence/lal/licence-art-libre-12/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", - "referenceNumber": 200, - "name": "Affero General Public License v1.0 only", - "licenseId": "AGPL-1.0-only", - "seeAlso": [ - "http://www.affero.org/oagpl.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-enna.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", - "referenceNumber": 201, - "name": "enna License", - "licenseId": "MIT-enna", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#enna" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Condor-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", - "referenceNumber": 202, - "name": "Condor Public License v1.1", - "licenseId": "Condor-1.1", - "seeAlso": [ - "http://research.cs.wisc.edu/condor/license.html#condor", - "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Naumen.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Naumen.json", - "referenceNumber": 203, - "name": "Naumen Public License", - "licenseId": "Naumen", - "seeAlso": [ - "https://opensource.org/licenses/Naumen" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", - "referenceNumber": 204, - "name": "GNU Free Documentation License v1.3 or later - no invariants", - "licenseId": "GFDL-1.3-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RPL-1.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", - "referenceNumber": 205, - "name": "Reciprocal Public License 1.5", - "licenseId": "RPL-1.5", - "seeAlso": [ - "https://opensource.org/licenses/RPL-1.5" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", - "referenceNumber": 206, - "name": "PolyForm Small Business License 1.0.0", - "licenseId": "PolyForm-Small-Business-1.0.0", - "seeAlso": [ - "https://polyformproject.org/licenses/small-business/1.0.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EFL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", - "referenceNumber": 207, - "name": "Eiffel Forum License v1.0", - "licenseId": "EFL-1.0", - "seeAlso": [ - "http://www.eiffel-nice.org/license/forum.txt", - "https://opensource.org/licenses/EFL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MirOS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MirOS.json", - "referenceNumber": 208, - "name": "The MirOS Licence", - "licenseId": "MirOS", - "seeAlso": [ - "https://opensource.org/licenses/MirOS" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", - "referenceNumber": 209, - "name": "Creative Commons Attribution 2.5 Australia", - "licenseId": "CC-BY-2.5-AU", - "seeAlso": [ - "https://creativecommons.org/licenses/by/2.5/au/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Afmparse.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Afmparse.json", - "referenceNumber": 210, - "name": "Afmparse License", - "licenseId": "Afmparse", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Afmparse" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", - "referenceNumber": 211, - "name": "Mozilla Public License 2.0 (no copyleft exception)", - "licenseId": "MPL-2.0-no-copyleft-exception", - "seeAlso": [ - "https://www.mozilla.org/MPL/2.0/", - "https://opensource.org/licenses/MPL-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", - "referenceNumber": 212, - "name": "Licence Libre du Québec – Réciprocité forte version 1.1", - "licenseId": "LiLiQ-Rplus-1.1", - "seeAlso": [ - "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", - "http://opensource.org/licenses/LiLiQ-Rplus-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/AFL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", - "referenceNumber": 213, - "name": "Academic Free License v1.2", - "licenseId": "AFL-1.2", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", - "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", - "referenceNumber": 214, - "name": "Open Software License 1.0", - "licenseId": "OSL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/OSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", - "referenceNumber": 215, - "name": "GNU General Public License v1.0 only", - "licenseId": "GPL-1.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", - "referenceNumber": 216, - "name": "Apple Public Source License 1.0", - "licenseId": "APSL-1.0", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", - "referenceNumber": 217, - "name": "Open Government Licence - Canada", - "licenseId": "OGL-Canada-2.0", - "seeAlso": [ - "https://open.canada.ca/en/open-government-licence-canada" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CPAL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", - "referenceNumber": 218, - "name": "Common Public Attribution License 1.0", - "licenseId": "CPAL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CPAL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Latex2e.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Latex2e.json", - "referenceNumber": 219, - "name": "Latex2e License", - "licenseId": "Latex2e", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Latex2e" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Zend-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", - "referenceNumber": 220, - "name": "Zend License v2.0", - "licenseId": "Zend-2.0", - "seeAlso": [ - "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Unlicense.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unlicense.json", - "referenceNumber": 221, - "name": "The Unlicense", - "licenseId": "Unlicense", - "seeAlso": [ - "https://unlicense.org/" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/xpp.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xpp.json", - "referenceNumber": 222, - "name": "XPP License", - "licenseId": "xpp", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/xpp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", - "referenceNumber": 223, - "name": "Creative Commons Attribution Non Commercial 1.0 Generic", - "licenseId": "CC-BY-NC-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/1.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", - "referenceNumber": 224, - "name": "GNU General Public License v3.0 w/Autoconf exception", - "licenseId": "GPL-3.0-with-autoconf-exception", - "seeAlso": [ - "https://www.gnu.org/licenses/autoconf-exception-3.0.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", - "referenceNumber": 225, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", - "licenseId": "CC-BY-NC-SA-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TCP-wrappers.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", - "referenceNumber": 226, - "name": "TCP Wrappers License", - "licenseId": "TCP-wrappers", - "seeAlso": [ - "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SCEA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SCEA.json", - "referenceNumber": 227, - "name": "SCEA Shared Source License", - "licenseId": "SCEA", - "seeAlso": [ - "http://research.scea.com/scea_shared_source_license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SSH-short.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSH-short.json", - "referenceNumber": 228, - "name": "SSH short notice", - "licenseId": "SSH-short", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", - "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", - "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", - "referenceNumber": 229, - "name": "Creative Commons Attribution 3.0 Netherlands", - "licenseId": "CC-BY-3.0-NL", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/nl/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/SchemeReport.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", - "referenceNumber": 230, - "name": "Scheme Language Report License", - "licenseId": "SchemeReport", - "seeAlso": [], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", - "referenceNumber": 231, - "name": "Creative Commons Attribution 3.0 Unported", - "licenseId": "CC-BY-3.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/legalcode" + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" ], "isOsiApproved": false }, @@ -2907,7 +1825,7 @@ "reference": "https://spdx.org/licenses/MPL-2.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", - "referenceNumber": 232, + "referenceNumber": 145, "name": "Mozilla Public License 2.0", "licenseId": "MPL-2.0", "seeAlso": [ @@ -2918,94 +1836,149 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Unicode-TOU.html", + "reference": "https://spdx.org/licenses/TCL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", - "referenceNumber": 233, - "name": "Unicode Terms of Use", - "licenseId": "Unicode-TOU", + "detailsUrl": "https://spdx.org/licenses/TCL.json", + "referenceNumber": 146, + "name": "TCL/TK License", + "licenseId": "TCL", "seeAlso": [ - "http://www.unicode.org/copyright.html" + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", - "referenceNumber": 234, - "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", - "licenseId": "CC-BY-NC-ND-1.0", + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", + "referenceNumber": 147, + "name": "Creative Commons Attribution 2.5 Australia", + "licenseId": "CC-BY-2.5-AU", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + "https://creativecommons.org/licenses/by/2.5/au/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Entessa.html", + "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Entessa.json", - "referenceNumber": 235, - "name": "Entessa Public License v1.0", - "licenseId": "Entessa", + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", + "referenceNumber": 148, + "name": "LZMA SDK License (versions 9.22 and beyond)", + "licenseId": "LZMA-SDK-9.22", "seeAlso": [ - "https://opensource.org/licenses/Entessa" + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/curl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/curl.json", + "referenceNumber": 149, + "name": "curl License", + "licenseId": "curl", + "seeAlso": [ + "https://github.com/bagder/curl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpi-permissive.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", + "referenceNumber": 150, + "name": "mpi Permissive License", + "licenseId": "mpi-permissive", + "seeAlso": [ + "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\u003d19#L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", + "referenceNumber": 151, + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", + "referenceNumber": 152, + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "licenseId": "OFL-1.1-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" ], "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", + "reference": "https://spdx.org/licenses/GD.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", - "referenceNumber": 236, - "name": "BSD 3-Clause No Nuclear License", - "licenseId": "BSD-3-Clause-No-Nuclear-License", + "detailsUrl": "https://spdx.org/licenses/GD.json", + "referenceNumber": 153, + "name": "GD License", + "licenseId": "GD", "seeAlso": [ - "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam\u003d1467140197_43d516ce1776bd08a58235a7785be1cc" + "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/SWL.html", + "reference": "https://spdx.org/licenses/ODbL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SWL.json", - "referenceNumber": 237, - "name": "Scheme Widget Library (SWL) Software License Agreement", - "licenseId": "SWL", + "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", + "referenceNumber": 154, + "name": "Open Data Commons Open Database License v1.0", + "licenseId": "ODbL-1.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/SWL" + "http://www.opendatacommons.org/licenses/odbl/1.0/", + "https://opendatacommons.org/licenses/odbl/1-0/" ], - "isOsiApproved": false + "isOsiApproved": false, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "reference": "https://spdx.org/licenses/Apache-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", - "referenceNumber": 238, - "name": "GNU Free Documentation License v1.2 only - no invariants", - "licenseId": "GFDL-1.2-no-invariants-only", + "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", + "referenceNumber": 155, + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + "https://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0" ], - "isOsiApproved": false + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Parity-7.0.0.html", + "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", - "referenceNumber": 239, - "name": "The Parity Public License 7.0.0", - "licenseId": "Parity-7.0.0", + "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", + "referenceNumber": 156, + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", "seeAlso": [ - "https://paritylicense.com/versions/7.0.0.html" + "https://opensource.org/licenses/CUA-OPL-1.0" ], - "isOsiApproved": false + "isOsiApproved": true }, { "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", - "referenceNumber": 240, + "referenceNumber": 157, "name": "Open LDAP Public License v2.2.1", "licenseId": "OLDAP-2.2.1", "seeAlso": [ @@ -3014,14 +1987,393 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/SGI-B-1.1.html", + "reference": "https://spdx.org/licenses/FDK-AAC.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", - "referenceNumber": 241, - "name": "SGI Free Software License B v1.1", - "licenseId": "SGI-B-1.1", + "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", + "referenceNumber": 158, + "name": "Fraunhofer FDK AAC Codec Library", + "licenseId": "FDK-AAC", "seeAlso": [ - "http://oss.sgi.com/projects/FreeB/" + "https://fedoraproject.org/wiki/Licensing/FDK-AAC", + "https://directory.fsf.org/wiki/License:Fdk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ImageMagick.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", + "referenceNumber": 159, + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "seeAlso": [ + "http://www.imagemagick.org/script/license.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", + "referenceNumber": 160, + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPAL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", + "referenceNumber": 161, + "name": "GNU Free Documentation License v1.2 only - no invariants", + "licenseId": "GFDL-1.2-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/O-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", + "referenceNumber": 162, + "name": "Open Use of Data Agreement v1.0", + "licenseId": "O-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", + "https://cdla.dev/open-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", + "referenceNumber": 163, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", + "referenceNumber": 164, + "name": "Community Data License Agreement Permissive 2.0", + "licenseId": "CDLA-Permissive-2.0", + "seeAlso": [ + "https://cdla.dev/permissive-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", + "referenceNumber": 165, + "name": "Community Specification License 1.0", + "licenseId": "Community-Spec-1.0", + "seeAlso": [ + "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", + "referenceNumber": 166, + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ICU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ICU.json", + "referenceNumber": 167, + "name": "ICU License", + "licenseId": "ICU", + "seeAlso": [ + "http://source.icu-project.org/repos/icu/icu/trunk/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", + "referenceNumber": 168, + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "seeAlso": [ + "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Net-SNMP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", + "referenceNumber": 169, + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", + "seeAlso": [ + "http://net-snmp.sourceforge.net/about/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CrystalStacker.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", + "referenceNumber": 170, + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", + "referenceNumber": 171, + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "licenseId": "BSD-4-Clause", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BSD_4Clause" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", + "referenceNumber": 172, + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", + "referenceNumber": 173, + "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + "licenseId": "CERN-OHL-S-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", + "referenceNumber": 174, + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Beerware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Beerware.json", + "referenceNumber": 175, + "name": "Beerware License", + "licenseId": "Beerware", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Fair.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Fair.json", + "referenceNumber": 176, + "name": "Fair License", + "licenseId": "Fair", + "seeAlso": [ + "http://fairlicense.org/", + "https://opensource.org/licenses/Fair" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", + "referenceNumber": 177, + "name": "BSD 2-Clause with views sentence", + "licenseId": "BSD-2-Clause-Views", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html", + "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", + "https://github.com/protegeproject/protege/blob/master/license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ClArtistic.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", + "referenceNumber": 178, + "name": "Clarified Artistic License", + "licenseId": "ClArtistic", + "seeAlso": [ + "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "http://www.ncftp.com/ncftp/doc/LICENSE.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", + "referenceNumber": 179, + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/StandardML-NJ.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", + "referenceNumber": 180, + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "seeAlso": [ + "http://www.smlnj.org//license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MirOS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MirOS.json", + "referenceNumber": 181, + "name": "The MirOS Licence", + "licenseId": "MirOS", + "seeAlso": [ + "https://opensource.org/licenses/MirOS" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", + "referenceNumber": 182, + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mplus.json", + "referenceNumber": 183, + "name": "mplus Font License", + "licenseId": "mplus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ISC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC.json", + "referenceNumber": 184, + "name": "ISC License", + "licenseId": "ISC", + "seeAlso": [ + "https://www.isc.org/licenses/", + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Minpack.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Minpack.json", + "referenceNumber": 185, + "name": "Minpack License", + "licenseId": "Minpack", + "seeAlso": [ + "http://www.netlib.org/minpack/disclaimer", + "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", + "referenceNumber": 186, + "name": "GNU Free Documentation License v1.2 or later - invariants", + "licenseId": "GFDL-1.2-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", + "referenceNumber": 187, + "name": "Server Side Public License, v 1", + "licenseId": "SSPL-1.0", + "seeAlso": [ + "https://www.mongodb.com/licensing/server-side-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", + "referenceNumber": 188, + "name": "OGC Software License, Version 1.0", + "licenseId": "OGC-1.0", + "seeAlso": [ + "https://www.ogc.org/ogc/software/1.0" ], "isOsiApproved": false }, @@ -3029,7 +2381,7 @@ "reference": "https://spdx.org/licenses/FTL.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/FTL.json", - "referenceNumber": 242, + "referenceNumber": 189, "name": "Freetype Project License", "licenseId": "FTL", "seeAlso": [ @@ -3041,109 +2393,74 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OLDAP-2.4.html", + "reference": "https://spdx.org/licenses/BSD-Source-Code.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", - "referenceNumber": 243, - "name": "Open LDAP Public License v2.4", - "licenseId": "OLDAP-2.4", + "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", + "referenceNumber": 190, + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", + "reference": "https://spdx.org/licenses/VOSTROM.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", - "referenceNumber": 244, - "name": "Creative Commons Attribution Non Commercial 4.0 International", - "licenseId": "CC-BY-NC-4.0", + "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", + "referenceNumber": 191, + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + "https://fedoraproject.org/wiki/Licensing/VOSTROM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", + "referenceNumber": 192, + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1" ], "isOsiApproved": false, - "isFsfLibre": false + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", + "reference": "https://spdx.org/licenses/AFL-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", - "referenceNumber": 245, - "name": "bzip2 and libbzip2 License v1.0.6", - "licenseId": "bzip2-1.0.6", + "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", + "referenceNumber": 193, + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", "seeAlso": [ - "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", - "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0" ], - "isOsiApproved": false + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", + "reference": "https://spdx.org/licenses/ECL-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", - "referenceNumber": 246, - "name": "copyleft-next 0.3.0", - "licenseId": "copyleft-next-0.3.0", + "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", + "referenceNumber": 194, + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", "seeAlso": [ - "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" + "https://opensource.org/licenses/ECL-2.0" ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MakeIndex.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", - "referenceNumber": 247, - "name": "MakeIndex License", - "licenseId": "MakeIndex", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MakeIndex" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NRL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NRL.json", - "referenceNumber": 248, - "name": "NRL License", - "licenseId": "NRL", - "seeAlso": [ - "http://web.mit.edu/network/isakmp/nrllicense.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", - "referenceNumber": 249, - "name": "GNU Free Documentation License v1.3 or later - invariants", - "licenseId": "GFDL-1.3-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", - "referenceNumber": 250, - "name": "Creative Commons Attribution Non Commercial 2.0 Generic", - "licenseId": "CC-BY-NC-2.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/2.0/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false + "isOsiApproved": true, + "isFsfLibre": true }, { "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", - "referenceNumber": 251, + "referenceNumber": 195, "name": "SugarCRM Public License v1.1.3", "licenseId": "SugarCRM-1.1.3", "seeAlso": [ @@ -3152,514 +2469,220 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/AFL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", - "referenceNumber": 252, - "name": "Academic Free License v2.1", - "licenseId": "AFL-2.1", - "seeAlso": [ - "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", - "referenceNumber": 253, - "name": "GNU General Public License v2.0 only", - "licenseId": "GPL-2.0-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", - "referenceNumber": 254, - "name": "GNU Free Documentation License v1.3 only - invariants", - "licenseId": "GFDL-1.3-invariants-only", - "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TORQUE-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", - "referenceNumber": 255, - "name": "TORQUE v2.5+ Software License v1.1", - "licenseId": "TORQUE-1.1", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Ruby.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Ruby.json", - "referenceNumber": 256, - "name": "Ruby License", - "licenseId": "Ruby", - "seeAlso": [ - "http://www.ruby-lang.org/en/LICENSE.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/X11.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11.json", - "referenceNumber": 257, - "name": "X11 License", - "licenseId": "X11", - "seeAlso": [ - "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Borceux.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Borceux.json", - "referenceNumber": 258, - "name": "Borceux license", - "licenseId": "Borceux", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Borceux" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Libpng.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Libpng.json", - "referenceNumber": 259, - "name": "libpng License", - "licenseId": "Libpng", - "seeAlso": [ - "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", - "referenceNumber": 260, - "name": "X11 License Distribution Modification Variant", - "licenseId": "X11-distribute-modifications-variant", - "seeAlso": [ - "https://github.com/mirror/ncurses/blob/master/COPYING" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Frameworx-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", - "referenceNumber": 261, - "name": "Frameworx Open License 1.0", - "licenseId": "Frameworx-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Frameworx-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", - "referenceNumber": 262, - "name": "Non-Commercial Government Licence", - "licenseId": "NCGL-UK-2.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", - "referenceNumber": 263, - "name": "CeCILL Free Software License Agreement v2.1", - "licenseId": "CECILL-2.1", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", - "referenceNumber": 264, - "name": "Creative Commons Attribution 3.0 Austria", - "licenseId": "CC-BY-3.0-AT", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/at/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CNRI-Python.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", - "referenceNumber": 265, - "name": "CNRI Python License", - "licenseId": "CNRI-Python", - "seeAlso": [ - "https://opensource.org/licenses/CNRI-Python" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NCSA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NCSA.json", - "referenceNumber": 266, - "name": "University of Illinois/NCSA Open Source License", - "licenseId": "NCSA", - "seeAlso": [ - "http://otm.illinois.edu/uiuc_openSource", - "https://opensource.org/licenses/NCSA" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", - "referenceNumber": 267, - "name": "gSOAP Public License v1.3b", - "licenseId": "gSOAP-1.3b", - "seeAlso": [ - "http://www.cs.fsu.edu/~engelen/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EUPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", - "referenceNumber": 268, - "name": "European Union Public License 1.1", - "licenseId": "EUPL-1.1", - "seeAlso": [ - "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", - "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", - "https://opensource.org/licenses/EUPL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AMDPLPA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", - "referenceNumber": 269, - "name": "AMD\u0027s plpa_map.c License", - "licenseId": "AMDPLPA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Imlib2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Imlib2.json", - "referenceNumber": 270, - "name": "Imlib2 License", - "licenseId": "Imlib2", - "seeAlso": [ - "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", - "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CDDL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", - "referenceNumber": 271, - "name": "Common Development and Distribution License 1.1", - "licenseId": "CDDL-1.1", - "seeAlso": [ - "http://glassfish.java.net/public/CDDL+GPL_1_1.html", - "https://javaee.github.io/glassfish/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/WTFPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/WTFPL.json", - "referenceNumber": 272, - "name": "Do What The F*ck You Want To Public License", - "licenseId": "WTFPL", - "seeAlso": [ - "http://www.wtfpl.net/about/", - "http://sam.zoy.org/wtfpl/COPYING" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", - "referenceNumber": 273, - "name": "Lucent Public License Version 1.0", - "licenseId": "LPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/LPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/EPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", - "referenceNumber": 274, - "name": "Eclipse Public License 1.0", - "licenseId": "EPL-1.0", - "seeAlso": [ - "http://www.eclipse.org/legal/epl-v10.html", - "https://opensource.org/licenses/EPL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", - "referenceNumber": 275, - "name": "BSD with attribution", - "licenseId": "BSD-3-Clause-Attribution", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", - "referenceNumber": 276, - "name": "Open Software License 3.0", - "licenseId": "OSL-3.0", - "seeAlso": [ - "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", - "https://opensource.org/licenses/OSL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/RHeCos-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", - "referenceNumber": 277, - "name": "Red Hat eCos Public License v1.1", - "licenseId": "RHeCos-1.1", - "seeAlso": [ - "http://ecos.sourceware.org/old-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/PHP-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", - "referenceNumber": 278, - "name": "PHP License v3.0", - "licenseId": "PHP-3.0", - "seeAlso": [ - "http://www.php.net/license/3_0.txt", - "https://opensource.org/licenses/PHP-3.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/BSD-Protection.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", - "referenceNumber": 279, - "name": "BSD Protection License", - "licenseId": "BSD-Protection", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", - "referenceNumber": 280, - "name": "Creative Commons Attribution Non Commercial 3.0 Germany", - "licenseId": "CC-BY-NC-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/APL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", - "referenceNumber": 281, - "name": "Adaptive Public License 1.0", - "licenseId": "APL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/APL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/EUDatagrid.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", - "referenceNumber": 282, - "name": "EU DataGrid Software License", - "licenseId": "EUDatagrid", - "seeAlso": [ - "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", - "https://opensource.org/licenses/EUDatagrid" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0.html", + "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", - "referenceNumber": 283, - "name": "GNU General Public License v1.0 only", - "licenseId": "GPL-1.0", + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", + "referenceNumber": 196, + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/SHL-0.5.html", + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", - "referenceNumber": 284, - "name": "Solderpad Hardware License v0.5", - "licenseId": "SHL-0.5", + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", + "referenceNumber": 197, + "name": "Creative Commons Attribution No Derivatives 3.0 Germany", + "licenseId": "CC-BY-ND-3.0-DE", "seeAlso": [ - "https://solderpad.org/licenses/SHL-0.5/" + "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", + "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", - "referenceNumber": 285, - "name": "Creative Commons Attribution Share Alike 2.0 Generic", - "licenseId": "CC-BY-SA-2.0", + "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", + "referenceNumber": 198, + "name": "NIST Public Domain Notice with license fallback", + "licenseId": "NIST-PD-fallback", "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/2.0/legalcode" + "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", + "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", + "reference": "https://spdx.org/licenses/NLOD-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", - "referenceNumber": 286, - "name": "Creative Commons Attribution Share Alike 3.0 Austria", - "licenseId": "CC-BY-SA-3.0-AT", + "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", + "referenceNumber": 199, + "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", + "licenseId": "NLOD-2.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" + "http://data.norge.no/nlod/en/2.0" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", - "referenceNumber": 287, - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", - "licenseId": "CC-BY-NC-SA-3.0-IGO", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Adobe-2006.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", - "referenceNumber": 288, - "name": "Adobe Systems Incorporated Source Code License Agreement", - "licenseId": "Adobe-2006", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/AdobeLicense" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Newsletr.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Newsletr.json", - "referenceNumber": 289, - "name": "Newsletr License", - "licenseId": "Newsletr", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Newsletr" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Nunit.html", + "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/Nunit.json", - "referenceNumber": 290, - "name": "Nunit License", - "licenseId": "Nunit", + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", + "referenceNumber": 200, + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Nunit" + "http://www.netbsd.org/about/redistribution.html#default" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Multics.html", + "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Multics.json", - "referenceNumber": 291, - "name": "Multics License", - "licenseId": "Multics", + "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", + "referenceNumber": 201, + "name": "PolyForm Noncommercial License 1.0.0", + "licenseId": "PolyForm-Noncommercial-1.0.0", "seeAlso": [ - "https://opensource.org/licenses/Multics" + "https://polyformproject.org/licenses/noncommercial/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", + "referenceNumber": 202, + "name": "Creative Commons Attribution Share Alike 2.1 Japan", + "licenseId": "CC-BY-SA-2.1-JP", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", + "referenceNumber": 203, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", + "referenceNumber": 204, + "name": "GNU Free Documentation License v1.1 only - invariants", + "licenseId": "GFDL-1.1-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", + "referenceNumber": 205, + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "seeAlso": [ + "http://old.zope.org/Resources/ZPL/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", + "referenceNumber": 206, + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" ], "isOsiApproved": true }, + { + "reference": "https://spdx.org/licenses/Mup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mup.json", + "referenceNumber": 207, + "name": "Mup License", + "licenseId": "Mup", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Mup" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Eurosym.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Eurosym.json", + "referenceNumber": 208, + "name": "Eurosym License", + "licenseId": "Eurosym", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", + "referenceNumber": 209, + "name": "Taiwan Open Government Data License, version 1.0", + "licenseId": "OGDL-Taiwan-1.0", + "seeAlso": [ + "https://data.gov.tw/license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Plexus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Plexus.json", + "referenceNumber": 210, + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/COIL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", + "referenceNumber": 211, + "name": "Copyfree Open Innovation License", + "licenseId": "COIL-1.0", + "seeAlso": [ + "https://coil.apotheon.org/plaintext/01.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", + "referenceNumber": 212, + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, { "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", - "referenceNumber": 292, + "referenceNumber": 213, "name": "Open Government Licence v1.0", "licenseId": "OGL-UK-1.0", "seeAlso": [ @@ -3668,23 +2691,94 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Vim.html", + "reference": "https://spdx.org/licenses/MIT-feh.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Vim.json", - "referenceNumber": 293, - "name": "Vim License", - "licenseId": "Vim", + "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", + "referenceNumber": 214, + "name": "feh License", + "licenseId": "MIT-feh", "seeAlso": [ - "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + "https://fedoraproject.org/wiki/Licensing/MIT#feh" ], - "isOsiApproved": false, - "isFsfLibre": true + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APAFML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APAFML.json", + "referenceNumber": 215, + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NetCDF.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NetCDF.json", + "referenceNumber": 216, + "name": "NetCDF license", + "licenseId": "NetCDF", + "seeAlso": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", + "referenceNumber": 217, + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", + "referenceNumber": 218, + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", + "seeAlso": [ + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLPL.json", + "referenceNumber": 219, + "name": "No Limit Public License", + "licenseId": "NLPL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/NLPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EPICS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPICS.json", + "referenceNumber": 220, + "name": "EPICS Open License", + "licenseId": "EPICS", + "seeAlso": [ + "https://epics.anl.gov/license/open.php" + ], + "isOsiApproved": false }, { "reference": "https://spdx.org/licenses/eCos-2.0.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", - "referenceNumber": 294, + "referenceNumber": 221, "name": "eCos license version 2.0", "licenseId": "eCos-2.0", "seeAlso": [ @@ -3694,74 +2788,690 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "reference": "https://spdx.org/licenses/OLDAP-1.4.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", - "referenceNumber": 295, - "name": "Zimbra Public License v1.3", - "licenseId": "Zimbra-1.3", + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", + "referenceNumber": 222, + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", "seeAlso": [ - "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zend-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", + "referenceNumber": 223, + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "seeAlso": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/eGenix.html", + "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/eGenix.json", - "referenceNumber": 296, - "name": "eGenix.com Public License 1.1.0", - "licenseId": "eGenix", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", + "referenceNumber": 224, + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", "seeAlso": [ - "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", - "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/IBM-pibs.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", - "referenceNumber": 297, - "name": "IBM PowerPC Initialization and Boot Software", - "licenseId": "IBM-pibs", - "seeAlso": [ - "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", - "referenceNumber": 298, - "name": "BitTorrent Open Source License v1.1", - "licenseId": "BitTorrent-1.1", - "seeAlso": [ - "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "reference": "https://spdx.org/licenses/LPL-1.02.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", - "referenceNumber": 299, - "name": "SIL Open Font License 1.1 with no Reserved Font Name", - "licenseId": "OFL-1.1-no-RFN", + "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", + "referenceNumber": 225, + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", - "https://opensource.org/licenses/OFL-1.1" + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", + "referenceNumber": 226, + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/cddl1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/iMatix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/iMatix.json", + "referenceNumber": 227, + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "seeAlso": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", + "referenceNumber": 228, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ADSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ADSL.json", + "referenceNumber": 229, + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", + "referenceNumber": 230, + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", + "referenceNumber": 231, + "name": "ANTLR Software Rights Notice with license fallback", + "licenseId": "ANTLR-PD-fallback", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", + "referenceNumber": 232, + "name": "Linux man-pages Copyleft", + "licenseId": "Linux-man-pages-copyleft", + "seeAlso": [ + "https://www.kernel.org/doc/man-pages/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", + "referenceNumber": 233, + "name": "X11 License Distribution Modification Variant", + "licenseId": "X11-distribute-modifications-variant", + "seeAlso": [ + "https://github.com/mirror/ncurses/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT.json", + "referenceNumber": 234, + "name": "MIT License", + "licenseId": "MIT", + "seeAlso": [ + "https://opensource.org/licenses/MIT" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", + "referenceNumber": 235, + "name": "Hippocratic License 2.1", + "licenseId": "Hippocratic-2.1", + "seeAlso": [ + "https://firstdonoharm.dev/version/2/1/license.html", + "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", + "referenceNumber": 236, + "name": "Mulan Permissive Software License, Version 2", + "licenseId": "MulanPSL-2.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL2/" ], "isOsiApproved": true }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", + "referenceNumber": 237, + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nunit.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Nunit.json", + "referenceNumber": 238, + "name": "Nunit License", + "licenseId": "Nunit", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Nunit" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", + "referenceNumber": 239, + "name": "LZMA SDK License (versions 9.11 to 9.20)", + "licenseId": "LZMA-SDK-9.11-to-9.20", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", + "referenceNumber": 240, + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND.json", + "referenceNumber": 241, + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "seeAlso": [ + "https://opensource.org/licenses/HPND" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", + "referenceNumber": 242, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", + "referenceNumber": 243, + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "seeAlso": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", + "referenceNumber": 244, + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "seeAlso": [ + "https://www.gnu.org/software/classpath/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", + "referenceNumber": 245, + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/C-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", + "referenceNumber": 246, + "name": "Computational Use of Data Agreement v1.0", + "licenseId": "C-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", + "https://cdla.dev/computational-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", + "referenceNumber": 247, + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OCLC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", + "referenceNumber": 248, + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "seeAlso": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Crossword.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Crossword.json", + "referenceNumber": 249, + "name": "Crossword License", + "licenseId": "Crossword", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Crossword" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libtiff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libtiff.json", + "referenceNumber": 250, + "name": "libtiff License", + "licenseId": "libtiff", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/libtiff" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", + "referenceNumber": 251, + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/IPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MS-LPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", + "referenceNumber": 252, + "name": "Microsoft Limited Public License", + "licenseId": "MS-LPL", + "seeAlso": [ + "https://www.openhub.net/licenses/mslpl", + "https://github.com/gabegundy/atlserver/blob/master/License.txt", + "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-PL.json", + "referenceNumber": 253, + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", + "referenceNumber": 254, + "name": "GNU Free Documentation License v1.3 or later - no invariants", + "licenseId": "GFDL-1.3-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", + "referenceNumber": 255, + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", + "referenceNumber": 256, + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", + "referenceNumber": 257, + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", + "referenceNumber": 258, + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "seeAlso": [ + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ErlPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", + "referenceNumber": 259, + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "seeAlso": [ + "http://www.erlang.org/EPLICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", + "referenceNumber": 260, + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "seeAlso": [ + "http://labs.metacarta.com/license-explanation.html#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", + "referenceNumber": 261, + "name": "Creative Commons Attribution 3.0 Netherlands", + "licenseId": "CC-BY-3.0-NL", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/nl/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-open-group.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", + "referenceNumber": 262, + "name": "MIT Open Group variant", + "licenseId": "MIT-open-group", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SchemeReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", + "referenceNumber": 263, + "name": "Scheme Language Report License", + "licenseId": "SchemeReport", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", + "referenceNumber": 264, + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Elastic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", + "referenceNumber": 265, + "name": "Elastic License 2.0", + "licenseId": "Elastic-2.0", + "seeAlso": [ + "https://www.elastic.co/licensing/elastic-license", + "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC0-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", + "referenceNumber": 266, + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", + "seeAlso": [ + "https://creativecommons.org/publicdomain/zero/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Motosoto.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Motosoto.json", + "referenceNumber": 267, + "name": "Motosoto License", + "licenseId": "Motosoto", + "seeAlso": [ + "https://opensource.org/licenses/Motosoto" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/TMate.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TMate.json", + "referenceNumber": 268, + "name": "TMate Open Source License", + "licenseId": "TMate", + "seeAlso": [ + "http://svnkit.com/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MITNFA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MITNFA.json", + "referenceNumber": 269, + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MITNFA" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", + "referenceNumber": 270, + "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0", + "licenseId": "PDDL-1.0", + "seeAlso": [ + "http://opendatacommons.org/licenses/pddl/1.0/", + "https://opendatacommons.org/licenses/pddl/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", + "referenceNumber": 271, + "name": "Mulan Permissive Software License, Version 1", + "licenseId": "MulanPSL-1.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL/", + "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", + "referenceNumber": 272, + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", + "referenceNumber": 273, + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", + "referenceNumber": 274, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SCEA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SCEA.json", + "referenceNumber": 275, + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "seeAlso": [ + "http://research.scea.com/scea_shared_source_license.html" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/psfrag.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/psfrag.json", - "referenceNumber": 300, + "referenceNumber": 276, "name": "psfrag License", "licenseId": "psfrag", "seeAlso": [ @@ -3770,39 +3480,346 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", + "reference": "https://spdx.org/licenses/Frameworx-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", - "referenceNumber": 301, - "name": "Creative Commons Attribution No Derivatives 2.0 Generic", - "licenseId": "CC-BY-ND-2.0", + "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", + "referenceNumber": 277, + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + "https://opensource.org/licenses/Frameworx-1.0" ], - "isOsiApproved": false, - "isFsfLibre": false + "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/SHL-0.51.html", + "reference": "https://spdx.org/licenses/NAIST-2003.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", - "referenceNumber": 302, - "name": "Solderpad Hardware License, Version 0.51", - "licenseId": "SHL-0.51", + "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", + "referenceNumber": 278, + "name": "Nara Institute of Science and Technology License (2003)", + "licenseId": "NAIST-2003", "seeAlso": [ - "https://solderpad.org/licenses/SHL-0.51/" + "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", + "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", + "reference": "https://spdx.org/licenses/W3C-19980720.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", - "referenceNumber": 303, - "name": "FreeBSD Documentation License", - "licenseId": "FreeBSD-DOC", + "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", + "referenceNumber": 279, + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", "seeAlso": [ - "https://www.freebsd.org/copyright/freebsd-doc-license/" + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-RL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-RL.json", + "referenceNumber": 280, + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/JPNIC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPNIC.json", + "referenceNumber": 281, + "name": "Japan Network Information Center License", + "licenseId": "JPNIC", + "seeAlso": [ + "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glulxe.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glulxe.json", + "referenceNumber": 282, + "name": "Glulxe License", + "licenseId": "Glulxe", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", + "referenceNumber": 283, + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "seeAlso": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0", + "https://doc.qt.io/archives/3.3/license.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AAL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AAL.json", + "referenceNumber": 284, + "name": "Attribution Assurance License", + "licenseId": "AAL", + "seeAlso": [ + "https://opensource.org/licenses/attribution" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Newsletr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Newsletr.json", + "referenceNumber": 285, + "name": "Newsletr License", + "licenseId": "Newsletr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPUBL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", + "referenceNumber": 286, + "name": "Open Publication License v1.0", + "licenseId": "OPUBL-1.0", + "seeAlso": [ + "http://opencontent.org/openpub/", + "https://www.debian.org/opl", + "https://www.ctan.org/license/opl" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", + "referenceNumber": 287, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/gnuplot.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gnuplot.json", + "referenceNumber": 288, + "name": "gnuplot License", + "licenseId": "gnuplot", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Jam.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Jam.json", + "referenceNumber": 289, + "name": "Jam License", + "licenseId": "Jam", + "seeAlso": [ + "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", + "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", + "referenceNumber": 290, + "name": "GNU Free Documentation License v1.1 only - no invariants", + "licenseId": "GFDL-1.1-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", + "referenceNumber": 291, + "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + "licenseId": "CAL-1.0-Combined-Work-Exception", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.7.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", + "referenceNumber": 292, + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Nokia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Nokia.json", + "referenceNumber": 293, + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "seeAlso": [ + "https://opensource.org/licenses/nokia" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Adobe-2006.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", + "referenceNumber": 294, + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cube.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cube.json", + "referenceNumber": 295, + "name": "Cube License", + "licenseId": "Cube", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Cube" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sleepycat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", + "referenceNumber": 296, + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "seeAlso": [ + "https://opensource.org/licenses/Sleepycat" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", + "referenceNumber": 297, + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", + "referenceNumber": 298, + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "seeAlso": [ + "https://cdla.io/sharing-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", + "referenceNumber": 299, + "name": "Blue Oak Model License 1.0.0", + "licenseId": "BlueOak-1.0.0", + "seeAlso": [ + "https://blueoakcouncil.org/license/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/X11.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11.json", + "referenceNumber": 300, + "name": "X11 License", + "licenseId": "X11", + "seeAlso": [ + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Spencer-99.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", + "referenceNumber": 301, + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "seeAlso": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", + "referenceNumber": 302, + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail-8.23.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", + "referenceNumber": 303, + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "seeAlso": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" ], "isOsiApproved": false }, @@ -3820,994 +3837,35 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Mup.html", + "reference": "https://spdx.org/licenses/UPL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Mup.json", + "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", "referenceNumber": 305, - "name": "Mup License", - "licenseId": "Mup", + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Mup" + "https://opensource.org/licenses/UPL" ], - "isOsiApproved": false + "isOsiApproved": true, + "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", + "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", "referenceNumber": 306, - "name": "BSD 4 Clause Shortened", - "licenseId": "BSD-4-Clause-Shortened", + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", "seeAlso": [ - "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", - "referenceNumber": 307, - "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", - "licenseId": "CC-BY-NC-SA-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HPND.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HPND.json", - "referenceNumber": 308, - "name": "Historical Permission Notice and Disclaimer", - "licenseId": "HPND", - "seeAlso": [ - "https://opensource.org/licenses/HPND" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.6.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", - "referenceNumber": 309, - "name": "Open LDAP Public License v2.6", - "licenseId": "OLDAP-2.6", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", - "referenceNumber": 310, - "name": "Mozilla Public License 1.1", - "licenseId": "MPL-1.1", - "seeAlso": [ - "http://www.mozilla.org/MPL/MPL-1.1.html", - "https://opensource.org/licenses/MPL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", - "referenceNumber": 311, - "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", - "licenseId": "GPL-2.0-with-GCC-exception", - "seeAlso": [ - "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HaskellReport.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", - "referenceNumber": 312, - "name": "Haskell Language Report License", - "licenseId": "HaskellReport", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ECL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", - "referenceNumber": 313, - "name": "Educational Community License v1.0", - "licenseId": "ECL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/ECL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", - "referenceNumber": 314, - "name": "GNU Lesser General Public License v2.1 or later", - "licenseId": "LGPL-2.1-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", - "referenceNumber": 315, - "name": "SIL Open Font License 1.0", - "licenseId": "OFL-1.0", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/APSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", - "referenceNumber": 316, - "name": "Apple Public Source License 1.1", - "licenseId": "APSL-1.1", - "seeAlso": [ - "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MITNFA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MITNFA.json", - "referenceNumber": 317, - "name": "MIT +no-false-attribs license", - "licenseId": "MITNFA", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MITNFA" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", - "referenceNumber": 318, - "name": "CeCILL Free Software License Agreement v2.0", - "licenseId": "CECILL-2.0", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Crossword.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Crossword.json", - "referenceNumber": 319, - "name": "Crossword License", - "licenseId": "Crossword", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Crossword" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Aladdin.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Aladdin.json", - "referenceNumber": 320, - "name": "Aladdin Free Public License", - "licenseId": "Aladdin", - "seeAlso": [ - "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Baekmuk.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", - "referenceNumber": 321, - "name": "Baekmuk License", - "licenseId": "Baekmuk", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/XFree86-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", - "referenceNumber": 322, - "name": "XFree86 License 1.1", - "licenseId": "XFree86-1.1", - "seeAlso": [ - "http://www.xfree86.org/current/LICENSE4.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", - "referenceNumber": 323, - "name": "GNU General Public License v1.0 or later", - "licenseId": "GPL-1.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", - "referenceNumber": 324, - "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", - "licenseId": "CERN-OHL-W-2.0", - "seeAlso": [ - "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", - "referenceNumber": 325, - "name": "Creative Commons Attribution Share Alike 1.0 Generic", - "licenseId": "CC-BY-SA-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/NTP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NTP.json", - "referenceNumber": 326, - "name": "NTP License", - "licenseId": "NTP", - "seeAlso": [ - "https://opensource.org/licenses/NTP" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/PHP-3.01.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", - "referenceNumber": 327, - "name": "PHP License v3.01", - "licenseId": "PHP-3.01", - "seeAlso": [ - "http://www.php.net/license/3_01.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OCLC-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", - "referenceNumber": 328, - "name": "OCLC Research Public License 2.0", - "licenseId": "OCLC-2.0", - "seeAlso": [ - "http://www.oclc.org/research/activities/software/license/v2final.htm", - "https://opensource.org/licenses/OCLC-2.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", - "referenceNumber": 329, - "name": "Creative Commons Attribution 3.0 Germany", - "licenseId": "CC-BY-3.0-DE", - "seeAlso": [ - "https://creativecommons.org/licenses/by/3.0/de/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", - "referenceNumber": 330, - "name": "Creative Commons Attribution Non Commercial 2.5 Generic", - "licenseId": "CC-BY-NC-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc/2.5/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Zlib.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Zlib.json", - "referenceNumber": 331, - "name": "zlib License", - "licenseId": "Zlib", - "seeAlso": [ - "http://www.zlib.net/zlib_license.html", - "https://opensource.org/licenses/Zlib" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CATOSL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", - "referenceNumber": 332, - "name": "Computer Associates Trusted Open Source License 1.1", - "licenseId": "CATOSL-1.1", - "seeAlso": [ - "https://opensource.org/licenses/CATOSL-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", - "referenceNumber": 333, - "name": "GNU Lesser General Public License v3.0 or later", - "licenseId": "LGPL-3.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CAL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", - "referenceNumber": 334, - "name": "Cryptographic Autonomy License 1.0", - "licenseId": "CAL-1.0", - "seeAlso": [ - "http://cryptographicautonomylicense.com/license-text.html", - "https://opensource.org/licenses/CAL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/NPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", - "referenceNumber": 335, - "name": "Netscape Public License v1.0", - "licenseId": "NPL-1.0", - "seeAlso": [ - "http://www.mozilla.org/MPL/NPL/1.0/" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SMLNJ.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", - "referenceNumber": 336, - "name": "Standard ML of New Jersey License", - "licenseId": "SMLNJ", - "seeAlso": [ - "https://www.smlnj.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", - "referenceNumber": 337, - "name": "GNU General Public License v2.0 or later", - "licenseId": "GPL-2.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", - "referenceNumber": 338, - "name": "Open LDAP Public License v2.5", - "licenseId": "OLDAP-2.5", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JasPer-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", - "referenceNumber": 339, - "name": "JasPer License", - "licenseId": "JasPer-2.0", - "seeAlso": [ - "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", - "referenceNumber": 340, - "name": "GNU General Public License v2.0 or later", - "licenseId": "GPL-2.0-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", - "referenceNumber": 341, - "name": "BSD-2-Clause Plus Patent License", - "licenseId": "BSD-2-Clause-Patent", - "seeAlso": [ - "https://opensource.org/licenses/BSDplusPatent" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MS-RL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-RL.json", - "referenceNumber": 342, - "name": "Microsoft Reciprocal License", - "licenseId": "MS-RL", - "seeAlso": [ - "http://www.microsoft.com/opensource/licenses.mspx", - "https://opensource.org/licenses/MS-RL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", - "referenceNumber": 343, - "name": "CUA Office Public License v1.0", - "licenseId": "CUA-OPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/CUA-OPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/IPA.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IPA.json", - "referenceNumber": 344, - "name": "IPA Font License", - "licenseId": "IPA", - "seeAlso": [ - "https://opensource.org/licenses/IPA" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/NLPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NLPL.json", - "referenceNumber": 345, - "name": "No Limit Public License", - "licenseId": "NLPL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/NLPL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/O-UDA-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", - "referenceNumber": 346, - "name": "Open Use of Data Agreement v1.0", - "licenseId": "O-UDA-1.0", - "seeAlso": [ - "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", - "https://cdla.dev/open-use-of-data-agreement-v1-0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", - "referenceNumber": 347, - "name": "MIT License Modern Variant", - "licenseId": "MIT-Modern-Variant", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", - "https://ptolemy.berkeley.edu/copyright.htm", - "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", - "referenceNumber": 348, - "name": "Open LDAP Public License v1.2", - "licenseId": "OLDAP-1.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", - "referenceNumber": 349, - "name": "BSD 2-Clause FreeBSD License", - "licenseId": "BSD-2-Clause-FreeBSD", - "seeAlso": [ - "http://www.freebsd.org/copyright/freebsd-license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Info-ZIP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", - "referenceNumber": 350, - "name": "Info-ZIP License", - "licenseId": "Info-ZIP", - "seeAlso": [ - "http://www.info-zip.org/license.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", - "referenceNumber": 351, - "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", - "licenseId": "CC-BY-NC-SA-2.0-FR", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/0BSD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/0BSD.json", - "referenceNumber": 352, - "name": "BSD Zero Clause License", - "licenseId": "0BSD", - "seeAlso": [ - "http://landley.net/toybox/license.html", - "https://opensource.org/licenses/0BSD" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", - "referenceNumber": 353, - "name": "Unicode License Agreement - Data Files and Software (2016)", - "licenseId": "Unicode-DFS-2016", - "seeAlso": [ - "http://www.unicode.org/copyright.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", - "referenceNumber": 354, - "name": "SIL Open Font License 1.0 with Reserved Font Name", - "licenseId": "OFL-1.0-RFN", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Intel.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Intel.json", - "referenceNumber": 355, - "name": "Intel Open Source License", - "licenseId": "Intel", - "seeAlso": [ - "https://opensource.org/licenses/Intel" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", - "referenceNumber": 356, - "name": "Academic Free License v2.0", - "licenseId": "AFL-2.0", - "seeAlso": [ - "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GL2PS.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GL2PS.json", - "referenceNumber": 357, - "name": "GL2PS License", - "licenseId": "GL2PS", - "seeAlso": [ - "http://www.geuz.org/gl2ps/COPYING.GL2PS" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", - "referenceNumber": 358, - "name": "TAPR Open Hardware License v1.0", - "licenseId": "TAPR-OHL-1.0", - "seeAlso": [ - "https://www.tapr.org/OHL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Apache-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", - "referenceNumber": 359, - "name": "Apache License 1.0", - "licenseId": "Apache-1.0", - "seeAlso": [ - "http://www.apache.org/licenses/LICENSE-1.0" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MTLL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MTLL.json", - "referenceNumber": 360, - "name": "Matrix Template Library License", - "licenseId": "MTLL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Motosoto.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Motosoto.json", - "referenceNumber": 361, - "name": "Motosoto License", - "licenseId": "Motosoto", - "seeAlso": [ - "https://opensource.org/licenses/Motosoto" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/RSA-MD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", - "referenceNumber": 362, - "name": "RSA Message-Digest License", - "licenseId": "RSA-MD", - "seeAlso": [ - "http://www.faqs.org/rfcs/rfc1321.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", - "referenceNumber": 363, - "name": "Community Specification License 1.0", - "licenseId": "Community-Spec-1.0", - "seeAlso": [ - "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/ODC-By-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", - "referenceNumber": 364, - "name": "Open Data Commons Attribution License v1.0", - "licenseId": "ODC-By-1.0", - "seeAlso": [ - "https://opendatacommons.org/licenses/by/1.0/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", - "referenceNumber": 365, - "name": "zlib/libpng License with Acknowledgement", - "licenseId": "zlib-acknowledgement", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", - "referenceNumber": 366, - "name": "Data licence Germany – attribution – version 2.0", - "licenseId": "DL-DE-BY-2.0", - "seeAlso": [ - "https://www.govdata.de/dl-de/by-2-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/VSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", - "referenceNumber": 367, - "name": "Vovida Software License v1.0", - "licenseId": "VSL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/VSL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", - "referenceNumber": 368, - "name": "Licence Libre du Québec – Réciprocité version 1.1", - "licenseId": "LiLiQ-R-1.1", - "seeAlso": [ - "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", - "http://opensource.org/licenses/LiLiQ-R-1.1" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", - "referenceNumber": 369, - "name": "Open Public License v1.0", - "licenseId": "OPL-1.0", - "seeAlso": [ - "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", - "https://fedoraproject.org/wiki/Licensing/Open_Public_License" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0+.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", - "referenceNumber": 370, - "name": "GNU General Public License v3.0 or later", - "licenseId": "GPL-3.0+", - "seeAlso": [ - "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "https://opensource.org/licenses/GPL-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", - "referenceNumber": 371, - "name": "Mulan Permissive Software License, Version 2", - "licenseId": "MulanPSL-2.0", - "seeAlso": [ - "https://license.coscl.org.cn/MulanPSL2/" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/APSL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", - "referenceNumber": 372, - "name": "Apple Public Source License 1.2", - "licenseId": "APSL-1.2", - "seeAlso": [ - "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", - "referenceNumber": 373, - "name": "Taiwan Open Government Data License, version 1.0", - "licenseId": "OGDL-Taiwan-1.0", - "seeAlso": [ - "https://data.gov.tw/license" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/RSCPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/RSCPL.json", - "referenceNumber": 374, - "name": "Ricoh Source Code Public License", - "licenseId": "RSCPL", - "seeAlso": [ - "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", - "https://opensource.org/licenses/RSCPL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OGC-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", - "referenceNumber": 375, - "name": "OGC Software License, Version 1.0", - "licenseId": "OGC-1.0", - "seeAlso": [ - "https://www.ogc.org/ogc/software/1.0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/EFL-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", - "referenceNumber": 376, - "name": "Eiffel Forum License v2.0", - "licenseId": "EFL-2.0", - "seeAlso": [ - "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", - "https://opensource.org/licenses/EFL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", - "referenceNumber": 377, - "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", - "licenseId": "CAL-1.0-Combined-Work-Exception", - "seeAlso": [ - "http://cryptographicautonomylicense.com/license-text.html", - "https://opensource.org/licenses/CAL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/MS-PL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MS-PL.json", - "referenceNumber": 378, - "name": "Microsoft Public License", - "licenseId": "MS-PL", - "seeAlso": [ - "http://www.microsoft.com/opensource/licenses.mspx", - "https://opensource.org/licenses/MS-PL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Plexus.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Plexus.json", - "referenceNumber": 379, - "name": "Plexus Classworlds License", - "licenseId": "Plexus", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Sendmail-8.23.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", - "referenceNumber": 380, - "name": "Sendmail License 8.23", - "licenseId": "Sendmail-8.23", - "seeAlso": [ - "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", - "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Cube.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Cube.json", - "referenceNumber": 381, - "name": "Cube License", - "licenseId": "Cube", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Cube" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/JSON.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/JSON.json", - "referenceNumber": 382, - "name": "JSON License", - "licenseId": "JSON", - "seeAlso": [ - "http://www.json.org/license.html" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, { "reference": "https://spdx.org/licenses/EUPL-1.2.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", - "referenceNumber": 383, + "referenceNumber": 307, "name": "European Union Public License 1.2", "licenseId": "EUPL-1.2", "seeAlso": [ @@ -4822,226 +3880,161 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/Adobe-Glyph.html", + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", - "referenceNumber": 384, - "name": "Adobe Glyph List License", - "licenseId": "Adobe-Glyph", + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", + "referenceNumber": 308, + "name": "Creative Commons Attribution Share Alike 3.0 Austria", + "licenseId": "CC-BY-SA-3.0-AT", "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" + "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/FreeImage.html", + "reference": "https://spdx.org/licenses/SSH-short.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FreeImage.json", - "referenceNumber": 385, - "name": "FreeImage Public License v1.0", - "licenseId": "FreeImage", + "detailsUrl": "https://spdx.org/licenses/SSH-short.json", + "referenceNumber": 309, + "name": "SSH short notice", + "licenseId": "SSH-short", "seeAlso": [ - "http://freeimage.sourceforge.net/freeimage-license.txt" + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", + "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Watcom-1.0.html", + "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", - "referenceNumber": 386, - "name": "Sybase Open Watcom Public License 1.0", - "licenseId": "Watcom-1.0", + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", + "referenceNumber": 310, + "name": "Creative Commons Attribution 3.0 Austria", + "licenseId": "CC-BY-3.0-AT", "seeAlso": [ - "https://opensource.org/licenses/Watcom-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/Jam.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Jam.json", - "referenceNumber": 387, - "name": "Jam License", - "licenseId": "Jam", - "seeAlso": [ - "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", - "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", - "referenceNumber": 388, - "name": "Hippocratic License 2.1", - "licenseId": "Hippocratic-2.1", - "seeAlso": [ - "https://firstdonoharm.dev/version/2/1/license.html", - "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + "https://creativecommons.org/licenses/by/3.0/at/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "reference": "https://spdx.org/licenses/MIT-enna.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", - "referenceNumber": 389, - "name": "Open LDAP Public License v2.0.1", - "licenseId": "OLDAP-2.0.1", + "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", + "referenceNumber": 311, + "name": "enna License", + "licenseId": "MIT-enna", "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" + "https://fedoraproject.org/wiki/Licensing/MIT#enna" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", - "referenceNumber": 390, - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", - "licenseId": "CC-BY-NC-SA-2.0", + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", + "referenceNumber": 312, + "name": "Creative Commons Attribution 3.0 United States", + "licenseId": "CC-BY-3.0-US", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + "https://creativecommons.org/licenses/by/3.0/us/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Nokia.html", + "reference": "https://spdx.org/licenses/xpp.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Nokia.json", - "referenceNumber": 391, - "name": "Nokia Open Source License", - "licenseId": "Nokia", + "detailsUrl": "https://spdx.org/licenses/xpp.json", + "referenceNumber": 313, + "name": "XPP License", + "licenseId": "xpp", "seeAlso": [ - "https://opensource.org/licenses/nokia" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OCCT-PL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", - "referenceNumber": 392, - "name": "Open CASCADE Technology Public License", - "licenseId": "OCCT-PL", - "seeAlso": [ - "http://www.opencascade.com/content/occt-public-license" + "https://fedoraproject.org/wiki/Licensing/xpp" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/ErlPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", - "referenceNumber": 393, - "name": "Erlang Public License v1.1", - "licenseId": "ErlPL-1.1", - "seeAlso": [ - "http://www.erlang.org/EPLICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/TOSL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TOSL.json", - "referenceNumber": 394, - "name": "Trusster Open Source License", - "licenseId": "TOSL", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/TOSL" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OSL-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", - "referenceNumber": 395, - "name": "Open Software License 2.1", - "licenseId": "OSL-2.1", - "seeAlso": [ - "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", - "https://opensource.org/licenses/OSL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ClArtistic.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", - "referenceNumber": 396, - "name": "Clarified Artistic License", - "licenseId": "ClArtistic", - "seeAlso": [ - "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", - "http://www.ncftp.com/ncftp/doc/LICENSE.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/xinetd.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/xinetd.json", - "referenceNumber": 397, - "name": "xinetd License", - "licenseId": "xinetd", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Xinetd_License" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", + "reference": "https://spdx.org/licenses/GFDL-1.1.html", "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", - "referenceNumber": 398, - "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", - "licenseId": "GPL-3.0-with-GCC-exception", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", + "referenceNumber": 314, + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", "seeAlso": [ - "https://www.gnu.org/licenses/gcc-exception-3.1.html" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/ODbL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", - "referenceNumber": 399, - "name": "Open Data Commons Open Database License v1.0", - "licenseId": "ODbL-1.0", - "seeAlso": [ - "http://www.opendatacommons.org/licenses/odbl/1.0/", - "https://opendatacommons.org/licenses/odbl/1-0/" + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" ], "isOsiApproved": false, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/MIT.html", + "reference": "https://spdx.org/licenses/Condor-1.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT.json", - "referenceNumber": 400, - "name": "MIT License", - "licenseId": "MIT", + "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", + "referenceNumber": 315, + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", "seeAlso": [ - "https://opensource.org/licenses/MIT" + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Vera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", + "referenceNumber": 316, + "name": "Bitstream Vera Font License", + "licenseId": "Bitstream-Vera", + "seeAlso": [ + "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", + "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", + "referenceNumber": 317, + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/SPL-1.0" ], "isOsiApproved": true, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/Baekmuk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", + "referenceNumber": 318, + "name": "Baekmuk License", + "licenseId": "Baekmuk", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", + "referenceNumber": 319, + "name": "Data licence Germany – attribution – version 2.0", + "licenseId": "DL-DE-BY-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/by-2-0" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/LGPL-2.1+.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", - "referenceNumber": 401, + "referenceNumber": 320, "name": "GNU Library General Public License v2.1 or later", "licenseId": "LGPL-2.1+", "seeAlso": [ @@ -5052,159 +4045,376 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", - "referenceNumber": 402, - "name": "GNU Lesser General Public License v2.1 only", - "licenseId": "LGPL-2.1-only", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", + "referenceNumber": 321, + "name": "GNU Free Documentation License v1.2 only - invariants", + "licenseId": "GFDL-1.2-invariants-only", "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "https://opensource.org/licenses/LGPL-2.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CrystalStacker.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", - "referenceNumber": 403, - "name": "CrystalStacker License", - "licenseId": "CrystalStacker", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/ECL-2.0.html", + "reference": "https://spdx.org/licenses/JSON.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", - "referenceNumber": 404, - "name": "Educational Community License v2.0", - "licenseId": "ECL-2.0", + "detailsUrl": "https://spdx.org/licenses/JSON.json", + "referenceNumber": 322, + "name": "JSON License", + "licenseId": "JSON", "seeAlso": [ - "https://opensource.org/licenses/ECL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", - "referenceNumber": 405, - "name": "LaTeX Project Public License v1.0", - "licenseId": "LPPL-1.0", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-0.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/iMatix.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/iMatix.json", - "referenceNumber": 406, - "name": "iMatix Standard Function Library Agreement", - "licenseId": "iMatix", - "seeAlso": [ - "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + "http://www.json.org/license.html" ], "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", + "referenceNumber": 323, + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PostgreSQL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", + "referenceNumber": 324, + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", + "seeAlso": [ + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", + "referenceNumber": 325, + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "seeAlso": [ + "http://www.opensource.apple.com/license/apsl/" + ], + "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", - "referenceNumber": 407, - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", - "licenseId": "CC-BY-NC-ND-3.0-IGO", + "reference": "https://spdx.org/licenses/GPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", + "referenceNumber": 326, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", + "referenceNumber": 327, + "name": "Open Government Licence - Canada", + "licenseId": "OGL-Canada-2.0", + "seeAlso": [ + "https://open.canada.ca/en/open-government-licence-canada" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-Source-Code.html", + "reference": "https://spdx.org/licenses/Glide.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", - "referenceNumber": 408, - "name": "BSD Source Code Attribution", - "licenseId": "BSD-Source-Code", + "detailsUrl": "https://spdx.org/licenses/Glide.json", + "referenceNumber": 328, + "name": "3dfx Glide License", + "licenseId": "Glide", "seeAlso": [ - "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" + "http://www.users.on.net/~triforce/glidexp/COPYING.txt" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Parity-6.0.0.html", + "reference": "https://spdx.org/licenses/TOSL.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", - "referenceNumber": 409, - "name": "The Parity Public License 6.0.0", - "licenseId": "Parity-6.0.0", + "detailsUrl": "https://spdx.org/licenses/TOSL.json", + "referenceNumber": 329, + "name": "Trusster Open Source License", + "licenseId": "TOSL", "seeAlso": [ - "https://paritylicense.com/versions/6.0.0.html" + "https://fedoraproject.org/wiki/Licensing/TOSL" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/TCL.html", + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/TCL.json", - "referenceNumber": 410, - "name": "TCL/TK License", - "licenseId": "TCL", + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "referenceNumber": 330, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", "seeAlso": [ - "http://www.tcl.tk/software/tcltk/license.html", - "https://fedoraproject.org/wiki/Licensing/TCL" + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Arphic-1999.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", - "referenceNumber": 411, - "name": "Arphic Public License", - "licenseId": "Arphic-1999", + "reference": "https://spdx.org/licenses/wxWindows.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/wxWindows.json", + "referenceNumber": 331, + "name": "wxWindows Library License", + "licenseId": "wxWindows", "seeAlso": [ - "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" + "https://opensource.org/licenses/WXwindows" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", + "referenceNumber": 332, + "name": "Non-Commercial Government Licence", + "licenseId": "NCGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", + "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", - "referenceNumber": 412, - "name": "Creative Commons Attribution Share Alike 3.0 Unported", - "licenseId": "CC-BY-SA-3.0", + "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", + "referenceNumber": 333, + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", "seeAlso": [ - "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/Caldera.html", + "reference": "https://spdx.org/licenses/OSL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Caldera.json", - "referenceNumber": 413, - "name": "Caldera License", - "licenseId": "Caldera", + "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", + "referenceNumber": 334, + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", "seeAlso": [ - "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + "https://opensource.org/licenses/OSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", + "referenceNumber": 335, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" ], "isOsiApproved": false }, + { + "reference": "https://spdx.org/licenses/Artistic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", + "referenceNumber": 336, + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "seeAlso": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://www.perlfoundation.org/artistic-license-20.html", + "https://opensource.org/licenses/artistic-license-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", + "referenceNumber": 337, + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/diffmark.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/diffmark.json", + "referenceNumber": 338, + "name": "diffmark license", + "licenseId": "diffmark", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/diffmark" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", + "referenceNumber": 339, + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Dotseqn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", + "referenceNumber": 340, + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", + "referenceNumber": 341, + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/0BSD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/0BSD.json", + "referenceNumber": 342, + "name": "BSD Zero Clause License", + "licenseId": "0BSD", + "seeAlso": [ + "http://landley.net/toybox/license.html", + "https://opensource.org/licenses/0BSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", + "referenceNumber": 343, + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", + "referenceNumber": 344, + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "seeAlso": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Multics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Multics.json", + "referenceNumber": 345, + "name": "Multics License", + "licenseId": "Multics", + "seeAlso": [ + "https://opensource.org/licenses/Multics" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NBPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", + "referenceNumber": 346, + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", + "referenceNumber": 347, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", + "referenceNumber": 348, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", + "referenceNumber": 349, + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-2-Clause" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, { "reference": "https://spdx.org/licenses/AGPL-1.0.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", - "referenceNumber": 414, + "referenceNumber": 350, "name": "Affero General Public License v1.0", "licenseId": "AGPL-1.0", "seeAlso": [ @@ -5214,23 +4424,263 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/IPL-1.0.html", + "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", - "referenceNumber": 415, - "name": "IBM Public License v1.0", - "licenseId": "IPL-1.0", + "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", + "referenceNumber": 351, + "name": "gSOAP Public License v1.3b", + "licenseId": "gSOAP-1.3b", "seeAlso": [ - "https://opensource.org/licenses/IPL-1.0" + "http://www.cs.fsu.edu/~engelen/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", + "referenceNumber": 352, + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "seeAlso": [ + "http://www.freebsd.org/copyright/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", + "referenceNumber": 353, + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/APL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/eGenix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/eGenix.json", + "referenceNumber": 354, + "name": "eGenix.com Public License 1.1.0", + "licenseId": "eGenix", + "seeAlso": [ + "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", + "referenceNumber": 355, + "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + "licenseId": "CERN-OHL-W-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", + "referenceNumber": 356, + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Bahyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bahyph.json", + "referenceNumber": 357, + "name": "Bahyph License", + "licenseId": "Bahyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", + "referenceNumber": 358, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" ], "isOsiApproved": true, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/SNIA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SNIA.json", + "referenceNumber": 359, + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", + "referenceNumber": 360, + "name": "MIT License Modern Variant", + "licenseId": "MIT-Modern-Variant", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", + "https://ptolemy.berkeley.edu/copyright.htm", + "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Zlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zlib.json", + "referenceNumber": 361, + "name": "zlib License", + "licenseId": "Zlib", + "seeAlso": [ + "http://www.zlib.net/zlib_license.html", + "https://opensource.org/licenses/Zlib" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", + "referenceNumber": 362, + "name": "Creative Commons Attribution Share Alike 3.0 Germany", + "licenseId": "CC-BY-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PHP-3.01.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", + "referenceNumber": 363, + "name": "PHP License v3.01", + "licenseId": "PHP-3.01", + "seeAlso": [ + "http://www.php.net/license/3_01.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/APSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", + "referenceNumber": 364, + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", + "seeAlso": [ + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", + "referenceNumber": 365, + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", + "referenceNumber": 366, + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", + "referenceNumber": 367, + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", + "seeAlso": [ + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam\u003d1467140197_43d516ce1776bd08a58235a7785be1cc" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SWL.json", + "referenceNumber": 368, + "name": "Scheme Widget Library (SWL) Software License Agreement", + "licenseId": "SWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SWL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", + "referenceNumber": 369, + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", + "referenceNumber": 370, + "name": "CERN Open Hardware Licence Version 2 - Permissive", + "licenseId": "CERN-OHL-P-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, { "reference": "https://spdx.org/licenses/LAL-1.3.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", - "referenceNumber": 416, + "referenceNumber": 371, "name": "Licence Art Libre 1.3", "licenseId": "LAL-1.3", "seeAlso": [ @@ -5239,260 +4689,22 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/EPICS.html", + "reference": "https://spdx.org/licenses/IBM-pibs.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPICS.json", - "referenceNumber": 417, - "name": "EPICS Open License", - "licenseId": "EPICS", + "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", + "referenceNumber": 372, + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", "seeAlso": [ - "https://epics.anl.gov/license/open.php" + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/NGPL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NGPL.json", - "referenceNumber": 418, - "name": "Nethack General Public License", - "licenseId": "NGPL", - "seeAlso": [ - "https://opensource.org/licenses/NGPL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/DRL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", - "referenceNumber": 419, - "name": "Detection Rule License 1.0", - "licenseId": "DRL-1.0", - "seeAlso": [ - "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", - "referenceNumber": 420, - "name": "BSD 2-Clause NetBSD License", - "licenseId": "BSD-2-Clause-NetBSD", - "seeAlso": [ - "http://www.netbsd.org/about/redistribution.html#default" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/ZPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", - "referenceNumber": 421, - "name": "Zope Public License 1.1", - "licenseId": "ZPL-1.1", - "seeAlso": [ - "http://old.zope.org/Resources/License/ZPL-1.1" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GD.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GD.json", - "referenceNumber": 422, - "name": "GD License", - "licenseId": "GD", - "seeAlso": [ - "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPPL-1.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", - "referenceNumber": 423, - "name": "LaTeX Project Public License v1.2", - "licenseId": "LPPL-1.2", - "seeAlso": [ - "http://www.latex-project.org/lppl/lppl-1-2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Dotseqn.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", - "referenceNumber": 424, - "name": "Dotseqn License", - "licenseId": "Dotseqn", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Dotseqn" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Spencer-99.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", - "referenceNumber": 425, - "name": "Spencer License 99", - "licenseId": "Spencer-99", - "seeAlso": [ - "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.3.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", - "referenceNumber": 426, - "name": "Open LDAP Public License v2.3", - "licenseId": "OLDAP-2.3", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/YPL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", - "referenceNumber": 427, - "name": "Yahoo! Public License v1.1", - "licenseId": "YPL-1.1", - "seeAlso": [ - "http://www.zimbra.com/license/yahoo_public_license_1.1.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Fair.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Fair.json", - "referenceNumber": 428, - "name": "Fair License", - "licenseId": "Fair", - "seeAlso": [ - "http://fairlicense.org/", - "https://opensource.org/licenses/Fair" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/Qhull.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Qhull.json", - "referenceNumber": 429, - "name": "Qhull License", - "licenseId": "Qhull", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Qhull" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", - "referenceNumber": 430, - "name": "GNU Free Documentation License v1.1 or later - no invariants", - "licenseId": "GFDL-1.1-no-invariants-or-later", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CECILL-C.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", - "referenceNumber": 431, - "name": "CeCILL-C Free Software License Agreement", - "licenseId": "CECILL-C", - "seeAlso": [ - "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", - "referenceNumber": 432, - "name": "Mulan Permissive Software License, Version 1", - "licenseId": "MulanPSL-1.0", - "seeAlso": [ - "https://license.coscl.org.cn/MulanPSL/", - "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", - "referenceNumber": 433, - "name": "Open LDAP Public License v1.1", - "licenseId": "OLDAP-1.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", - "referenceNumber": 434, - "name": "Open LDAP Public License v2.1", - "licenseId": "OLDAP-2.1", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/LPL-1.02.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", - "referenceNumber": 435, - "name": "Lucent Public License v1.02", - "licenseId": "LPL-1.02", - "seeAlso": [ - "http://plan9.bell-labs.com/plan9/license.html", - "https://opensource.org/licenses/LPL-1.02" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/UPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", - "referenceNumber": 436, - "name": "Universal Permissive License v1.0", - "licenseId": "UPL-1.0", - "seeAlso": [ - "https://opensource.org/licenses/UPL" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, { "reference": "https://spdx.org/licenses/Abstyles.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Abstyles.json", - "referenceNumber": 437, + "referenceNumber": 373, "name": "Abstyles License", "licenseId": "Abstyles", "seeAlso": [ @@ -5501,24 +4713,60 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/ZPL-2.0.html", + "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", - "referenceNumber": 438, - "name": "Zope Public License 2.0", - "licenseId": "ZPL-2.0", + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", + "referenceNumber": 374, + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", "seeAlso": [ - "http://old.zope.org/Resources/License/ZPL-2.0", - "https://opensource.org/licenses/ZPL-2.0" + "https://www.gnu.org/licenses/fdl-1.3.txt" ], - "isOsiApproved": true, + "isOsiApproved": false, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/CECILL-B.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", + "referenceNumber": 375, + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", + "referenceNumber": 376, + "name": "GNU Free Documentation License v1.1 or later - no invariants", + "licenseId": "GFDL-1.1-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", + "referenceNumber": 377, + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + ], + "isOsiApproved": true + }, { "reference": "https://spdx.org/licenses/MIT-0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/MIT-0.json", - "referenceNumber": 439, + "referenceNumber": 378, "name": "MIT No Attribution", "licenseId": "MIT-0", "seeAlso": [ @@ -5528,6 +4776,775 @@ ], "isOsiApproved": true }, + { + "reference": "https://spdx.org/licenses/Sendmail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail.json", + "referenceNumber": 379, + "name": "Sendmail License", + "licenseId": "Sendmail", + "seeAlso": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMDPLPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", + "referenceNumber": 380, + "name": "AMD\u0027s plpa_map.c License", + "licenseId": "AMDPLPA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", + "referenceNumber": 381, + "name": "FreeBSD Documentation License", + "licenseId": "FreeBSD-DOC", + "seeAlso": [ + "https://www.freebsd.org/copyright/freebsd-doc-license/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/WTFPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/WTFPL.json", + "referenceNumber": 382, + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "seeAlso": [ + "http://www.wtfpl.net/about/", + "http://sam.zoy.org/wtfpl/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NASA-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", + "referenceNumber": 383, + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "seeAlso": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/mpich2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpich2.json", + "referenceNumber": 384, + "name": "mpich2 License", + "licenseId": "mpich2", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", + "referenceNumber": 385, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", + "licenseId": "CC-BY-NC-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", + "referenceNumber": 386, + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "seeAlso": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DOC.json", + "referenceNumber": 387, + "name": "DOC License", + "licenseId": "DOC", + "seeAlso": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", + "referenceNumber": 388, + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", + "seeAlso": [ + "https://opensource.org/licenses/BSDplusPatent" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", + "referenceNumber": 389, + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e.json", + "referenceNumber": 390, + "name": "Latex2e License", + "licenseId": "Latex2e", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", + "referenceNumber": 391, + "name": "Upstream Compatibility License v1.0", + "licenseId": "UCL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UCL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ECL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", + "referenceNumber": 392, + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", + "referenceNumber": 393, + "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", + "referenceNumber": 394, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", + "referenceNumber": 395, + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "seeAlso": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", + "referenceNumber": 396, + "name": "PolyForm Small Business License 1.0.0", + "licenseId": "PolyForm-Small-Business-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/small-business/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", + "referenceNumber": 397, + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", + "referenceNumber": 398, + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", + "seeAlso": [ + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", + "referenceNumber": 399, + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "seeAlso": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GLWTPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", + "referenceNumber": 400, + "name": "Good Luck With That Public License", + "licenseId": "GLWTPL", + "seeAlso": [ + "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Giftware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Giftware.json", + "referenceNumber": 401, + "name": "Giftware License", + "licenseId": "Giftware", + "seeAlso": [ + "http://liballeg.org/license.html#allegro-4-the-giftware-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", + "referenceNumber": 402, + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NRL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NRL.json", + "referenceNumber": 403, + "name": "NRL License", + "licenseId": "NRL", + "seeAlso": [ + "http://web.mit.edu/network/isakmp/nrllicense.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Caldera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera.json", + "referenceNumber": 404, + "name": "Caldera License", + "licenseId": "Caldera", + "seeAlso": [ + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", + "referenceNumber": 405, + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", + "referenceNumber": 406, + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/etalab-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", + "referenceNumber": 407, + "name": "Etalab Open License 2.0", + "licenseId": "etalab-2.0", + "seeAlso": [ + "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JasPer-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", + "referenceNumber": 408, + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "seeAlso": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RHeCos-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", + "referenceNumber": 409, + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", + "seeAlso": [ + "http://ecos.sourceware.org/old-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/NTP-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP-0.json", + "referenceNumber": 410, + "name": "NTP No Attribution", + "licenseId": "NTP-0", + "seeAlso": [ + "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", + "referenceNumber": 411, + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", + "referenceNumber": 412, + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", + "referenceNumber": 413, + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PHP-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", + "referenceNumber": 414, + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", + "seeAlso": [ + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SAX-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", + "referenceNumber": 415, + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", + "referenceNumber": 416, + "name": "NIST Public Domain Notice", + "licenseId": "NIST-PD", + "seeAlso": [ + "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", + "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", + "referenceNumber": 417, + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Info-ZIP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", + "referenceNumber": 418, + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "seeAlso": [ + "http://www.info-zip.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", + "referenceNumber": 419, + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", + "referenceNumber": 420, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", + "referenceNumber": 421, + "name": "Common Documentation License 1.0", + "licenseId": "CDL-1.0", + "seeAlso": [ + "http://www.opensource.apple.com/cdl/", + "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", + "https://www.gnu.org/licenses/license-list.html#ACDL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SMLNJ.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", + "referenceNumber": 422, + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", + "referenceNumber": 423, + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", + "referenceNumber": 424, + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", + "referenceNumber": 425, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", + "licenseId": "CC-BY-NC-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Vim.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Vim.json", + "referenceNumber": 426, + "name": "Vim License", + "licenseId": "Vim", + "seeAlso": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", + "referenceNumber": 427, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", + "licenseId": "CC-BY-NC-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Noweb.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Noweb.json", + "referenceNumber": 428, + "name": "Noweb License", + "licenseId": "Noweb", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Noweb" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Aladdin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Aladdin.json", + "referenceNumber": 429, + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", + "seeAlso": [ + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", + "referenceNumber": 430, + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/W3C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C.json", + "referenceNumber": 431, + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/FSFAP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP.json", + "referenceNumber": 432, + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "seeAlso": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", + "referenceNumber": 433, + "name": "SSH OpenSSH license", + "licenseId": "SSH-OpenSSH", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", + "referenceNumber": 434, + "name": "GNU Free Documentation License v1.3 only - no invariants", + "licenseId": "GFDL-1.3-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SISSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL.json", + "referenceNumber": 435, + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "seeAlso": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", + "referenceNumber": 436, + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "seeAlso": [ + "http://www.python.org/download/releases/1.6.1/download_win/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", + "referenceNumber": 437, + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Barr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Barr.json", + "referenceNumber": 438, + "name": "Barr License", + "licenseId": "Barr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Barr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MTLL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MTLL.json", + "referenceNumber": 439, + "name": "Matrix Template Library License", + "licenseId": "MTLL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", "isDeprecatedLicenseId": false, @@ -5541,242 +5558,38 @@ "isOsiApproved": true }, { - "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", "referenceNumber": 441, - "name": "GNU Free Documentation License v1.3 only - no invariants", - "licenseId": "GFDL-1.3-no-invariants-only", + "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", + "licenseId": "CC-BY-NC-SA-2.0-FR", "seeAlso": [ - "https://www.gnu.org/licenses/fdl-1.3.txt" + "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/AGPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", + "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", "referenceNumber": 442, - "name": "GNU Affero General Public License v3.0", - "licenseId": "AGPL-3.0", + "name": "Creative Commons Attribution 3.0 IGO", + "licenseId": "CC-BY-3.0-IGO", "seeAlso": [ - "https://www.gnu.org/licenses/agpl.txt", - "https://opensource.org/licenses/AGPL-3.0" + "https://creativecommons.org/licenses/by/3.0/igo/legalcode" ], - "isOsiApproved": true, - "isFsfLibre": true + "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/EPL-2.0.html", + "reference": "https://spdx.org/licenses/AML.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", + "detailsUrl": "https://spdx.org/licenses/AML.json", "referenceNumber": 443, - "name": "Eclipse Public License 2.0", - "licenseId": "EPL-2.0", + "name": "Apple MIT License", + "licenseId": "AML", "seeAlso": [ - "https://www.eclipse.org/legal/epl-2.0", - "https://www.opensource.org/licenses/EPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/AFL-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", - "referenceNumber": 444, - "name": "Academic Free License v3.0", - "licenseId": "AFL-3.0", - "seeAlso": [ - "http://www.rosenlaw.com/AFL3.0.htm", - "https://opensource.org/licenses/afl-3.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", - "referenceNumber": 445, - "name": "Community Data License Agreement Permissive 1.0", - "licenseId": "CDLA-Permissive-1.0", - "seeAlso": [ - "https://cdla.io/permissive-1-0" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", - "referenceNumber": 446, - "name": "Artistic License 1.0", - "licenseId": "Artistic-1.0", - "seeAlso": [ - "https://opensource.org/licenses/Artistic-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", - "referenceNumber": 447, - "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", - "licenseId": "CC-BY-NC-ND-4.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/HTMLTIDY.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", - "referenceNumber": 448, - "name": "HTML Tidy License", - "licenseId": "HTMLTIDY", - "seeAlso": [ - "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Glide.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Glide.json", - "referenceNumber": 449, - "name": "3dfx Glide License", - "licenseId": "Glide", - "seeAlso": [ - "http://www.users.on.net/~triforce/glidexp/COPYING.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/FSFAP.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/FSFAP.json", - "referenceNumber": 450, - "name": "FSF All Permissive License", - "licenseId": "FSFAP", - "seeAlso": [ - "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/LGPLLR.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", - "referenceNumber": 451, - "name": "Lesser General Public License For Linguistic Resources", - "licenseId": "LGPLLR", - "seeAlso": [ - "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", - "referenceNumber": 452, - "name": "Open Government Licence v3.0", - "licenseId": "OGL-UK-3.0", - "seeAlso": [ - "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", - "referenceNumber": 453, - "name": "GNU Free Documentation License v1.2", - "licenseId": "GFDL-1.2", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", - "referenceNumber": 454, - "name": "SSH OpenSSH license", - "licenseId": "SSH-OpenSSH", - "seeAlso": [ - "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", - "referenceNumber": 455, - "name": "GNU Free Documentation License v1.1 only", - "licenseId": "GFDL-1.1-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/MIT-feh.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", - "referenceNumber": 456, - "name": "feh License", - "licenseId": "MIT-feh", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/MIT#feh" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/MPL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", - "referenceNumber": 457, - "name": "Mozilla Public License 1.0", - "licenseId": "MPL-1.0", - "seeAlso": [ - "http://www.mozilla.org/MPL/MPL-1.0.html", - "https://opensource.org/licenses/MPL-1.0" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/PostgreSQL.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", - "referenceNumber": 458, - "name": "PostgreSQL License", - "licenseId": "PostgreSQL", - "seeAlso": [ - "http://www.postgresql.org/about/licence", - "https://opensource.org/licenses/PostgreSQL" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", - "referenceNumber": 459, - "name": "Open LDAP Public License 2.2.2", - "licenseId": "OLDAP-2.2.2", - "seeAlso": [ - "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" ], "isOsiApproved": false }, @@ -5784,7 +5597,7 @@ "reference": "https://spdx.org/licenses/SMPPL.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/SMPPL.json", - "referenceNumber": 460, + "referenceNumber": 444, "name": "Secure Messaging Protocol Public License", "licenseId": "SMPPL", "seeAlso": [ @@ -5792,37 +5605,11 @@ ], "isOsiApproved": false }, - { - "reference": "https://spdx.org/licenses/OFL-1.1.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", - "referenceNumber": 461, - "name": "SIL Open Font License 1.1", - "licenseId": "OFL-1.1", - "seeAlso": [ - "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", - "https://opensource.org/licenses/OFL-1.1" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Leptonica.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Leptonica.json", - "referenceNumber": 462, - "name": "Leptonica License", - "licenseId": "Leptonica", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Leptonica" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", - "referenceNumber": 463, + "referenceNumber": 445, "name": "CERN Open Hardware Licence v1.1", "licenseId": "CERN-OHL-1.1", "seeAlso": [ @@ -5831,162 +5618,571 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", + "reference": "https://spdx.org/licenses/OSL-2.1.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", - "referenceNumber": 464, - "name": "BSD 3-Clause No Nuclear Warranty", - "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", + "referenceNumber": 446, + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", "seeAlso": [ - "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", - "referenceNumber": 465, - "name": "Creative Commons Attribution No Derivatives 2.5 Generic", - "licenseId": "CC-BY-ND-2.5", - "seeAlso": [ - "https://creativecommons.org/licenses/by-nd/2.5/legalcode" - ], - "isOsiApproved": false, - "isFsfLibre": false - }, - { - "reference": "https://spdx.org/licenses/CC-BY-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", - "referenceNumber": 466, - "name": "Creative Commons Attribution 1.0 Generic", - "licenseId": "CC-BY-1.0", - "seeAlso": [ - "https://creativecommons.org/licenses/by/1.0/legalcode" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", - "referenceNumber": 467, - "name": "GNU Free Documentation License v1.2 only", - "licenseId": "GFDL-1.2-only", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/OPUBL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", - "referenceNumber": 468, - "name": "Open Publication License v1.0", - "licenseId": "OPUBL-1.0", - "seeAlso": [ - "http://opencontent.org/openpub/", - "https://www.debian.org/opl", - "https://www.ctan.org/license/opl" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/libselinux-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", - "referenceNumber": 469, - "name": "libselinux public domain notice", - "licenseId": "libselinux-1.0", - "seeAlso": [ - "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSD-3-Clause.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", - "referenceNumber": 470, - "name": "BSD 3-Clause \"New\" or \"Revised\" License", - "licenseId": "BSD-3-Clause", - "seeAlso": [ - "https://opensource.org/licenses/BSD-3-Clause" + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1" ], "isOsiApproved": true, "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", + "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", - "referenceNumber": 471, - "name": "ANTLR Software Rights Notice with license fallback", - "licenseId": "ANTLR-PD-fallback", + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", + "referenceNumber": 447, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", "seeAlso": [ - "http://www.antlr2.org/license.html" + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ODC-By-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", + "referenceNumber": 448, + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", + "seeAlso": [ + "https://opendatacommons.org/licenses/by/1.0/" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", + "reference": "https://spdx.org/licenses/Qhull.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", - "referenceNumber": 472, - "name": "copyleft-next 0.3.1", - "licenseId": "copyleft-next-0.3.1", + "detailsUrl": "https://spdx.org/licenses/Qhull.json", + "referenceNumber": 449, + "name": "Qhull License", + "licenseId": "Qhull", "seeAlso": [ - "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" + "https://fedoraproject.org/wiki/Licensing/Qhull" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/GPL-1.0+.html", + "reference": "https://spdx.org/licenses/BSD-1-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", + "referenceNumber": 450, + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "seeAlso": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NCSA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCSA.json", + "referenceNumber": 451, + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "seeAlso": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", + "referenceNumber": 452, + "name": "Academic Free License v1.2", + "licenseId": "AFL-1.2", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/psutils.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psutils.json", + "referenceNumber": 453, + "name": "psutils License", + "licenseId": "psutils", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psutils" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RSCPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSCPL.json", + "referenceNumber": 454, + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", + "seeAlso": [ + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Rdisc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Rdisc.json", + "referenceNumber": 455, + "name": "Rdisc License", + "licenseId": "Rdisc", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFUL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFUL.json", + "referenceNumber": 456, + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Entessa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Entessa.json", + "referenceNumber": 457, + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "seeAlso": [ + "https://opensource.org/licenses/Entessa" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", + "referenceNumber": 458, + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libpng-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", + "referenceNumber": 459, + "name": "PNG Reference Library version 2", + "licenseId": "libpng-2.0", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMPAS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMPAS.json", + "referenceNumber": 460, + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CATOSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", + "referenceNumber": 461, + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/CATOSL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SGI-B-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", + "referenceNumber": 462, + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", + "referenceNumber": 463, + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.51.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", + "referenceNumber": 464, + "name": "Solderpad Hardware License, Version 0.51", + "licenseId": "SHL-0.51", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.51/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", + "referenceNumber": 465, + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0.html", "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", - "referenceNumber": 473, - "name": "GNU General Public License v1.0 or later", - "licenseId": "GPL-1.0+", + "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", + "referenceNumber": 466, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", "seeAlso": [ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" ], "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/wxWindows.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/wxWindows.json", - "referenceNumber": 474, - "name": "wxWindows Library License", - "licenseId": "wxWindows", + "reference": "https://spdx.org/licenses/CPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", + "referenceNumber": 467, + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", "seeAlso": [ - "https://opensource.org/licenses/WXwindows" - ], - "isOsiApproved": true - }, - { - "reference": "https://spdx.org/licenses/LGPL-3.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", - "referenceNumber": 475, - "name": "GNU Lesser General Public License v3.0 only", - "licenseId": "LGPL-3.0", - "seeAlso": [ - "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", - "https://opensource.org/licenses/LGPL-3.0" + "https://opensource.org/licenses/CPL-1.0" ], "isOsiApproved": true, "isFsfLibre": true }, + { + "reference": "https://spdx.org/licenses/EUDatagrid.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", + "referenceNumber": 468, + "name": "EU DataGrid Software License", + "licenseId": "EUDatagrid", + "seeAlso": [ + "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "https://opensource.org/licenses/EUDatagrid" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Wsuipa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", + "referenceNumber": 469, + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", + "referenceNumber": 470, + "name": "BSD 3-Clause No Military License", + "licenseId": "BSD-3-Clause-No-Military-License", + "seeAlso": [ + "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", + "https://github.com/greymass/swift-eosio/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XSkat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XSkat.json", + "referenceNumber": 471, + "name": "XSkat License", + "licenseId": "XSkat", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xinetd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xinetd.json", + "referenceNumber": 472, + "name": "xinetd License", + "licenseId": "xinetd", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPLLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", + "referenceNumber": 473, + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "seeAlso": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", + "referenceNumber": 474, + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/TORQUE-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", + "referenceNumber": 475, + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", + "referenceNumber": 476, + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", + "referenceNumber": 477, + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", + "seeAlso": [ + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", + "referenceNumber": 478, + "name": "CERN Open Hardware Licence v1.2", + "licenseId": "CERN-OHL-1.2", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", + "referenceNumber": 479, + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RSA-MD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", + "referenceNumber": 480, + "name": "RSA Message-Digest License", + "licenseId": "RSA-MD", + "seeAlso": [ + "http://www.faqs.org/rfcs/rfc1321.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", + "referenceNumber": 481, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", + "referenceNumber": 482, + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", + "referenceNumber": 483, + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel.json", + "referenceNumber": 484, + "name": "Intel Open Source License", + "licenseId": "Intel", + "seeAlso": [ + "https://opensource.org/licenses/Intel" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", + "referenceNumber": 485, + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", + "referenceNumber": 486, + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", + "referenceNumber": 487, + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "seeAlso": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", + "referenceNumber": 488, + "name": "GNU Free Documentation License v1.3 only", + "licenseId": "GFDL-1.3-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", + "referenceNumber": 489, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", + "referenceNumber": 490, + "name": "Open LDAP Public License v2.5", + "licenseId": "OLDAP-2.5", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" + ], + "isOsiApproved": false + }, { "reference": "https://spdx.org/licenses/LGPL-2.1.html", "isDeprecatedLicenseId": true, "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", - "referenceNumber": 476, + "referenceNumber": 491, "name": "GNU Lesser General Public License v2.1 only", "licenseId": "LGPL-2.1", "seeAlso": [ @@ -5997,114 +6193,22 @@ "isFsfLibre": true }, { - "reference": "https://spdx.org/licenses/StandardML-NJ.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", - "referenceNumber": 477, - "name": "Standard ML of New Jersey License", - "licenseId": "StandardML-NJ", - "seeAlso": [ - "http://www.smlnj.org//license.html" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/BSD-4-Clause.html", + "reference": "https://spdx.org/licenses/NPOSL-3.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", - "referenceNumber": 478, - "name": "BSD 4-Clause \"Original\" or \"Old\" License", - "licenseId": "BSD-4-Clause", + "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", + "referenceNumber": 492, + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", "seeAlso": [ - "http://directory.fsf.org/wiki/License:BSD_4Clause" - ], - "isOsiApproved": false, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", - "referenceNumber": 479, - "name": "GNU General Public License v2.0 w/Bison exception", - "licenseId": "GPL-2.0-with-bison-exception", - "seeAlso": [ - "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/Apache-2.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", - "referenceNumber": 480, - "name": "Apache License 2.0", - "licenseId": "Apache-2.0", - "seeAlso": [ - "https://www.apache.org/licenses/LICENSE-2.0", - "https://opensource.org/licenses/Apache-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", - "referenceNumber": 481, - "name": "Artistic License 1.0 w/clause 8", - "licenseId": "Artistic-1.0-cl8", - "seeAlso": [ - "https://opensource.org/licenses/Artistic-1.0" + "https://opensource.org/licenses/NOSL3.0" ], "isOsiApproved": true }, - { - "reference": "https://spdx.org/licenses/GPL-2.0.html", - "isDeprecatedLicenseId": true, - "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", - "referenceNumber": 482, - "name": "GNU General Public License v2.0 only", - "licenseId": "GPL-2.0", - "seeAlso": [ - "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "https://opensource.org/licenses/GPL-2.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, - { - "reference": "https://spdx.org/licenses/Intel-ACPI.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", - "referenceNumber": 483, - "name": "Intel ACPI Software License Agreement", - "licenseId": "Intel-ACPI", - "seeAlso": [ - "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" - ], - "isOsiApproved": false - }, - { - "reference": "https://spdx.org/licenses/BSL-1.0.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", - "referenceNumber": 484, - "name": "Boost Software License 1.0", - "licenseId": "BSL-1.0", - "seeAlso": [ - "http://www.boost.org/LICENSE_1_0.txt", - "https://opensource.org/licenses/BSL-1.0" - ], - "isOsiApproved": true, - "isFsfLibre": true - }, { "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json", - "referenceNumber": 485, + "referenceNumber": 493, "name": "Artistic License 1.0 (Perl)", "licenseId": "Artistic-1.0-Perl", "seeAlso": [ @@ -6112,25 +6216,11 @@ ], "isOsiApproved": true }, - { - "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", - "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", - "referenceNumber": 486, - "name": "BSD 2-Clause with views sentence", - "licenseId": "BSD-2-Clause-Views", - "seeAlso": [ - "http://www.freebsd.org/copyright/freebsd-license.html", - "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", - "https://github.com/protegeproject/protege/blob/master/license.txt" - ], - "isOsiApproved": false - }, { "reference": "https://spdx.org/licenses/Interbase-1.0.html", "isDeprecatedLicenseId": false, "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", - "referenceNumber": 487, + "referenceNumber": 494, "name": "Interbase Public License v1.0", "licenseId": "Interbase-1.0", "seeAlso": [ @@ -6139,17 +6229,18 @@ "isOsiApproved": false }, { - "reference": "https://spdx.org/licenses/NPOSL-3.0.html", + "reference": "https://spdx.org/licenses/CAL-1.0.html", "isDeprecatedLicenseId": false, - "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", - "referenceNumber": 488, - "name": "Non-Profit Open Software License 3.0", - "licenseId": "NPOSL-3.0", + "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", + "referenceNumber": 495, + "name": "Cryptographic Autonomy License 1.0", + "licenseId": "CAL-1.0", "seeAlso": [ - "https://opensource.org/licenses/NOSL3.0" + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" ], "isOsiApproved": true } ], - "releaseDate": "2022-05-08" + "releaseDate": "2022-08-12" } \ No newline at end of file From 353fe2d32294235ea74212cfe2ec82fdac7bb5c8 Mon Sep 17 00:00:00 2001 From: apainintheneck Date: Sat, 13 Aug 2022 12:21:14 -0700 Subject: [PATCH 083/122] Update `brew ls` to work when the cellar doesn't exist --- Library/Homebrew/cmd/list.rb | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/Library/Homebrew/cmd/list.rb b/Library/Homebrew/cmd/list.rb index e8e152b4c3..9de67b45eb 100644 --- a/Library/Homebrew/cmd/list.rb +++ b/Library/Homebrew/cmd/list.rb @@ -70,14 +70,6 @@ module Homebrew def list args = list_args.parse - # Unbrewed uses the PREFIX, which will exist - # Things below use the CELLAR, which doesn't until the first formula is installed. - unless HOMEBREW_CELLAR.exist? - raise NoSuchKegError, args.named.first if args.named.present? && !args.cask? - - return - end - if args.full_name? unless args.cask? formula_names = args.no_named? ? Formula.installed : args.named.to_resolved_formulae @@ -112,12 +104,10 @@ module Homebrew if !args.cask? && HOMEBREW_CELLAR.exist? && HOMEBREW_CELLAR.children.any? ohai "Formulae" if $stdout.tty? && !args.formula? safe_system "ls", *ls_args, HOMEBREW_CELLAR + puts if $stdout.tty? && !args.formula? end if !args.formula? && Cask::Caskroom.any_casks_installed? - if $stdout.tty? && !args.cask? - puts - ohai "Casks" - end + ohai "Casks" if $stdout.tty? && !args.cask? safe_system "ls", *ls_args, Cask::Caskroom.path end else From 0cf11f4089a6c5038c8596d6db475afa6ac50e0a Mon Sep 17 00:00:00 2001 From: Lukas Oberhuber Date: Sat, 13 Aug 2022 23:30:20 -1000 Subject: [PATCH 084/122] fix debug-symbols Incorrectly named variable meant existing directory is never removed so new directory can't be copied in. --- Library/Homebrew/mktemp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/mktemp.rb b/Library/Homebrew/mktemp.rb index a691fcecc0..8e6e9b0883 100644 --- a/Library/Homebrew/mktemp.rb +++ b/Library/Homebrew/mktemp.rb @@ -49,7 +49,7 @@ class Mktemp prefix_name = @prefix.tr "@", "AT" @tmpdir = if retain_in_cache? tmp_dir = HOMEBREW_CACHE/"Sources/#{prefix_name}" - chmod_rm_rf(tmpdir) # clear out previous staging directory + chmod_rm_rf(tmp_dir) # clear out previous staging directory tmp_dir.mkpath tmp_dir else From af99dfba003d38ba248fb62267f70789c17f19e4 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Sun, 14 Aug 2022 15:39:20 -0400 Subject: [PATCH 085/122] Refactor `on_system` rubocops for use in casks --- .../rubocops/cask/on_system_conditionals.rb | 52 +++++ Library/Homebrew/rubocops/lines.rb | 207 ++---------------- Library/Homebrew/rubocops/rubocop-cask.rb | 1 + .../shared/on_system_conditionals_helper.rb | 196 +++++++++++++++++ .../cask/on_system_conditionals_spec.rb | 140 ++++++++++++ 5 files changed, 403 insertions(+), 193 deletions(-) create mode 100644 Library/Homebrew/rubocops/cask/on_system_conditionals.rb create mode 100644 Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb create mode 100644 Library/Homebrew/test/rubocops/cask/on_system_conditionals_spec.rb diff --git a/Library/Homebrew/rubocops/cask/on_system_conditionals.rb b/Library/Homebrew/rubocops/cask/on_system_conditionals.rb new file mode 100644 index 0000000000..42c741aa63 --- /dev/null +++ b/Library/Homebrew/rubocops/cask/on_system_conditionals.rb @@ -0,0 +1,52 @@ +# typed: true +# frozen_string_literal: true + +require "forwardable" +require "rubocops/shared/on_system_conditionals_helper" + +module RuboCop + module Cop + module Cask + # This cop makes sure that OS conditionals are consistent. + # + # @example + # # bad + # cask 'foo' do + # if MacOS.version == :high_sierra + # sha256 "..." + # end + # end + # + # # good + # cask 'foo' do + # on_high_sierra do + # sha256 "..." + # end + # end + class OnSystemConditionals < Base + extend Forwardable + extend AutoCorrector + include OnSystemConditionalsHelper + include CaskHelp + + FLIGHT_STANZA_NAMES = [:preflight, :postflight, :uninstall_preflight, :uninstall_postflight].freeze + + def on_cask(cask_block) + @cask_block = cask_block + + toplevel_stanzas.each do |stanza| + next unless FLIGHT_STANZA_NAMES.include? stanza.stanza_name + + audit_on_system_blocks(stanza.stanza_node, stanza.stanza_name) + end + end + + private + + attr_reader :cask_block + + def_delegators :cask_block, :toplevel_stanzas, :cask_body + end + end + end +end diff --git a/Library/Homebrew/rubocops/lines.rb b/Library/Homebrew/rubocops/lines.rb index d8fd97bead..215100829f 100644 --- a/Library/Homebrew/rubocops/lines.rb +++ b/Library/Homebrew/rubocops/lines.rb @@ -3,6 +3,7 @@ require "macos_versions" require "rubocops/extend/formula" +require "rubocops/shared/on_system_conditionals_helper" module RuboCop module Cop @@ -377,104 +378,20 @@ module RuboCop # # @api private class OnSystemConditionals < FormulaCop + include OnSystemConditionalsHelper extend AutoCorrector NO_ON_SYSTEM_METHOD_NAMES = [:install, :post_install].freeze NO_ON_SYSTEM_BLOCK_NAMES = [:service, :test].freeze - ON_ARCH_OPTIONS = [:intel, :arm].freeze - ON_BASE_OS_OPTIONS = [:macos, :linux].freeze - ON_MACOS_VERSION_OPTIONS = MacOSVersions::SYMBOLS.keys.freeze - ALL_SYSTEM_OPTIONS = [*ON_ARCH_OPTIONS, *ON_BASE_OS_OPTIONS, *ON_MACOS_VERSION_OPTIONS, :system].freeze - - MACOS_VERSION_CONDITIONALS = { - "==" => nil, - "<=" => :or_older, - ">=" => :or_newer, - }.freeze - - ON_SYSTEM_CONDITIONALS = [:<, :<=].freeze - - def on_system_method_info(on_system_option) - info = {} - info[:method] = :"on_#{on_system_option}" - info[:if_module], info[:if_method] = if ON_ARCH_OPTIONS.include?(on_system_option) - ["Hardware::CPU", :"#{on_system_option}?"] - elsif ON_BASE_OS_OPTIONS.include?(on_system_option) - ["OS", (on_system_option == :macos) ? :mac? : :linux?] - else - ["MacOS", :version] - end - info[:on_system_string] = "on_#{on_system_option}" - info[:if_string] = if on_system_option == :system - "if OS.linux? || MacOS.version" - else - "if #{info[:if_module]}.#{info[:if_method]}" - end - - info - end - def audit_formula(_node, _class_node, _parent_class_node, body_node) - top_level_nodes_to_check = [] NO_ON_SYSTEM_METHOD_NAMES.each do |formula_method_name| method_node = find_method_def(body_node, formula_method_name) - top_level_nodes_to_check << [formula_method_name, method_node] if method_node + audit_on_system_blocks(method_node, formula_method_name) if method_node end NO_ON_SYSTEM_BLOCK_NAMES.each do |formula_block_name| block_node = find_block(body_node, formula_block_name) - top_level_nodes_to_check << [formula_block_name, block_node] if block_node - end - - ALL_SYSTEM_OPTIONS.each do |on_system_option| - method_info = on_system_method_info(on_system_option) - - top_level_nodes_to_check.each do |top_level_name, top_level_node| - top_level_node_string = if top_level_node.def_type? - "def #{top_level_name}" - else - "#{top_level_name} do" - end - - find_every_method_call_by_name(top_level_node, method_info[:method]).each do |method| - if ON_MACOS_VERSION_OPTIONS.include?(on_system_option) - on_macos_version_method_call(method, on_method: method_info[:method]) do |on_method_parameters| - if on_method_parameters.empty? - method_info[:if_string] = "if MacOS.version == :#{on_system_option}" - else - method_info[:on_system_string] = "#{method_info[:method]} :#{on_method_parameters.first}" - if_condition_operator = MACOS_VERSION_CONDITIONALS.key(on_method_parameters.first) - method_info[:if_string] = "if MacOS.version #{if_condition_operator} :#{on_system_option}" - end - end - elsif method_info[:method] == :on_system - on_system_method_call(method) do |macos_symbol| - base_os, condition = macos_symbol.to_s.split(/_(?=or_)/).map(&:to_sym) - method_info[:on_system_string] = if condition.present? - "on_system :linux, macos: :#{base_os}_#{condition}" - else - "on_system :linux, macos: :#{base_os}" - end - if_condition_operator = MACOS_VERSION_CONDITIONALS.key(condition) - method_info[:if_string] = "if OS.linux? || MacOS.version #{if_condition_operator} :#{base_os}" - end - end - - offending_node(method) - - problem "Don't use `#{method_info[:on_system_string]}` in `#{top_level_node_string}`, " \ - "use `#{method_info[:if_string]}` instead." do |corrector| - block_node = offending_node.parent - next if block_node.type != :block - - # TODO: could fix corrector to handle this but punting for now. - next if block_node.single_line? - - source_range = offending_node.source_range.join(offending_node.parent.loc.begin) - corrector.replace(source_range, method_info[:if_string]) - end - end - end + audit_on_system_blocks(block_node, formula_block_name) if block_node end # Don't restrict OS.mac? or OS.linux? usage in taps; they don't care @@ -483,115 +400,19 @@ module RuboCop # that case. return if formula_tap != "homebrew-core" - ALL_SYSTEM_OPTIONS.each do |on_system_option| - method_info = on_system_method_info(on_system_option) + audit_arch_conditionals(body_node, + allowed_methods: NO_ON_SYSTEM_METHOD_NAMES, + allowed_blocks: NO_ON_SYSTEM_BLOCK_NAMES) - if_nodes_to_check = [] + audit_base_os_conditionals(body_node, + allowed_methods: NO_ON_SYSTEM_METHOD_NAMES, + allowed_blocks: NO_ON_SYSTEM_BLOCK_NAMES) - if ON_ARCH_OPTIONS.include?(on_system_option) - if_arch_node_search(body_node, arch: method_info[:if_method]) do |if_node, else_node| - else_info = if else_node.present? - { - can_autocorrect: true, - on_system_method: (on_system_option == :intel) ? "on_arm" : "on_intel", - node: else_node, - } - end - - if_nodes_to_check << [if_node, else_info] - end - elsif ON_BASE_OS_OPTIONS.include?(on_system_option) - if_base_os_node_search(body_node, base_os: method_info[:if_method]) do |if_node, else_node| - else_info = if else_node.present? - { - can_autocorrect: true, - on_system_method: (on_system_option == :macos) ? "on_linux" : "on_macos", - node: else_node, - } - end - - if_nodes_to_check << [if_node, else_info] - end - else - if_macos_version_node_search(body_node, os_name: on_system_option) do |if_node, operator, else_node| - if operator == :< - method_info[:on_system_string] = "on_system" - elsif operator == :<= - method_info[:on_system_string] = "on_system :linux, macos: :#{on_system_option}_or_older" - elsif operator != :== && MACOS_VERSION_CONDITIONALS.key?(operator.to_s) - method_info[:on_system_string] = "#{method_info[:method]} " \ - ":#{MACOS_VERSION_CONDITIONALS[operator.to_s]}" - end - method_info[:if_string] = "if #{method_info[:if_module]}.#{method_info[:if_method]} #{operator} " \ - ":#{on_system_option}" - if else_node.present? || !MACOS_VERSION_CONDITIONALS.key?(operator.to_s) - else_info = { can_autocorrect: false } - end - - if_nodes_to_check << [if_node, else_info] - end - end - - if_nodes_to_check.each do |if_node, else_info| - # TODO: check to see if it's legal - valid = T.let(false, T::Boolean) - if_node.each_ancestor do |ancestor| - valid_method_names = case ancestor.type - when :def - NO_ON_SYSTEM_METHOD_NAMES - when :block - NO_ON_SYSTEM_BLOCK_NAMES - else - next - end - next unless valid_method_names.include?(ancestor.method_name) - - valid = true - break - end - next if valid - - offending_node(if_node) - - problem "Don't use `#{method_info[:if_string]}`, " \ - "use `#{method_info[:on_system_string]} do` instead." do |corrector| - # TODO: could fix corrector to handle this but punting for now. - next if if_node.unless? - - if else_info.present? - next unless else_info[:can_autocorrect] - - corrector.replace(if_node.source_range, - "#{method_info[:on_system_string]} do\n#{if_node.body.source}\nend\n" \ - "#{else_info[:on_system_method]} do\n#{else_info[:node].source}\nend") - else - corrector.replace(if_node.source_range, - "#{method_info[:on_system_string]} do\n#{if_node.body.source}\nend") - end - end - end - end + audit_macos_version_conditionals(body_node, + allowed_methods: NO_ON_SYSTEM_METHOD_NAMES, + allowed_blocks: NO_ON_SYSTEM_BLOCK_NAMES, + recommend_on_system: true) end - - def_node_matcher :on_macos_version_method_call, <<~PATTERN - (send nil? %on_method (sym ${:or_newer :or_older})?) - PATTERN - - def_node_matcher :on_system_method_call, <<~PATTERN - (send nil? :on_system (sym :linux) (hash (pair (sym :macos) (sym $_)))) - PATTERN - - def_node_search :if_arch_node_search, <<~PATTERN - $(if (send (const (const nil? :Hardware) :CPU) %arch) _ $_) - PATTERN - - def_node_search :if_base_os_node_search, <<~PATTERN - $(if (send (const nil? :OS) %base_os) _ $_) - PATTERN - - def_node_search :if_macos_version_node_search, <<~PATTERN - $(if (send (send (const nil? :MacOS) :version) ${:== :<= :< :>= :> :!=} (sym %os_name)) _ $_) - PATTERN end # This cop checks for other miscellaneous style violations. diff --git a/Library/Homebrew/rubocops/rubocop-cask.rb b/Library/Homebrew/rubocops/rubocop-cask.rb index 673b6a5231..b17c9c4494 100644 --- a/Library/Homebrew/rubocops/rubocop-cask.rb +++ b/Library/Homebrew/rubocops/rubocop-cask.rb @@ -16,6 +16,7 @@ require_relative "cask/mixin/on_url_stanza" require_relative "cask/desc" require_relative "cask/homepage_url_trailing_slash" require_relative "cask/no_dsl_version" +require_relative "cask/on_system_conditionals" require_relative "cask/stanza_order" require_relative "cask/stanza_grouping" require_relative "cask/url_legacy_comma_separators" diff --git a/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb b/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb new file mode 100644 index 0000000000..f8cfafaceb --- /dev/null +++ b/Library/Homebrew/rubocops/shared/on_system_conditionals_helper.rb @@ -0,0 +1,196 @@ +# typed: false +# frozen_string_literal: true + +require "macos_versions" +require "rubocops/shared/helper_functions" + +module RuboCop + module Cop + # This module performs common checks on `on_{system}` blocks in both formulae and casks. + # + # @api private + module OnSystemConditionalsHelper + extend NodePattern::Macros + include HelperFunctions + + ARCH_OPTIONS = [:arm, :intel].freeze + BASE_OS_OPTIONS = [:macos, :linux].freeze + MACOS_VERSION_OPTIONS = MacOSVersions::SYMBOLS.keys.freeze + ON_SYSTEM_OPTIONS = [*ARCH_OPTIONS, *BASE_OS_OPTIONS, *MACOS_VERSION_OPTIONS, :system].freeze + + MACOS_VERSION_CONDITIONALS = { + "==" => nil, + "<=" => :or_older, + ">=" => :or_newer, + }.freeze + + def audit_on_system_blocks(body_node, parent_name) + parent_string = if body_node.def_type? + "def #{parent_name}" + else + "#{parent_name} do" + end + + ON_SYSTEM_OPTIONS.each do |on_system_option| + on_system_method = :"on_#{on_system_option}" + if_statement_string = if ARCH_OPTIONS.include?(on_system_option) + "if Hardware::CPU.#{on_system_option}?" + elsif BASE_OS_OPTIONS.include?(on_system_option) + "if OS.#{(on_system_option == :macos) ? "mac" : "linux"}?" + elsif on_system_option == :system + "if OS.linux? || MacOS.version" + else + "if MacOS.version" + end + + find_every_method_call_by_name(body_node, on_system_method).each do |on_system_node| + if_conditional = "" + if MACOS_VERSION_OPTIONS.include? on_system_option + on_macos_version_method_call(on_system_node, on_method: on_system_method) do |on_method_parameters| + if on_method_parameters.empty? + if_conditional = " == :#{on_system_option}" + else + if_condition_operator = MACOS_VERSION_CONDITIONALS.key(on_method_parameters.first) + if_conditional = " #{if_condition_operator} :#{on_system_option}" + end + end + elsif on_system_option == :system + on_system_method_call(on_system_node) do |macos_symbol| + base_os, condition = macos_symbol.to_s.split(/_(?=or_)/).map(&:to_sym) + if_condition_operator = MACOS_VERSION_CONDITIONALS.key(condition) + if_conditional = " #{if_condition_operator} :#{base_os}" + end + end + + offending_node(on_system_node) + problem "Don't use `#{on_system_node.source}` in `#{parent_string}`, " \ + "use `#{if_statement_string}#{if_conditional}` instead." do |corrector| + block_node = offending_node.parent + next if block_node.type != :block + + # TODO: could fix corrector to handle this but punting for now. + next if block_node.single_line? + + source_range = offending_node.source_range.join(offending_node.parent.loc.begin) + corrector.replace(source_range, "#{if_statement_string}#{if_conditional}") + end + end + end + end + + def audit_arch_conditionals(body_node, allowed_methods: [], allowed_blocks: []) + ARCH_OPTIONS.each do |arch_option| + else_method = (arch_option == :arm) ? :on_intel : :on_arm + if_arch_node_search(body_node, arch: :"#{arch_option}?") do |if_node, else_node| + next if if_node_is_allowed?(if_node, allowed_methods: allowed_methods, allowed_blocks: allowed_blocks) + + if_statement_problem(if_node, "if Hardware::CPU.#{arch_option}?", "on_#{arch_option}", + else_method: else_method, else_node: else_node) + end + end + end + + def audit_base_os_conditionals(body_node, allowed_methods: [], allowed_blocks: []) + BASE_OS_OPTIONS.each do |base_os_option| + os_method, else_method = if base_os_option == :macos + [:mac?, :on_linux] + else + [:linux?, :on_macos] + end + if_base_os_node_search(body_node, base_os: os_method) do |if_node, else_node| + next if if_node_is_allowed?(if_node, allowed_methods: allowed_methods, allowed_blocks: allowed_blocks) + + if_statement_problem(if_node, "if OS.#{os_method}", "on_#{base_os_option}", + else_method: else_method, else_node: else_node) + end + end + end + + def audit_macos_version_conditionals(body_node, allowed_methods: [], allowed_blocks: [], + recommend_on_system: true) + MACOS_VERSION_OPTIONS.each do |macos_version_option| + if_macos_version_node_search(body_node, os_version: macos_version_option) do |if_node, operator, else_node| + next if if_node_is_allowed?(if_node, allowed_methods: allowed_methods, allowed_blocks: allowed_blocks) + + autocorrect = else_node.blank? && MACOS_VERSION_CONDITIONALS.key?(operator.to_s) + on_system_method_string = if recommend_on_system && operator == :< + "on_system" + elsif recommend_on_system && operator == :<= + "on_system :linux, macos: :#{macos_version_option}_or_older" + elsif operator != :== && MACOS_VERSION_CONDITIONALS.key?(operator.to_s) + "on_#{macos_version_option} :#{MACOS_VERSION_CONDITIONALS[operator.to_s]}" + else + "on_#{macos_version_option}" + end + + if_statement_problem(if_node, "if MacOS.version #{operator} :#{macos_version_option}", + on_system_method_string, autocorrect: autocorrect) + end + end + end + + private + + def if_statement_problem(if_node, if_statement_string, on_system_method_string, + else_method: nil, else_node: nil, autocorrect: true) + offending_node(if_node) + problem "Don't use `#{if_statement_string}`, " \ + "use `#{on_system_method_string} do` instead." do |corrector| + next unless autocorrect + # TODO: could fix corrector to handle this but punting for now. + next if if_node.unless? + + if else_method.present? && else_node.present? + corrector.replace(if_node.source_range, + "#{on_system_method_string} do\n#{if_node.body.source}\nend\n" \ + "#{else_method} do\n#{else_node.source}\nend") + else + corrector.replace(if_node.source_range, "#{on_system_method_string} do\n#{if_node.body.source}\nend") + end + end + end + + def if_node_is_allowed?(if_node, allowed_methods: [], allowed_blocks: []) + # TODO: check to see if it's legal + valid = false + if_node.each_ancestor do |ancestor| + valid_method_names = case ancestor.type + when :def + allowed_methods + when :block + allowed_blocks + else + next + end + next unless valid_method_names.include?(ancestor.method_name) + + valid = true + break + end + return true if valid + + false + end + + def_node_matcher :on_macos_version_method_call, <<~PATTERN + (send nil? %on_method (sym ${:or_newer :or_older})?) + PATTERN + + def_node_matcher :on_system_method_call, <<~PATTERN + (send nil? :on_system (sym :linux) (hash (pair (sym :macos) (sym $_)))) + PATTERN + + def_node_search :if_arch_node_search, <<~PATTERN + $(if (send (const (const nil? :Hardware) :CPU) %arch) _ $_) + PATTERN + + def_node_search :if_base_os_node_search, <<~PATTERN + $(if (send (const nil? :OS) %base_os) _ $_) + PATTERN + + def_node_search :if_macos_version_node_search, <<~PATTERN + $(if (send (send (const nil? :MacOS) :version) ${:== :<= :< :>= :> :!=} (sym %os_version)) _ $_) + PATTERN + end + end +end diff --git a/Library/Homebrew/test/rubocops/cask/on_system_conditionals_spec.rb b/Library/Homebrew/test/rubocops/cask/on_system_conditionals_spec.rb new file mode 100644 index 0000000000..c1c7b1aa33 --- /dev/null +++ b/Library/Homebrew/test/rubocops/cask/on_system_conditionals_spec.rb @@ -0,0 +1,140 @@ +# typed: false +# frozen_string_literal: true + +require "rubocops/rubocop-cask" +require "test/rubocops/cask/shared_examples/cask_cop" + +describe RuboCop::Cop::Cask::OnSystemConditionals do + include CaskCop + + subject(:cop) { described_class.new } + + context "when auditing `postflight` stanzas" do + context "when there are no on_system blocks" do + let(:source) do + <<-CASK.undent + postflight do + foobar + end + CASK + end + + include_examples "does not report any offenses" + end + + context "when there is an `on_intel` block" do + let(:source) do + <<-CASK.undent + cask 'foo' do + postflight do + on_intel do + foobar + end + end + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + postflight do + if Hardware::CPU.intel? + foobar + end + end + end + CASK + end + let(:expected_offenses) do + [{ + message: "Don't use `on_intel` in `postflight do`, use `if Hardware::CPU.intel?` instead.", + severity: :convention, + line: 3, + column: 4, + source: "on_intel", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there is an `on_monterey` block" do + let(:source) do + <<-CASK.undent + cask 'foo' do + postflight do + on_monterey do + foobar + end + end + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + postflight do + if MacOS.version == :monterey + foobar + end + end + end + CASK + end + let(:expected_offenses) do + [{ + message: "Don't use `on_monterey` in `postflight do`, use `if MacOS.version == :monterey` instead.", + severity: :convention, + line: 3, + column: 4, + source: "on_monterey", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + + context "when there is an `on_monterey :or_older` block" do + let(:source) do + <<-CASK.undent + cask 'foo' do + postflight do + on_monterey :or_older do + foobar + end + end + end + CASK + end + let(:correct_source) do + <<-CASK.undent + cask 'foo' do + postflight do + if MacOS.version <= :monterey + foobar + end + end + end + CASK + end + let(:expected_offenses) do + [{ + message: "Don't use `on_monterey :or_older` in `postflight do`, " \ + "use `if MacOS.version <= :monterey` instead.", + severity: :convention, + line: 3, + column: 4, + source: "on_monterey :or_older", + }] + end + + include_examples "reports offenses" + + include_examples "autocorrects source" + end + end +end From 8064a39c18d4425a5f1c1999bbea5359414e45fc Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Mon, 15 Aug 2022 18:18:21 +0800 Subject: [PATCH 086/122] Prefer newer versions of Python Some formulae declare multiple Python dependencies, and they can appear in any order in the `deps` array. Let's make sure to prefer the newest one when adding their `libexec/"bin"` directory to `PATH`. --- Library/Homebrew/extend/ENV/super.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index 2e996d46db..bc2d51121d 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -125,7 +125,10 @@ module Superenv sig { returns(T::Array[Pathname]) } def homebrew_extra_paths + # Reverse sort by version so that we prefer the newest when there are multiple. deps.select { |d| d.name.match? Version.formula_optionally_versioned_regex(:python) } + .sort_by(&:version) + .reverse .map { |d| d.opt_libexec/"bin" } end alias generic_homebrew_extra_paths homebrew_extra_paths From a1c1bf73ec6002c752425c9e738bd493b0de2985 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Mon, 15 Aug 2022 18:27:32 +0800 Subject: [PATCH 087/122] dev-cmd/test: set `RUST_BACKTRACE` when retrying Occasionally, a new version of Rust will cause failures in dependents. See, for example, Homebrew/homebrew-core#107818. This change will allow us to get a fuller backtrace in CI, which will also make it easier to submit bug reports upstream. Without this change, recovering a full backtrace requires installing the new version of Rust and rebuilding the failing formula from source. Both these steps can be skipped if we set `RUST_BACKTRACE` when retrying a failing test. --- Library/Homebrew/dev-cmd/test.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/Library/Homebrew/dev-cmd/test.rb b/Library/Homebrew/dev-cmd/test.rb index a03927cd48..042da3cbd1 100644 --- a/Library/Homebrew/dev-cmd/test.rb +++ b/Library/Homebrew/dev-cmd/test.rb @@ -119,6 +119,7 @@ module Homebrew if args.retry? && @test_failed.add?(f) oh1 "Testing #{f.full_name} (again)" f.clear_cache + ENV["RUST_BACKTRACE"] = "full" true else Homebrew.failed = true From a208ea9c9237daa66ebef4f2d666a715fca36e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:44:45 -0700 Subject: [PATCH 088/122] info: highlight package name --- Library/Homebrew/cask/cmd/info.rb | 2 +- Library/Homebrew/cmd/info.rb | 2 +- Library/Homebrew/utils.rb | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/cask/cmd/info.rb b/Library/Homebrew/cask/cmd/info.rb index c5d4d9a410..343390a4b1 100644 --- a/Library/Homebrew/cask/cmd/info.rb +++ b/Library/Homebrew/cask/cmd/info.rb @@ -79,7 +79,7 @@ module Cask end def self.title_info(cask) - title = "#{cask.token}: #{cask.version}" + title = "#{oh1_title(cask.token)}: #{cask.version}" title += " (auto_updates)" if cask.auto_updates title end diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index 4f6d706567..ba91a20fd0 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -274,7 +274,7 @@ module Homebrew attrs << "pinned at #{f.pinned_version}" if f.pinned? attrs << "keg-only" if f.keg_only? - puts "#{f.full_name}: #{specs * ", "}#{" [#{attrs * ", "}]" unless attrs.empty?}" + puts "#{oh1_title(f.full_name)}: #{specs * ", "}#{" [#{attrs * ", "}]" unless attrs.empty?}" puts f.desc if f.desc puts Formatter.url(f.homepage) if f.homepage diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 9104ba1b37..c521ad2891 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -125,7 +125,7 @@ module Kernel puts sput unless sput.empty? end - def oh1(title, truncate: :auto) + def oh1_title(title, truncate: :auto) verbose = if respond_to?(:verbose?) verbose? else @@ -133,7 +133,11 @@ module Kernel end title = Tty.truncate(title) if $stdout.tty? && !verbose && truncate == :auto - puts Formatter.headline(title, color: :green) + Formatter.headline(title, color: :green) + end + + def oh1(title, truncate: :auto) + puts oh1_title(title, truncate: truncate) end # Print a message prefixed with "Warning" (do this rarely). From 783fcfb97c6d11e29754e76ac106b93c50b7d0e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:52:32 -0700 Subject: [PATCH 089/122] Fix tests --- Library/Homebrew/test/cask/cmd/info_spec.rb | 16 ++++++++-------- Library/Homebrew/test/missing_formula_spec.rb | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/test/cask/cmd/info_spec.rb b/Library/Homebrew/test/cask/cmd/info_spec.rb index c127ff6752..34e64cf570 100644 --- a/Library/Homebrew/test/cask/cmd/info_spec.rb +++ b/Library/Homebrew/test/cask/cmd/info_spec.rb @@ -8,7 +8,7 @@ describe Cask::Cmd::Info, :cask do expect { described_class.run("local-transmission") }.to output(<<~EOS).to_stdout - local-transmission: 2.61 + ==> local-transmission: 2.61 https://transmissionbt.com/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/local-transmission.rb @@ -25,7 +25,7 @@ describe Cask::Cmd::Info, :cask do expect { described_class.run("with-auto-updates") }.to output(<<~EOS).to_stdout - with-auto-updates: 1.0 (auto_updates) + ==> with-auto-updates: 1.0 (auto_updates) https://brew.sh/autoupdates Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/with-auto-updates.rb @@ -41,7 +41,7 @@ describe Cask::Cmd::Info, :cask do describe "given multiple Casks" do let(:expected_output) { <<~EOS - local-caffeine: 1.2.3 + ==> local-caffeine: 1.2.3 https://brew.sh/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/local-caffeine.rb @@ -52,7 +52,7 @@ describe Cask::Cmd::Info, :cask do ==> Artifacts Caffeine.app (App) - local-transmission: 2.61 + ==> local-transmission: 2.61 https://transmissionbt.com/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/local-transmission.rb @@ -76,7 +76,7 @@ describe Cask::Cmd::Info, :cask do expect { described_class.run("with-caveats") }.to output(<<~EOS).to_stdout - with-caveats: 1.2.3 + ==> with-caveats: 1.2.3 https://brew.sh/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/with-caveats.rb @@ -103,7 +103,7 @@ describe Cask::Cmd::Info, :cask do expect { described_class.run("with-conditional-caveats") }.to output(<<~EOS).to_stdout - with-conditional-caveats: 1.2.3 + ==> with-conditional-caveats: 1.2.3 https://brew.sh/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/with-conditional-caveats.rb @@ -120,7 +120,7 @@ describe Cask::Cmd::Info, :cask do expect { described_class.run("with-languages") }.to output(<<~EOS).to_stdout - with-languages: 1.2.3 + ==> with-languages: 1.2.3 https://brew.sh/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/with-languages.rb @@ -139,7 +139,7 @@ describe Cask::Cmd::Info, :cask do expect { described_class.run("without-languages") }.to output(<<~EOS).to_stdout - without-languages: 1.2.3 + ==> without-languages: 1.2.3 https://brew.sh/ Not installed From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/without-languages.rb diff --git a/Library/Homebrew/test/missing_formula_spec.rb b/Library/Homebrew/test/missing_formula_spec.rb index 6ccfd39fc7..cd95bc393e 100644 --- a/Library/Homebrew/test/missing_formula_spec.rb +++ b/Library/Homebrew/test/missing_formula_spec.rb @@ -103,7 +103,7 @@ describe Homebrew::MissingFormula do let(:formula) { "local-caffeine" } let(:show_info) { true } - it { is_expected.to match(/Found a cask named "local-caffeine" instead.\n\nlocal-caffeine: 1.2.3\n/) } + it { is_expected.to match(/Found a cask named "local-caffeine" instead.\n\n==> local-caffeine: 1.2.3\n/) } end context "with a formula name that is not a cask" do From 2de6958a36a4ef3172e2269a5ce11f15e94e57e9 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Thu, 11 Aug 2022 09:35:02 +0200 Subject: [PATCH 090/122] build_environment: add proper types to dump() and fix inreplace error --- Library/Homebrew/build_environment.rb | 7 ++++--- Library/Homebrew/cmd/--env.rb | 2 +- Library/Homebrew/exceptions.rb | 13 +++++++++++++ Library/Homebrew/formula.rb | 2 +- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/build_environment.rb b/Library/Homebrew/build_environment.rb index 2392b98d5c..d63604faa9 100644 --- a/Library/Homebrew/build_environment.rb +++ b/Library/Homebrew/build_environment.rb @@ -55,22 +55,23 @@ class BuildEnvironment ].freeze private_constant :KEYS - sig { params(env: T.untyped).returns(T::Array[String]) } + sig { params(env: T::Hash[String, T.nilable(T.any(String, Pathname))]).returns(T::Array[String]) } def self.keys(env) KEYS & env.keys end - sig { params(env: T.untyped, f: IO).void } + sig { params(env: T::Hash[String, T.nilable(T.any(String, Pathname))], f: IO).void } def self.dump(env, f = $stdout) keys = self.keys(env) keys -= %w[CC CXX OBJC OBJCXX] if env["CC"] == env["HOMEBREW_CC"] keys.each do |key| value = env.fetch(key) + s = +"#{key}: #{value}" case key when "CC", "CXX", "LD" - s << " => #{Pathname.new(value).realpath}" if File.symlink?(value) + s << " => #{Pathname.new(value).realpath}" if value.present? && File.symlink?(value) end s.freeze f.puts s diff --git a/Library/Homebrew/cmd/--env.rb b/Library/Homebrew/cmd/--env.rb index f9c12119d9..a442e6ad4b 100644 --- a/Library/Homebrew/cmd/--env.rb +++ b/Library/Homebrew/cmd/--env.rb @@ -51,7 +51,7 @@ module Homebrew if shell.nil? BuildEnvironment.dump ENV else - BuildEnvironment.keys(ENV).each do |key| + BuildEnvironment.keys(ENV.to_h).each do |key| puts Utils::Shell.export_value(key, ENV.fetch(key), shell) end end diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 6f83563226..4641684b08 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -466,9 +466,19 @@ end # Raised when an error occurs during a formula build. class BuildError < RuntimeError + extend T::Sig + attr_reader :cmd, :args, :env attr_accessor :formula, :options + sig { + params( + formula: T.nilable(Formula), + cmd: T.any(String, Pathname), + args: T::Array[T.any(String, Pathname, Integer)], + env: T::Hash[String, T.untyped], + ).void + } def initialize(formula, cmd, args, env) @formula = formula @cmd = cmd @@ -478,10 +488,12 @@ class BuildError < RuntimeError super "Failed executing: #{cmd} #{pretty_args}".strip end + sig { returns(T::Array[T.untyped]) } def issues @issues ||= fetch_issues end + sig { returns(T::Array[T.untyped]) } def fetch_issues GitHub.issues_for_formula(formula.name, tap: formula.tap, state: "open") rescue GitHub::API::RateLimitExceededError => e @@ -489,6 +501,7 @@ class BuildError < RuntimeError [] end + sig { params(verbose: T::Boolean).void } def dump(verbose: false) puts diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 44d7190ff3..be6c3b6b34 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2219,7 +2219,7 @@ class Formula def inreplace(paths, before = nil, after = nil, audit_result = true) # rubocop:disable Style/OptionalBooleanParameter super(paths, before, after, audit_result) rescue Utils::Inreplace::Error - raise BuildError.new(self, "inreplace", paths, nil) + raise BuildError.new(self, "inreplace", paths, {}) end protected From 686e02b7ce83b3290296953baa968c8025c70f19 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Tue, 16 Aug 2022 00:48:24 -0400 Subject: [PATCH 091/122] Add `arm:` and `intel:` arguments to cask `sha256` stanza --- Library/Homebrew/cask/dsl.rb | 9 +++-- Library/Homebrew/test/cask/cask_spec.rb | 36 +++++++++++++++++-- Library/Homebrew/test/cask/dsl_spec.rb | 28 +++++++++++++++ .../fixtures/cask/Casks/sha256-arch.rb | 12 +++++++ 4 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 Library/Homebrew/test/support/fixtures/cask/Casks/sha256-arch.rb diff --git a/Library/Homebrew/cask/dsl.rb b/Library/Homebrew/cask/dsl.rb index 4499f1bffc..15402ae5ea 100644 --- a/Library/Homebrew/cask/dsl.rb +++ b/Library/Homebrew/cask/dsl.rb @@ -230,8 +230,13 @@ module Cask end # @api public - def sha256(arg = nil) - set_unique_stanza(:sha256, arg.nil?) do + def sha256(arg = nil, arm: nil, intel: nil) + should_return = arg.blank? && arm.blank? && intel.blank? + + set_unique_stanza(:sha256, should_return) do + @on_system_blocks_exist = true if arm.present? || intel.present? + + arg ||= on_arch_conditional(arm: arm, intel: intel) case arg when :no_check arg diff --git a/Library/Homebrew/test/cask/cask_spec.rb b/Library/Homebrew/test/cask/cask_spec.rb index 5b912ae3ca..7ee9b84115 100644 --- a/Library/Homebrew/test/cask/cask_spec.rb +++ b/Library/Homebrew/test/cask/cask_spec.rb @@ -214,7 +214,7 @@ describe Cask::Cask, :cask do describe "#to_hash_with_variations" do let!(:original_macos_version) { MacOS.full_version.to_s } - let(:expected_variations) { + let(:expected_versions_variations) { <<~JSON { "arm64_big_sur": { @@ -243,6 +243,28 @@ describe Cask::Cask, :cask do } JSON } + let(:expected_sha256_variations) { + <<~JSON + { + "monterey": { + "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip", + "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b" + }, + "big_sur": { + "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip", + "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b" + }, + "catalina": { + "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip", + "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b" + }, + "mojave": { + "url": "file://#{TEST_FIXTURE_DIR}/cask/caffeine-intel.zip", + "sha256": "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b" + } + } + JSON + } before do # Use a more limited symbols list to shorten the variations hash @@ -263,12 +285,20 @@ describe Cask::Cask, :cask do MacOS.full_version = original_macos_version end - it "returns the correct variations hash" do + it "returns the correct variations hash for a cask with multiple versions" do c = Cask::CaskLoader.load("multiple-versions") h = c.to_hash_with_variations expect(h).to be_a(Hash) - expect(JSON.pretty_generate(h["variations"])).to eq expected_variations.strip + expect(JSON.pretty_generate(h["variations"])).to eq expected_versions_variations.strip + end + + it "returns the correct variations hash for a cask different sha256s on each arch" do + c = Cask::CaskLoader.load("sha256-arch") + h = c.to_hash_with_variations + + expect(h).to be_a(Hash) + expect(JSON.pretty_generate(h["variations"])).to eq expected_sha256_variations.strip end end end diff --git a/Library/Homebrew/test/cask/dsl_spec.rb b/Library/Homebrew/test/cask/dsl_spec.rb index 6572836ace..7c6808c49b 100644 --- a/Library/Homebrew/test/cask/dsl_spec.rb +++ b/Library/Homebrew/test/cask/dsl_spec.rb @@ -126,6 +126,34 @@ describe Cask::DSL, :cask do expect(cask.sha256).to eq("imasha2") end + + context "with a different arm and intel checksum" do + let(:cask) do + Cask::Cask.new("checksum-cask") do + sha256 arm: "imasha2arm", intel: "imasha2intel" + end + end + + context "when running on arm" do + before do + allow(Hardware::CPU).to receive(:type).and_return(:arm) + end + + it "stores only the arm checksum" do + expect(cask.sha256).to eq("imasha2arm") + end + end + + context "when running on intel" do + before do + allow(Hardware::CPU).to receive(:type).and_return(:intel) + end + + it "stores only the intel checksum" do + expect(cask.sha256).to eq("imasha2intel") + end + end + end end describe "language stanza" do diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/sha256-arch.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/sha256-arch.rb new file mode 100644 index 0000000000..1e109bf48e --- /dev/null +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/sha256-arch.rb @@ -0,0 +1,12 @@ +cask "sha256-arch" do + arch arm: "arm", intel: "intel" + + version "1.2.3" + sha256 arm: "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94", + intel: "8c62a2b791cf5f0da6066a0a4b6e85f62949cd60975da062df44adf887f4370b" + + url "file://#{TEST_FIXTURE_DIR}/cask/caffeine-#{arch}.zip" + homepage "https://brew.sh/" + + app "Caffeine.app" +end From 59692b5bf4410436eec5bddc3c3769a67836496a Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 16 Aug 2022 08:35:33 +0100 Subject: [PATCH 092/122] service: provide formula accessor. Use `f` because it's generally recognised as a formula and this shouldn't be widely needed/used. --- Library/Homebrew/service.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Library/Homebrew/service.rb b/Library/Homebrew/service.rb index 3ef98c0792..87c7f54693 100644 --- a/Library/Homebrew/service.rb +++ b/Library/Homebrew/service.rb @@ -28,6 +28,11 @@ module Homebrew @service_block = block end + sig { returns(Formula) } + def f + @formula + end + sig { params(command: T.nilable(T.any(T::Array[String], String, Pathname))).returns(T.nilable(Array)) } def run(command = nil) case T.unsafe(command) From ca65777e7053e419432257bbdf08c211dba50635 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Tue, 16 Aug 2022 10:01:35 +0200 Subject: [PATCH 093/122] cask/audit: improve wording Co-authored-by: Mike McQuaid --- Library/Homebrew/cask/audit.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index d8f703710d..98944e506d 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -26,7 +26,7 @@ module Cask token_conflicts: nil, online: nil, strict: nil, signing: nil, new_cask: nil) - # `new_cask` implies `online`, `token_conflicts`, `strict` and signing + # `new_cask` implies `online`, `token_conflicts`, `strict` and `signing` online = new_cask if online.nil? strict = new_cask if strict.nil? signing = new_cask if signing.nil? From 27e31c7f18bbcd7a12f0c786d56592c3dba020b5 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Tue, 16 Aug 2022 11:04:59 -0400 Subject: [PATCH 094/122] Check for `nil?` instead of `blank?` in cask DSLs --- Library/Homebrew/cask/dsl.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/cask/dsl.rb b/Library/Homebrew/cask/dsl.rb index 15402ae5ea..fc01a79f90 100644 --- a/Library/Homebrew/cask/dsl.rb +++ b/Library/Homebrew/cask/dsl.rb @@ -231,7 +231,7 @@ module Cask # @api public def sha256(arg = nil, arm: nil, intel: nil) - should_return = arg.blank? && arm.blank? && intel.blank? + should_return = arg.nil? && arm.nil? && intel.nil? set_unique_stanza(:sha256, should_return) do @on_system_blocks_exist = true if arm.present? || intel.present? @@ -250,7 +250,7 @@ module Cask # @api public def arch(arm: nil, intel: nil) - should_return = arm.blank? && intel.blank? + should_return = arm.nil? && intel.nil? set_unique_stanza(:arch, should_return) do @on_system_blocks_exist = true From f7b32abfa384c55d9175af99778e675a689be9de Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Wed, 17 Aug 2022 09:56:45 +0200 Subject: [PATCH 095/122] Cask: fix signing audit checking all artifacts --- Library/Homebrew/cask/audit.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index 98944e506d..7880c2fb9c 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -571,7 +571,7 @@ module Cask Dir.mktmpdir do |tmpdir| tmpdir = Pathname(tmpdir) primary_container.extract_nestedly(to: tmpdir, basename: downloaded_path.basename, verbose: false) - cask.artifacts.each do |artifact| + artifacts.each do |artifact| result = system_command("codesign", args: [ "--verify", tmpdir/artifact.source.basename, From b13f6c7c40d6a2297e8b2a6e5e65e27cc15a31a0 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Wed, 17 Aug 2022 15:49:04 +0200 Subject: [PATCH 096/122] Cask: fix signing audit using unexpected pkg method --- Library/Homebrew/cask/audit.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index 7880c2fb9c..677af6e38c 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -572,10 +572,15 @@ module Cask tmpdir = Pathname(tmpdir) primary_container.extract_nestedly(to: tmpdir, basename: downloaded_path.basename, verbose: false) artifacts.each do |artifact| - result = system_command("codesign", args: [ - "--verify", - tmpdir/artifact.source.basename, - ], print_stderr: false) + path = case artifact + when Artifact::Moved + tmpdir/artifact.source.basename + when Artifact::Pkg + artifact.path + end + next unless path.exist? + + result = system_command("codesign", args: ["--verify", path], print_stderr: false) add_warning result.merged_output unless result.success? end end From 18722901eeceff0b26c34a257a493ee1bfb78a70 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Thu, 18 Aug 2022 15:27:23 +0800 Subject: [PATCH 097/122] formula_auditor: create a versioned formula dependent conflict allowlist We have an audit that checks each formula's dependency tree for multiple versions of the same software. We have an allowlist that allows us to ignore this audit, but this allowlist requires each formula with a conflict in its dependency tree to be listed there. Here, I propose the reverse: if formula `foo` appears in the `versioned_formula_dependent_conflicts_allowlist`, then all its dependents will not fail the versioned dependencies conflict because of a conflict with formula `foo`. I'd like to do this in the case of `python`, where I think the versioned dependencies conflict check hurts us more than helps us. Versioned dependency conflicts are most problematic in the case of libraries with the same install name but incompatible ABIs. This is almost never a problem with Python: almost no formulae link with the Python framework on macOS (in part due to one of our audits that disallows Python framework linkage in Python modules). Moreover, the various Python frameworks that we ship have the version in the install name. The above _might_ be a problem on Linux, since we allow unrestricted linkage with `libpython`. However, we don't even check versioned conflicts on Linux, so we aren't as concerned about this in the first place. This is also a lot more convenient than adding the dependents of some Python formula one by one as they acquire conflicts due to changes in other formulae. I've also amended `tap_auditor` to allow the use of formula aliases in an allowlist, to allow us to add `python` to this allowlist instead of each individual versioned Python formula. See also discussion at Homebrew/homebrew-core#108307. --- Library/Homebrew/formula_auditor.rb | 4 ++++ Library/Homebrew/tap_auditor.rb | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index bb6507fefa..a08bb73d26 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -344,6 +344,10 @@ module Homebrew recursive_runtime_formulae.each do |f| name = f.name unversioned_name, = name.split("@") + # Allow use of the full versioned name (e.g. `python@3.99`) or an unversioned alias (`python`). + next if formula.tap&.audit_exception :versioned_formula_dependent_conflicts_allowlist, name + next if formula.tap&.audit_exception :versioned_formula_dependent_conflicts_allowlist, unversioned_name + version_hash[unversioned_name] ||= Set.new version_hash[unversioned_name] << name next if version_hash[unversioned_name].length < 2 diff --git a/Library/Homebrew/tap_auditor.rb b/Library/Homebrew/tap_auditor.rb index d946a12e27..16bd6e1444 100644 --- a/Library/Homebrew/tap_auditor.rb +++ b/Library/Homebrew/tap_auditor.rb @@ -8,8 +8,8 @@ module Homebrew class TapAuditor extend T::Sig - attr_reader :name, :path, :formula_names, :cask_tokens, :tap_audit_exceptions, :tap_style_exceptions, - :tap_pypi_formula_mappings, :problems + attr_reader :name, :path, :formula_names, :formula_aliases, :cask_tokens, + :tap_audit_exceptions, :tap_style_exceptions, :tap_pypi_formula_mappings, :problems sig { params(tap: Tap, strict: T.nilable(T::Boolean)).void } def initialize(tap, strict:) @@ -21,6 +21,7 @@ module Homebrew @tap_pypi_formula_mappings = tap.pypi_formula_mappings @problems = [] + @formula_aliases = tap.aliases @formula_names = tap.formula_names.map do |formula_name| formula_name.split("/").last end @@ -68,7 +69,9 @@ module Homebrew list = list.keys if list.is_a? Hash invalid_formulae_casks = list.select do |formula_or_cask_name| - @formula_names.exclude?(formula_or_cask_name) && @cask_tokens.exclude?("#{@name}/#{formula_or_cask_name}") + formula_names.exclude?(formula_or_cask_name) && + formula_aliases.exclude?(formula_or_cask_name) && + cask_tokens.exclude?("#{@name}/#{formula_or_cask_name}") end return if invalid_formulae_casks.empty? From 7384bd2b3fb2ac56f2908452f9a46a782e7cb956 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Thu, 18 Aug 2022 21:25:17 +0800 Subject: [PATCH 098/122] cleanup: use `cleanup_path` more consistently MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `cleanup_path` already handles the dry-run logic, and also includes those paths in the summary of space freed by `brew cleanup`. Before this change: ❯ brew cleanup --dry-run Would remove: /Users/carlocab/Library/Caches/Homebrew/bootsnap (2,401 files, 41.9MB) After this change: ❯ brew cleanup --dry-run Would remove: /Users/carlocab/Library/Caches/Homebrew/bootsnap (2,401 files, 41.9MB) ==> This operation would free approximately 41.9MB of disk space. --- Library/Homebrew/cleanup.rb | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/cleanup.rb b/Library/Homebrew/cleanup.rb index 07e1438c84..72b325cb9e 100644 --- a/Library/Homebrew/cleanup.rb +++ b/Library/Homebrew/cleanup.rb @@ -428,7 +428,6 @@ module Homebrew next if !use_system_ruby && portable_ruby_latest_version == path.basename.to_s portable_rubies_to_remove << path - puts "Would remove: #{path} (#{path.abv})" if dry_run? end return if portable_rubies_to_remove.empty? @@ -440,20 +439,16 @@ module Homebrew puts Utils.popen_read("git", "-C", HOMEBREW_REPOSITORY, "clean", "-ffqx", bundler_path).chomp end - return if dry_run? - - FileUtils.rm_rf portable_rubies_to_remove + portable_rubies_to_remove.each do |portable_ruby| + cleanup_path(portable_ruby) { portable_ruby.rmtree } + end end def cleanup_bootsnap bootsnap = cache/"bootsnap" return unless bootsnap.exist? - if dry_run? - puts "Would remove: #{bootsnap} (#{bootsnap.abv})" - else - FileUtils.rm_rf bootsnap - end + cleanup_path(bootsnap) { bootsnap.rmtree } end def cleanup_cache_db(rack = nil) From 1075bbd895205f0086773728c0ca9a42604744ec Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Thu, 18 Aug 2022 12:44:33 -0400 Subject: [PATCH 099/122] Fix multi-arch cask `sha256` updates --- Library/Homebrew/dev-cmd/bump-cask-pr.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump-cask-pr.rb b/Library/Homebrew/dev-cmd/bump-cask-pr.rb index a123af9da0..57a6a707e3 100644 --- a/Library/Homebrew/dev-cmd/bump-cask-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-cask-pr.rb @@ -138,13 +138,13 @@ module Homebrew replacement_pairs << fetch_cask(tmp_contents, config: lang_config) end - # TODO: Use SimulateSystem once all casks use on_system blocks - if tmp_contents.include?("Hardware::CPU.intel?") - other_intel = !Hardware::CPU.intel? - Homebrew::SimulateSystem.arch = other_intel ? :intel : :arm - other_contents = tmp_contents.gsub("Hardware::CPU.intel?", other_intel.to_s) - other_cask = Cask::CaskLoader.load(other_contents) + # TODO: remove the `Hardware::CPU.intel?` substitution once no casks use the conditional + other_intel = !Hardware::CPU.intel? + Homebrew::SimulateSystem.arch = other_intel ? :intel : :arm + other_contents = tmp_contents.gsub("Hardware::CPU.intel?", other_intel.to_s) + other_cask = Cask::CaskLoader.load(other_contents) + if other_cask.url.to_s != tmp_cask.url.to_s if other_cask.sha256 != :no_check && other_cask.language.blank? replacement_pairs << fetch_cask(other_contents) end @@ -153,9 +153,9 @@ module Homebrew lang_config = other_cask.config.merge(Cask::Config.new(explicit: { languages: [language] })) replacement_pairs << fetch_cask(other_contents, config: lang_config) end - - Homebrew::SimulateSystem.clear end + + Homebrew::SimulateSystem.clear end end @@ -163,8 +163,8 @@ module Homebrew hash_regex = (old_hash == :no_check) ? ":no_check" : "[\"']#{Regexp.escape(old_hash.to_s)}[\"']" replacement_pairs << [ - /sha256\s+#{hash_regex}/m, - "sha256 #{(new_hash == :no_check) ? ":no_check" : "\"#{new_hash}\""}", + /#{hash_regex}/m, + ((new_hash == :no_check) ? ":no_check" : "\"#{new_hash}\"").to_s, ] end From b7eebfaded5dfc07f4f5e6225335ef6c409d4de4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Aug 2022 18:07:20 +0000 Subject: [PATCH 100/122] build(deps): bump minitest from 5.16.2 to 5.16.3 in /Library/Homebrew Bumps [minitest](https://github.com/seattlerb/minitest) from 5.16.2 to 5.16.3. - [Release notes](https://github.com/seattlerb/minitest/releases) - [Changelog](https://github.com/minitest/minitest/blob/master/History.rdoc) - [Commits](https://github.com/seattlerb/minitest/compare/v5.16.2...v5.16.3) --- updated-dependencies: - dependency-name: minitest dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index 8494e8cbc8..f427c61a66 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -57,7 +57,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) mini_portile2 (2.8.0) - minitest (5.16.2) + minitest (5.16.3) msgpack (1.5.4) mustache (1.1.1) net-http-digest_auth (1.4.1) From 4834b718b68a24a8780f83e2673aeaace675304d Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Thu, 18 Aug 2022 18:10:03 +0000 Subject: [PATCH 101/122] brew vendor-gems: commit updates. --- Library/Homebrew/vendor/bundle/bundler/setup.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index f29c2ff69b..128eed6943 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -5,7 +5,7 @@ ruby_version = RbConfig::CONFIG["ruby_version"] path = File.expand_path('..', __FILE__) $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/i18n-1.12.0/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/minitest-5.16.2/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/minitest-5.16.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tzinfo-2.0.5/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/zeitwerk-2.6.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/activesupport-6.1.6.1/lib" From 2459aee5ae484b7af6488f43525ef6071663f6d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?fn=20=E2=8C=83=20=E2=8C=A5?= <70830482+FnControlOption@users.noreply.github.com> Date: Thu, 18 Aug 2022 15:14:44 -0700 Subject: [PATCH 102/122] Fix caching in Formula#runtime_installed_formula_dependents --- Library/Homebrew/formula.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index b63b0971a8..d6efeff0ef 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2003,7 +2003,7 @@ class Formula # `any_installed_keg` and `runtime_dependencies` `select`s ensure # that we don't end up with something `Formula#runtime_dependencies` can't # read from a `Tab`. - Formula.cache[:runtime_installed_formula_dependents] = {} + Formula.cache[:runtime_installed_formula_dependents] ||= {} Formula.cache[:runtime_installed_formula_dependents][full_name] ||= Formula.installed .select(&:any_installed_keg) .select(&:runtime_dependencies) From c7030eaba086bd104b4620540647acb99df2fc41 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Fri, 19 Aug 2022 17:32:43 +0800 Subject: [PATCH 103/122] formula: add optional `source` and `target` args to `#rpath` There are about 10 formulae which need a bit more flexibility from `#rpath`. Most of them use `Pathname#relative_path_from`, so we can replace those instances with a call to `#rpath` instead once `#rpath` knows how to handle this. --- Library/Homebrew/extend/os/linux/formula.rb | 6 +++--- Library/Homebrew/formula.rb | 18 ++++++++++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/extend/os/linux/formula.rb b/Library/Homebrew/extend/os/linux/formula.rb index f3586103bc..5f46e710d0 100644 --- a/Library/Homebrew/extend/os/linux/formula.rb +++ b/Library/Homebrew/extend/os/linux/formula.rb @@ -3,7 +3,7 @@ class Formula undef shared_library - undef rpath + undef loader_path undef deuniversalize_machos sig { params(name: String, version: T.nilable(T.any(String, Integer))).returns(String) } @@ -17,8 +17,8 @@ class Formula end sig { returns(String) } - def rpath - "'$ORIGIN/../lib'" + def loader_path + "$ORIGIN" end sig { params(targets: T.nilable(T.any(Pathname, String))).void } diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index d6efeff0ef..0e4c7c079d 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1572,9 +1572,23 @@ class Formula end # Executable/Library RPATH according to platform conventions. + # + # Optionally specify a `source` or `target` depending on the location + # of the file containing the RPATH command and where its target is located. + # + #
+  # rpath #=> "@loader_path/../lib"
+  # rpath(target: frameworks) #=> "@loader_path/../Frameworks"
+  # rpath(source: libexec/"bin") #=> "@loader_path/../../lib"
+  # 
+ sig { params(source: Pathname, target: Pathname).returns(String) } + def rpath(source: bin, target: lib) + "#{loader_path}/#{target.relative_path_from(source)}" + end + sig { returns(String) } - def rpath - "@loader_path/../lib" + def loader_path + "@loader_path" end # Creates a new `Time` object for use in the formula as the build time. From 5606780663951b34b75082be6618d76edccec237 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Aug 2022 18:03:29 +0000 Subject: [PATCH 104/122] build(deps): bump addressable from 2.8.0 to 2.8.1 in /Library/Homebrew Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.0 to 2.8.1. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.0...addressable-2.8.1) --- updated-dependencies: - dependency-name: addressable dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index f427c61a66..d68448fd78 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -7,8 +7,8 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) bindata (2.4.10) bootsnap (1.13.0) @@ -82,7 +82,7 @@ GEM pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (4.0.7) + public_suffix (5.0.0) racc (1.6.0) rack (2.2.4) rainbow (3.1.1) From 54c1bb872a55ce17df17ef744dc0beaa80abac55 Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Fri, 19 Aug 2022 18:07:53 +0000 Subject: [PATCH 105/122] brew vendor-gems: commit updates. --- .../Homebrew/vendor/bundle/bundler/setup.rb | 4 +- .../data/unicode.data | Bin .../lib/addressable.rb | 0 .../lib/addressable/idna.rb | 1 - .../lib/addressable/idna/native.rb | 1 - .../lib/addressable/idna/pure.rb | 1 - .../lib/addressable/template.rb | 7 +- .../lib/addressable/uri.rb | 110 +++++++++--------- .../lib/addressable/version.rb | 3 +- .../data/list.txt | 73 ++++++++---- .../lib/public_suffix.rb | 2 +- .../lib/public_suffix/domain.rb | 0 .../lib/public_suffix/errors.rb | 0 .../lib/public_suffix/list.rb | 2 +- .../lib/public_suffix/rule.rb | 10 +- .../lib/public_suffix/version.rb | 2 +- 16 files changed, 123 insertions(+), 93 deletions(-) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/data/unicode.data (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable/idna.rb (97%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable/idna/native.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable/idna/pure.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable/template.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable/uri.rb (97%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{addressable-2.8.0 => addressable-2.8.1}/lib/addressable/version.rb (96%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/data/list.txt (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/lib/public_suffix.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/lib/public_suffix/domain.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/lib/public_suffix/errors.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/lib/public_suffix/list.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/lib/public_suffix/rule.rb (97%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{public_suffix-4.0.7 => public_suffix-5.0.0}/lib/public_suffix/version.rb (92%) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index 128eed6943..bc82915ce2 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -9,8 +9,8 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/minitest-5.16.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tzinfo-2.0.5/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/zeitwerk-2.6.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/activesupport-6.1.6.1/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/public_suffix-4.0.7/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/addressable-2.8.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/public_suffix-5.0.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/addressable-2.8.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ast-2.4.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/bindata-2.4.10/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-15/2.6.0-static/msgpack-1.5.4" diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/data/unicode.data b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/data/unicode.data similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/data/unicode.data rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/data/unicode.data diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna.rb similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna.rb index e41c1f5da4..2dbd3934a0 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# encoding:utf-8 #-- # Copyright (C) Bob Aman # diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna/native.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna/native.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna/native.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna/native.rb index 84de8e8cb4..302e1b0cb5 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna/native.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna/native.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# encoding:utf-8 #-- # Copyright (C) Bob Aman # diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna/pure.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna/pure.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna/pure.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna/pure.rb index 7a0c1fda22..a7c796e3d7 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/idna/pure.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/idna/pure.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# encoding:utf-8 #-- # Copyright (C) Bob Aman # diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/template.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/template.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/template.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/template.rb index 45f6ae69ee..9e8174bf88 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/template.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/template.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# encoding:utf-8 #-- # Copyright (C) Bob Aman # @@ -657,12 +656,12 @@ module Addressable def ordered_variable_defaults @ordered_variable_defaults ||= begin expansions, _ = parse_template_pattern(pattern) - expansions.map do |capture| + expansions.flat_map do |capture| _, _, varlist = *capture.match(EXPRESSION) varlist.split(',').map do |varspec| varspec[VARSPEC, 1] end - end.flatten + end end end @@ -1023,7 +1022,7 @@ module Addressable end # Ensure that the regular expression matches the whole URI. - regexp_string = "^#{regexp_string}$" + regexp_string = "\\A#{regexp_string}\\z" return expansions, Regexp.new(regexp_string) end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/uri.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/uri.rb similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/uri.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/uri.rb index 6b5f4fa7b4..14b92530ce 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/uri.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/uri.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# encoding:utf-8 #-- # Copyright (C) Bob Aman # @@ -38,20 +37,26 @@ module Addressable ## # Container for the character classes specified in # RFC 3986. + # + # Note: Concatenated and interpolated `String`s are not affected by the + # `frozen_string_literal` directive and must be frozen explicitly. + # + # Interpolated `String`s *were* frozen this way before Ruby 3.0: + # https://bugs.ruby-lang.org/issues/17104 module CharacterClasses ALPHA = "a-zA-Z" DIGIT = "0-9" GEN_DELIMS = "\\:\\/\\?\\#\\[\\]\\@" SUB_DELIMS = "\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=" - RESERVED = GEN_DELIMS + SUB_DELIMS - UNRESERVED = ALPHA + DIGIT + "\\-\\.\\_\\~" - PCHAR = UNRESERVED + SUB_DELIMS + "\\:\\@" - SCHEME = ALPHA + DIGIT + "\\-\\+\\." - HOST = UNRESERVED + SUB_DELIMS + "\\[\\:\\]" - AUTHORITY = PCHAR + "\\[\\:\\]" - PATH = PCHAR + "\\/" - QUERY = PCHAR + "\\/\\?" - FRAGMENT = PCHAR + "\\/\\?" + RESERVED = (GEN_DELIMS + SUB_DELIMS).freeze + UNRESERVED = (ALPHA + DIGIT + "\\-\\.\\_\\~").freeze + PCHAR = (UNRESERVED + SUB_DELIMS + "\\:\\@").freeze + SCHEME = (ALPHA + DIGIT + "\\-\\+\\.").freeze + HOST = (UNRESERVED + SUB_DELIMS + "\\[\\:\\]").freeze + AUTHORITY = (PCHAR + "\\[\\:\\]").freeze + PATH = (PCHAR + "\\/").freeze + QUERY = (PCHAR + "\\/\\?").freeze + FRAGMENT = (PCHAR + "\\/\\?").freeze end module NormalizeCharacterClasses @@ -469,19 +474,13 @@ module Addressable "Expected Class (String or Addressable::URI), " + "got #{return_type.inspect}" end - uri = uri.dup - # Seriously, only use UTF-8. I'm really not kidding! - uri.force_encoding("utf-8") - unless leave_encoded.empty? - leave_encoded = leave_encoded.dup.force_encoding("utf-8") - end - - result = uri.gsub(/%[0-9a-f]{2}/iu) do |sequence| + result = uri.gsub(/%[0-9a-f]{2}/i) do |sequence| c = sequence[1..3].to_i(16).chr - c.force_encoding("utf-8") + c.force_encoding(sequence.encoding) leave_encoded.include?(c) ? sequence : c end + result.force_encoding("utf-8") if return_type == String return result @@ -561,10 +560,10 @@ module Addressable leave_re = if leave_encoded.length > 0 character_class = "#{character_class}%" unless character_class.include?('%') - "|%(?!#{leave_encoded.chars.map do |char| + "|%(?!#{leave_encoded.chars.flat_map do |char| seq = SEQUENCE_ENCODING_TABLE[char] [seq.upcase, seq.downcase] - end.flatten.join('|')})" + end.join('|')})" end character_class = if leave_re @@ -900,7 +899,7 @@ module Addressable end end # All normalized values should be UTF-8 - @normalized_scheme.force_encoding(Encoding::UTF_8) if @normalized_scheme + force_utf8_encoding_if_needed(@normalized_scheme) @normalized_scheme end @@ -955,7 +954,7 @@ module Addressable end end # All normalized values should be UTF-8 - @normalized_user.force_encoding(Encoding::UTF_8) if @normalized_user + force_utf8_encoding_if_needed(@normalized_user) @normalized_user end @@ -1012,9 +1011,7 @@ module Addressable end end # All normalized values should be UTF-8 - if @normalized_password - @normalized_password.force_encoding(Encoding::UTF_8) - end + force_utf8_encoding_if_needed(@normalized_password) @normalized_password end @@ -1082,9 +1079,7 @@ module Addressable end end # All normalized values should be UTF-8 - if @normalized_userinfo - @normalized_userinfo.force_encoding(Encoding::UTF_8) - end + force_utf8_encoding_if_needed(@normalized_userinfo) @normalized_userinfo end @@ -1151,9 +1146,7 @@ module Addressable end end # All normalized values should be UTF-8 - if @normalized_host && !@normalized_host.empty? - @normalized_host.force_encoding(Encoding::UTF_8) - end + force_utf8_encoding_if_needed(@normalized_host) @normalized_host end @@ -1271,9 +1264,7 @@ module Addressable authority end # All normalized values should be UTF-8 - if @normalized_authority - @normalized_authority.force_encoding(Encoding::UTF_8) - end + force_utf8_encoding_if_needed(@normalized_authority) @normalized_authority end @@ -1507,7 +1498,7 @@ module Addressable site_string end # All normalized values should be UTF-8 - @normalized_site.force_encoding(Encoding::UTF_8) if @normalized_site + force_utf8_encoding_if_needed(@normalized_site) @normalized_site end @@ -1570,7 +1561,7 @@ module Addressable result end # All normalized values should be UTF-8 - @normalized_path.force_encoding(Encoding::UTF_8) if @normalized_path + force_utf8_encoding_if_needed(@normalized_path) @normalized_path end @@ -1646,7 +1637,7 @@ module Addressable component == "" ? nil : component end # All normalized values should be UTF-8 - @normalized_query.force_encoding(Encoding::UTF_8) if @normalized_query + force_utf8_encoding_if_needed(@normalized_query) @normalized_query end @@ -1842,9 +1833,7 @@ module Addressable component == "" ? nil : component end # All normalized values should be UTF-8 - if @normalized_fragment - @normalized_fragment.force_encoding(Encoding::UTF_8) - end + force_utf8_encoding_if_needed(@normalized_fragment) @normalized_fragment end @@ -2440,30 +2429,35 @@ module Addressable def self.normalize_path(path) # Section 5.2.4 of RFC 3986 - return nil if path.nil? + return if path.nil? normalized_path = path.dup - begin - mod = nil + loop do mod ||= normalized_path.gsub!(RULE_2A, SLASH) pair = normalized_path.match(RULE_2B_2C) - parent, current = pair[1], pair[2] if pair + if pair + parent = pair[1] + current = pair[2] + else + parent = nil + current = nil + end + + regexp = "/#{Regexp.escape(parent.to_s)}/\\.\\./|" + regexp += "(/#{Regexp.escape(current.to_s)}/\\.\\.$)" + if pair && ((parent != SELF_REF && parent != PARENT) || (current != SELF_REF && current != PARENT)) - mod ||= normalized_path.gsub!( - Regexp.new( - "/#{Regexp.escape(parent.to_s)}/\\.\\./|" + - "(/#{Regexp.escape(current.to_s)}/\\.\\.$)" - ), SLASH - ) + mod ||= normalized_path.gsub!(Regexp.new(regexp), SLASH) end mod ||= normalized_path.gsub!(RULE_2D, EMPTY_STR) # Non-standard, removes prefixed dotted segments from path. mod ||= normalized_path.gsub!(RULE_PREFIXED_PARENT, SLASH) - end until mod.nil? + break if mod.nil? + end - return normalized_path + normalized_path end ## @@ -2552,5 +2546,15 @@ module Addressable remove_instance_variable(:@uri_string) if defined?(@uri_string) remove_instance_variable(:@hash) if defined?(@hash) end + + ## + # Converts the string to be UTF-8 if it is not already UTF-8 + # + # @api private + def force_utf8_encoding_if_needed(str) + if str && str.encoding != Encoding::UTF_8 + str.force_encoding(Encoding::UTF_8) + end + end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/version.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/version.rb similarity index 96% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/version.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/version.rb index 2efe4340f3..d8e1644bb4 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.0/lib/addressable/version.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.1/lib/addressable/version.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# encoding:utf-8 #-- # Copyright (C) Bob Aman # @@ -24,7 +23,7 @@ if !defined?(Addressable::VERSION) module VERSION MAJOR = 2 MINOR = 8 - TINY = 0 + TINY = 1 STRING = [MAJOR, MINOR, TINY].join('.') end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/data/list.txt b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/data/list.txt similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/data/list.txt rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/data/list.txt index 237e159cb0..1dc8fe3711 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/data/list.txt +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/data/list.txt @@ -1340,7 +1340,7 @@ tt.im tv.im // in : https://en.wikipedia.org/wiki/.in -// see also: https://registry.in/Policies +// see also: https://registry.in/policies // Please note, that nic.in is not an official eTLD, but used by most // government institutions. in @@ -7130,7 +7130,7 @@ org.zw // newGTLDs -// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-03-27T15:13:38Z +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-07-03T15:13:53Z // This list is auto-generated, don't edit it manually. // aaa : 2015-02-26 American Automobile Association, Inc. aaa @@ -7471,7 +7471,7 @@ bio // black : 2014-01-16 Afilias Limited black -// blackfriday : 2014-01-16 UNR Corp. +// blackfriday : 2014-01-16 Registry Services, LLC blackfriday // blockbuster : 2015-07-30 Dish DBS Corporation @@ -7687,7 +7687,7 @@ chanel // channel : 2014-05-08 Charleston Road Registry Inc. channel -// charity : 2018-04-11 Binky Moon, LLC +// charity : 2018-04-11 Public Interest Registry charity // chase : 2015-04-30 JPMorgan Chase Bank, National Association @@ -7834,7 +7834,7 @@ coupon // coupons : 2015-03-26 Binky Moon, LLC coupons -// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD +// courses : 2014-12-04 Registry Services, LLC courses // cpa : 2019-06-10 American Institute of Certified Public Accountants @@ -8020,7 +8020,7 @@ dvag // dvr : 2016-05-26 DISH Technologies L.L.C. dvr -// earth : 2014-12-04 Interlink Co., Ltd. +// earth : 2014-12-04 Interlink Systems Innovation Institute K.K. earth // eat : 2014-01-23 Charleston Road Registry Inc. @@ -8227,7 +8227,7 @@ forsale // forum : 2015-04-02 Fegistry, LLC forum -// foundation : 2013-12-05 Binky Moon, LLC +// foundation : 2013-12-05 Public Interest Registry foundation // fox : 2015-09-11 FOX Registry, LLC @@ -8308,7 +8308,7 @@ gdn // gea : 2014-12-04 GEA Group Aktiengesellschaft gea -// gent : 2014-01-23 COMBELL NV +// gent : 2014-01-23 Easyhost BV gent // genting : 2015-03-12 Resorts World Inc Pte. Ltd. @@ -8326,7 +8326,7 @@ gift // gifts : 2014-07-03 Binky Moon, LLC gifts -// gives : 2014-03-06 Dog Beach, LLC +// gives : 2014-03-06 Public Interest Registry gives // giving : 2014-11-13 Giving Limited @@ -8452,7 +8452,7 @@ health // healthcare : 2014-06-12 Binky Moon, LLC healthcare -// help : 2014-06-26 UNR Corp. +// help : 2014-06-26 Innovation service Limited help // helsinki : 2015-02-05 City of Helsinki @@ -8851,7 +8851,7 @@ lincoln // linde : 2014-12-04 Linde Aktiengesellschaft linde -// link : 2013-11-14 UNR Corp. +// link : 2013-11-14 Nova Registry Ltd link // lipsy : 2015-06-25 Lipsy Ltd @@ -8866,7 +8866,7 @@ living // llc : 2017-12-14 Afilias Limited llc -// llp : 2019-08-26 UNR Corp. +// llp : 2019-08-26 Intercap Registry Inc. llp // loan : 2014-11-20 dot Loan Limited @@ -9034,7 +9034,7 @@ mobile // moda : 2013-11-07 Dog Beach, LLC moda -// moe : 2013-11-13 Interlink Co., Ltd. +// moe : 2013-11-13 Interlink Systems Innovation Institute K.K. moe // moi : 2014-12-18 Amazon Registry Services, Inc. @@ -9307,7 +9307,7 @@ philips // phone : 2016-06-02 Dish DBS Corporation phone -// photo : 2013-11-14 UNR Corp. +// photo : 2013-11-14 Registry Services, LLC photo // photography : 2013-09-20 Binky Moon, LLC @@ -9550,7 +9550,7 @@ rsvp // rugby : 2016-12-15 World Rugby Strategic Developments Limited rugby -// ruhr : 2013-10-02 regiodot GmbH & Co. KG +// ruhr : 2013-10-02 dotSaarland GmbH ruhr // run : 2015-03-19 Binky Moon, LLC @@ -9841,7 +9841,7 @@ stream // studio : 2015-02-11 Dog Beach, LLC studio -// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD +// study : 2014-12-11 Registry Services, LLC study // style : 2014-12-04 Binky Moon, LLC @@ -9901,7 +9901,7 @@ tatamotors // tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" tatar -// tattoo : 2013-08-30 UNR Corp. +// tattoo : 2013-08-30 Top Level Design, LLC tattoo // tax : 2014-03-20 Binky Moon, LLC @@ -12111,6 +12111,7 @@ kill.jp kilo.jp kuron.jp littlestar.jp +lolipopmc.jp lolitapunk.jp lomo.jp lovepop.jp @@ -12281,6 +12282,10 @@ blogspot.vn // Submitted by Niels Martignene goupile.fr +// Government of the Netherlands: https://www.government.nl +// Submitted by +gov.nl + // Group 53, LLC : https://www.group53.com // Submitted by Tyler Todd awsmppl.com @@ -12357,7 +12362,6 @@ ltd.ng ngo.ng edu.scot sch.so -org.yt // HostyHosting (hostyhosting.com) hostyhosting.io @@ -12375,6 +12379,11 @@ moonscale.net // Submitted by Hannu Aronsson iki.fi +// iliad italia: https://www.iliad.it +// Submitted by Marios Makassikis +ibxos.it +iliadboxos.it + // Impertrix Solutions : // Submitted by Zhixiang Zhao impertrixcdn.com @@ -12455,9 +12464,11 @@ iopsys.se // Submitted by Matthew Hardeman ipifony.net -// IServ GmbH : https://iserv.eu -// Submitted by Kim-Alexander Brodowski +// IServ GmbH : https://iserv.de +// Submitted by Mario Hoberg +iservschule.de mein-iserv.de +schulplattform.de schulserver.de test-iserv.de iserv.dev @@ -12779,6 +12790,10 @@ hra.health miniserver.com memset.net +// Messerli Informatik AG : https://www.messerli.ch/ +// Submitted by Ruben Schmidmeister +messerli.app + // MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ // Submitted by Zdeněk Šustr *.cloud.metacentrum.cz @@ -12798,12 +12813,13 @@ eu.meteorapp.com co.pl // Microsoft Corporation : http://microsoft.com -// Submitted by Mitch Webster +// Submitted by Public Suffix List Admin *.azurecontainer.io azurewebsites.net azure-mobile.net cloudapp.net azurestaticapps.net +1.azurestaticapps.net centralus.azurestaticapps.net eastasia.azurestaticapps.net eastus2.azurestaticapps.net @@ -13388,6 +13404,12 @@ rocky.page спб.рус я.рус +// Salesforce.com, Inc. https://salesforce.com/ +// Submitted by Michael Biven +*.builder.code.com +*.dev-builder.code.com +*.stg-builder.code.com + // Sandstorm Development Group, Inc. : https://sandcats.io/ // Submitted by Asheesh Laroia sandcats.io @@ -13811,6 +13833,15 @@ hk.org ltd.hk inc.hk +// UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/ +// see also: whois -h whois.udr.org.yt help +// Submitted by Atanunu Igbunuroghene +name.pm +sch.tf +biz.wf +sch.wf +org.yt + // United Gameserver GmbH : https://united-gameserver.de // Submitted by Stefan Schwarz virtualuser.de diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix.rb index c0f3fab67d..a4ed140353 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix.rb @@ -169,7 +169,7 @@ module PublicSuffix return DomainInvalid.new("Name is blank") if name.empty? return DomainInvalid.new("Name starts with a dot") if name.start_with?(DOT) - return DomainInvalid.new("%s is not expected to contain a scheme" % name) if name.include?("://") + return DomainInvalid.new(format("%s is not expected to contain a scheme", name)) if name.include?("://") name end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/domain.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/domain.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/domain.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/domain.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/errors.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/errors.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/errors.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/errors.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/list.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/list.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/list.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/list.rb index e11f071d43..033a17ad6b 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/list.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/list.rb @@ -87,7 +87,7 @@ module PublicSuffix section = 2 # skip comments - when line.start_with?(comment_token) + when line.start_with?(comment_token) # rubocop:disable Lint/DuplicateBranch next else diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/rule.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/rule.rb similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/rule.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/rule.rb index d41a48074b..dfe93add45 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/rule.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/rule.rb @@ -125,7 +125,7 @@ module PublicSuffix # @param private [Boolean] def initialize(value:, length: nil, private: false) @value = value.to_s - @length = length || @value.count(DOT) + 1 + @length = length || (@value.count(DOT) + 1) @private = private end @@ -161,7 +161,7 @@ module PublicSuffix # @param name [String] the domain name to check # @return [Boolean] def match?(name) - # Note: it works because of the assumption there are no + # NOTE: it works because of the assumption there are no # rules like foo.*.com. If the assumption is incorrect, # we need to properly walk the input and skip parts according # to wildcard component. @@ -221,7 +221,7 @@ module PublicSuffix # @param content [String] the content of the rule # @param private [Boolean] def self.build(content, private: false) - new(value: content.to_s[2..-1], private: private) + new(value: content.to_s[2..], private: private) end # Initializes a new rule. @@ -269,7 +269,7 @@ module PublicSuffix # @param content [#to_s] the content of the rule # @param private [Boolean] def self.build(content, private: false) - new(value: content.to_s[1..-1], private: private) + new(value: content.to_s[1..], private: private) end # Gets the original rule definition. @@ -299,7 +299,7 @@ module PublicSuffix # # @return [Array] def parts - @value.split(DOT)[1..-1] + @value.split(DOT)[1..] end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/version.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/version.rb similarity index 92% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/version.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/version.rb index 80d373f7c4..1ab5e3fad6 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-4.0.7/lib/public_suffix/version.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.0/lib/public_suffix/version.rb @@ -10,6 +10,6 @@ module PublicSuffix # @return [String] The current library version. - VERSION = "4.0.7" + VERSION = "5.0.0" end From 6ca02b22bb27a45525fa62c6fba9902039152fcc Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Sat, 20 Aug 2022 17:30:24 +0800 Subject: [PATCH 106/122] formula_auditor: skip rename audit for `glib-utils` I am removing `glib-utils` in (1) Homebrew/homebrew-core#108307, and all `glib-utils` dependencies in (2) Homebrew/homebrew-core#108497. This audit prevents me from proceeding with (1) without rebuilding all the formulae modified in (2). I don't think that is needed, so I'd like to exempt `glib-utils` from the rename audit instead. To give you a clearer idea of how I plan to do this, this is the order of events: 1. Merge this change. 2. Merge Homebrew/homebrew-core#108307. 3. Merge Homebrew/homebrew-core#108497. 4. Revert this change. This should allow us to get rid of `glib-utils` and its accompanying hacks without having to rebuild dozens of formulae needlessly. --- Library/Homebrew/formula_auditor.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index a08bb73d26..3388b0d3f3 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -263,7 +263,10 @@ module Homebrew next end - if dep_f.oldname && dep.name.split("/").last == dep_f.oldname + # FIXME: Remove `glib-utils` exemption when the following PRs are merged: + # https://github.com/Homebrew/homebrew-core/pull/108307 + # https://github.com/Homebrew/homebrew-core/pull/108497 + if dep_f.oldname && dep.name.split("/").last == dep_f.oldname && dep_f.oldname != "glib-utils" problem "Dependency '#{dep.name}' was renamed; use new name '#{dep_f.name}'." end From 718cf8b0df5666001dce4fa73a88c70218b98252 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Mon, 22 Aug 2022 14:54:52 +0800 Subject: [PATCH 107/122] Fix Linux-only GCC dependency check. This is based on feedback from code review. --- Library/Homebrew/formula_auditor.rb | 31 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index 9d51183606..3ecabea98f 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -333,21 +333,11 @@ module Homebrew return unless @core_tap - # Prevent formulae from declaring Linux-only dependencies on GCC, - # or else its dependency tree grows out of control. - on_linux_deps = formula.to_hash_with_variations.dig("variations", :x86_64_linux, "dependencies") - if on_linux_deps&.include? "gcc" - bad_gcc_dep = @strict || begin - fv = FormulaVersions.new(formula) - prev_on_linux_deps = fv.formula_at_revision("origin/HEAD") do |prev_f| - prev_f.to_hash_with_variations.dig("variations", :x86_64_linux, "dependencies") - end - - prev_on_linux_deps&.exclude? "gcc" - end - - problem "Formulae in homebrew/core should not have a Linux-only dependency on GCC." if bad_gcc_dep - end + bad_gcc_dep = linux_only_gcc_dep?(formula) && (@strict || begin + fv = FormulaVersions.new(formula) + fv.formula_at_revision("origin/HEAD") { |prev_f| !linux_only_gcc_dep?(prev_f) } + end) + problem "Formulae in homebrew/core should not have a Linux-only dependency on GCC." if bad_gcc_dep return if formula.tap&.audit_exception :versioned_dependencies_conflicts_allowlist, formula.name @@ -865,5 +855,16 @@ module Homebrew def head_only?(formula) formula.head && formula.stable.nil? end + + def linux_only_gcc_dep?(formula) + # TODO: Make this check work when running on Linux and not simulating macOS too. + return false unless Homebrew::SimulateSystem.simulating_or_running_on_macos? + + formula_hash = formula.to_hash_with_variations + deps = formula_hash["dependencies"] + linux_deps = formula_hash.dig("variations", :x86_64_linux, "dependencies") + + deps.exclude?("gcc") && linux_deps&.include?("gcc") + end end end From ed2e35853d7c35f0090ee3379c1a5264110bfde7 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Mon, 22 Aug 2022 11:11:57 +0100 Subject: [PATCH 108/122] Gemfile: stricter Ruby version requirement --- Library/Homebrew/Gemfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile index fdb2de5c98..4b844fe8f5 100644 --- a/Library/Homebrew/Gemfile +++ b/Library/Homebrew/Gemfile @@ -2,7 +2,11 @@ source "https://rubygems.org" -ruby ">= 2.6.0" +if ENV.fetch("HOMEBREW_DEVELOPER", "").empty? || ENV.fetch("HOMEBREW_USE_RUBY_FROM_PATH", "").empty? + ruby "~> 2.6.0" +else + ruby ">= 2.6.0" +end # disallowed gems (should not be used) # * nokogiri - use rexml instead for XML parsing From ba390a0817df52f687c69e58f6234bf8fce38214 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:04:57 +0000 Subject: [PATCH 109/122] build(deps-dev): bump tapioca from 0.7.2 to 0.7.3 in /Library/Homebrew Bumps [tapioca](https://github.com/Shopify/tapioca) from 0.7.2 to 0.7.3. - [Release notes](https://github.com/Shopify/tapioca/releases) - [Commits](https://github.com/Shopify/tapioca/compare/v0.7.2...v0.7.3) --- updated-dependencies: - dependency-name: tapioca dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index d68448fd78..924d36ce14 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -170,7 +170,7 @@ GEM sorbet (>= 0.5.9204) sorbet-runtime (>= 0.5.9204) thor (>= 0.19.2) - tapioca (0.7.2) + tapioca (0.7.3) bundler (>= 1.17.3) pry (>= 0.12.2) rbi (~> 0.0.0, >= 0.0.14) From a9f9ddb468647cdd78c61c23d4fbf4eab234ccd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:05:06 +0000 Subject: [PATCH 110/122] build(deps): bump msgpack from 1.5.4 to 1.5.5 in /Library/Homebrew Bumps [msgpack](https://github.com/msgpack/msgpack-ruby) from 1.5.4 to 1.5.5. - [Release notes](https://github.com/msgpack/msgpack-ruby/releases) - [Changelog](https://github.com/msgpack/msgpack-ruby/blob/master/ChangeLog) - [Commits](https://github.com/msgpack/msgpack-ruby/compare/v1.5.4...v1.5.5) --- updated-dependencies: - dependency-name: msgpack dependency-type: indirect update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index d68448fd78..c570447d93 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -58,7 +58,7 @@ GEM mime-types-data (3.2022.0105) mini_portile2 (2.8.0) minitest (5.16.3) - msgpack (1.5.4) + msgpack (1.5.5) mustache (1.1.1) net-http-digest_auth (1.4.1) net-http-persistent (4.0.1) From 4255255cad52f31f8cef273cb394b36535e39dc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:05:15 +0000 Subject: [PATCH 111/122] build(deps): bump rubocop from 1.35.0 to 1.35.1 in /Library/Homebrew Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.35.0 to 1.35.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.35.0...v1.35.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index d68448fd78..f58b499618 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -124,7 +124,7 @@ GEM rspec (>= 3, < 4) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.35.0) + rubocop (1.35.1) json (~> 2.3) parallel (~> 1.10) parser (>= 3.1.2.1) From 163d9e7cd5748b11e51aeaa70d257e4aa05710c6 Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:07:59 +0000 Subject: [PATCH 112/122] brew vendor-gems: commit updates. --- Library/Homebrew/vendor/bundle/bundler/setup.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index bc82915ce2..7c0ca5c26c 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -86,7 +86,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec_junit_formatter $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-ast-1.21.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-progressbar-1.11.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unicode-display_width-2.2.0/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-1.35.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-1.35.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-performance-1.14.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rails-2.15.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-2.12.1/lib" From a0bc2c2bf65156132b06ee3fb82274c93b4c34ab Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:08:51 +0000 Subject: [PATCH 113/122] brew vendor-gems: commit updates. --- Library/Homebrew/vendor/bundle/bundler/setup.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index bc82915ce2..c55a3e1751 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -13,8 +13,8 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/public_suffix-5.0.0/l $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/addressable-2.8.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ast-2.4.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/bindata-2.4.10/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-15/2.6.0-static/msgpack-1.5.4" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/msgpack-1.5.4/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-15/2.6.0-static/msgpack-1.5.5" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/msgpack-1.5.5/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-15/2.6.0-static/bootsnap-1.13.0" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/bootsnap-1.13.0/lib" $:.unshift "#{path}/" From bba76c8c8436839cd37b32d7457807761b9b4168 Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Mon, 22 Aug 2022 18:14:56 +0000 Subject: [PATCH 114/122] brew vendor-gems: commit updates. --- Library/Homebrew/vendor/bundle/bundler/setup.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index bc82915ce2..4bac818840 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -103,5 +103,5 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/thor-1.2.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/spoom-1.1.11/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/yard-0.9.28/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/yard-sorbet-0.6.1/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tapioca-0.7.2/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tapioca-0.7.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/warning-1.3.0/lib" From 98e6e6e31fee6ba077f3bdf74dd969a254530edc Mon Sep 17 00:00:00 2001 From: apainintheneck Date: Sun, 21 Aug 2022 12:37:38 -0700 Subject: [PATCH 115/122] Ignore HOMEBREW_NO_CLEANUP_FORMULAE deps in `brew autoremove` --- Library/Homebrew/cleanup.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/cleanup.rb b/Library/Homebrew/cleanup.rb index 72b325cb9e..716a23dfbb 100644 --- a/Library/Homebrew/cleanup.rb +++ b/Library/Homebrew/cleanup.rb @@ -189,8 +189,8 @@ module Homebrew def self.skip_clean_formula?(f) return false if Homebrew::EnvConfig.no_cleanup_formulae.blank? - skip_clean_formulae = Homebrew::EnvConfig.no_cleanup_formulae.split(",") - skip_clean_formulae.include?(f.name) || (skip_clean_formulae & f.aliases).present? + @skip_clean_formulae ||= Homebrew::EnvConfig.no_cleanup_formulae.split(",") + @skip_clean_formulae.include?(f.name) || (@skip_clean_formulae & f.aliases).present? end def self.periodic_clean_due? @@ -535,8 +535,12 @@ module Homebrew # the cache of installed formulae may no longer be valid. Formula.clear_cache unless dry_run - # Remove formulae listed in HOMEBREW_NO_CLEANUP_FORMULAE. - formulae = Formula.installed.reject(&method(:skip_clean_formula?)) + formulae = Formula.installed + # Remove formulae listed in HOMEBREW_NO_CLEANUP_FORMULAE and their dependencies. + if Homebrew::EnvConfig.no_cleanup_formulae.present? + formulae -= formulae.select(&method(:skip_clean_formula?)) + .flat_map { |f| [f, *f.runtime_formula_dependencies] } + end casks = Cask::Caskroom.casks removable_formulae = Formula.unused_formulae_with_no_dependents(formulae, casks) From 0593597a11042823e1fbe1e984fc67c126e09fba Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Tue, 23 Aug 2022 09:38:52 +0100 Subject: [PATCH 116/122] linkage_checker: don't reinstall formula on some linkage failures --- Library/Homebrew/dev-cmd/linkage.rb | 2 +- .../Homebrew/extend/os/linux/linkage_checker.rb | 5 +++-- Library/Homebrew/linkage_checker.rb | 15 ++++++++++----- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index fcd3d0e7ce..55431777a2 100644 --- a/Library/Homebrew/dev-cmd/linkage.rb +++ b/Library/Homebrew/dev-cmd/linkage.rb @@ -50,7 +50,7 @@ module Homebrew if args.test? result.display_test_output(strict: args.strict?) - Homebrew.failed = true if result.broken_library_linkage?(strict: args.strict?) + Homebrew.failed = true if result.broken_library_linkage?(test: true, strict: args.strict?) elsif args.reverse? result.display_reverse_output else diff --git a/Library/Homebrew/extend/os/linux/linkage_checker.rb b/Library/Homebrew/extend/os/linux/linkage_checker.rb index e94995e966..16016c8a4b 100644 --- a/Library/Homebrew/extend/os/linux/linkage_checker.rb +++ b/Library/Homebrew/extend/os/linux/linkage_checker.rb @@ -52,8 +52,9 @@ class LinkageChecker display_deprecated_warning(strict: strict) end - def broken_library_linkage?(strict: false) - generic_broken_library_linkage?(strict: strict) || (fail_on_libcrypt1?(strict: strict) && @libcrypt_found) + def broken_library_linkage?(test: false, strict: false) + generic_broken_library_linkage?(test: test, strict: strict) || + (fail_on_libcrypt1?(strict: strict) && @libcrypt_found) end private diff --git a/Library/Homebrew/linkage_checker.rb b/Library/Homebrew/linkage_checker.rb index 7887ffe7de..0807be0fdf 100644 --- a/Library/Homebrew/linkage_checker.rb +++ b/Library/Homebrew/linkage_checker.rb @@ -80,11 +80,16 @@ class LinkageChecker alias generic_display_test_output display_test_output private :generic_display_test_output - sig { params(strict: T::Boolean).returns(T::Boolean) } - def broken_library_linkage?(strict: false) - issues = [@broken_deps, @unwanted_system_dylibs, @version_conflict_deps] - issues += [@undeclared_deps, @files_missing_rpaths] if strict - [issues, unexpected_broken_dylibs, unexpected_present_dylibs].flatten.any?(&:present?) + sig { params(test: T::Boolean, strict: T::Boolean).returns(T::Boolean) } + def broken_library_linkage?(test: false, strict: false) + raise ArgumentError, "Strict linkage checking requires test mode to be enabled." if strict && !test + + issues = [@broken_deps, unexpected_broken_dylibs] + if test + issues += [@unwanted_system_dylibs, @version_conflict_deps, unexpected_present_dylibs] + issues += [@undeclared_deps, @files_missing_rpaths] if strict + end + issues.any?(&:present?) end alias generic_broken_library_linkage? broken_library_linkage? private :generic_broken_library_linkage? From 7e64c09c4ede34aa8aaa2938e499b97bdfdd9ecf Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 23 Aug 2022 11:16:16 +0100 Subject: [PATCH 117/122] README: add Mercedes-Benz Group. Sponsoring us for $200/month! --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9f000dc110..293869f451 100644 --- a/README.md +++ b/README.md @@ -88,3 +88,5 @@ Flaky test detection and tracking is provided by [BuildPulse](https://buildpulse Homebrew is generously supported by [Substack](https://github.com/substackinc), [Randy Reddig](https://github.com/ydnar), [embark-studios](https://github.com/embark-studios), [CodeCrafters](https://github.com/codecrafters-io) and many other users and organisations via [GitHub Sponsors](https://github.com/sponsors/Homebrew). [![Substack](https://github.com/substackinc.png?size=64)](https://github.com/substackinc) + +[![Mercedes-Benz Group](https://github.com/mercedes-benz.png?size=64)](https://github.com/mercedes-benz) From e7aa71de26884832e4ea32aad2a8619916380eb7 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 23 Aug 2022 11:25:02 +0100 Subject: [PATCH 118/122] Remove odisabled for 3.6.0 The next release will be 3.6.0. --- Library/Homebrew/cask/dsl/version.rb | 14 -------------- Library/Homebrew/compat/cask.rb | 19 ------------------- Library/Homebrew/compat/formula.rb | 18 ------------------ Library/Homebrew/dev-cmd/bump-formula-pr.rb | 4 ---- Library/Homebrew/dev-cmd/pr-upload.rb | 3 --- 5 files changed, 58 deletions(-) diff --git a/Library/Homebrew/cask/dsl/version.rb b/Library/Homebrew/cask/dsl/version.rb index bd7568c667..6a643217fc 100644 --- a/Library/Homebrew/cask/dsl/version.rb +++ b/Library/Homebrew/cask/dsl/version.rb @@ -150,20 +150,6 @@ module Cask version { split(",", 2).second } end - # @api public - sig { returns(T.self_type) } - def before_colon - odisabled "Cask::DSL::Version#before_colon", "Cask::DSL::Version#csv" - version { split(":", 2).first } - end - - # @api public - sig { returns(T.self_type) } - def after_colon - odisabled "Cask::DSL::Version#after_colon", "Cask::DSL::Version#csv" - version { split(":", 2).second } - end - # @api public sig { returns(T.self_type) } def no_dividers diff --git a/Library/Homebrew/compat/cask.rb b/Library/Homebrew/compat/cask.rb index aa1521766e..8c5121759a 100644 --- a/Library/Homebrew/compat/cask.rb +++ b/Library/Homebrew/compat/cask.rb @@ -1,21 +1,2 @@ # typed: true # frozen_string_literal: true - -module Cask - class Cask - extend Enumerable - - def self.each(&block) - odisabled "`Enumerable` methods on `Cask::Cask`", - "`Cask::Cask.all` (but avoid looping over all casks, it's slow and insecure)" - - return to_enum unless block - - Tap.flat_map(&:cask_files).each do |f| - yield CaskLoader::FromTapPathLoader.new(f).load(config: nil) - rescue CaskUnreadableError => e - opoo e.message - end - end - end -end diff --git a/Library/Homebrew/compat/formula.rb b/Library/Homebrew/compat/formula.rb index e9a7e7096c..8c5121759a 100644 --- a/Library/Homebrew/compat/formula.rb +++ b/Library/Homebrew/compat/formula.rb @@ -1,20 +1,2 @@ # typed: true # frozen_string_literal: true - -class Formula - extend Enumerable - - def self.each(&_block) - odisabled "`Enumerable` methods on `Formula`", - "`Formula.all` (but avoid looping over all formulae, it's slow and insecure)" - - files.each do |file| - yield Formulary.factory(file) - rescue FormulaUnavailableError, FormulaUnreadableError => e - # Don't let one broken formula break commands. But do complain. - onoe "Failed to import: #{file}" - $stderr.puts e - next - end - end -end diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index fbcc4de792..b7715ba306 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -39,7 +39,6 @@ module Homebrew hidden: true switch "--write-only", description: "Make the expected file modifications without taking any Git actions." - switch "--write", hidden: true switch "--commit", depends_on: "--write-only", description: "When passed with `--write-only`, generate a new commit after writing changes " \ @@ -87,7 +86,6 @@ module Homebrew description: "Exclude these Python packages when finding resources." conflicts "--dry-run", "--write-only" - conflicts "--dry-run", "--write" conflicts "--no-audit", "--strict" conflicts "--no-audit", "--online" conflicts "--url", "--tag" @@ -100,8 +98,6 @@ module Homebrew def bump_formula_pr args = bump_formula_pr_args.parse - odisabled "`brew bump-formula-pr --write`", "`brew bump-formula-pr --write-only`" if args.write? - if args.revision.present? && args.tag.nil? && args.version.nil? raise UsageError, "`--revision` must be passed with either `--tag` or `--version`!" end diff --git a/Library/Homebrew/dev-cmd/pr-upload.rb b/Library/Homebrew/dev-cmd/pr-upload.rb index d1abdbc943..f0296d4f75 100644 --- a/Library/Homebrew/dev-cmd/pr-upload.rb +++ b/Library/Homebrew/dev-cmd/pr-upload.rb @@ -30,7 +30,6 @@ module Homebrew description: "Skip running `brew bottle` before uploading." flag "--committer=", description: "Specify a committer name and email in `git`'s standard author format." - flag "--github-org=", hidden: true flag "--root-url=", description: "Use the specified as the root of the bottle's URL instead of Homebrew's default." flag "--root-url-using=", @@ -90,8 +89,6 @@ module Homebrew def pr_upload args = pr_upload_args.parse - odisabled "`brew pr-upload --github-org`", "`brew pr-upload` without `--github-org`" if args.github_org - json_files = Dir["*.bottle.json"] odie "No bottle JSON files found in the current working directory" if json_files.blank? bottles_hash = bottles_hash_from_json_files(json_files, args) From 152714e63ca5459fef6177436b93a96fc4e88701 Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Tue, 23 Aug 2022 10:52:39 +0000 Subject: [PATCH 119/122] Update maintainers, manpage and completions. Autogenerated by the [update-man-completions](https://github.com/Homebrew/brew/blob/HEAD/.github/workflows/update-man-completions.yml) workflow. --- completions/zsh/_brew | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/completions/zsh/_brew b/completions/zsh/_brew index b771e55fd5..4b349d5ada 100644 --- a/completions/zsh/_brew +++ b/completions/zsh/_brew @@ -523,7 +523,7 @@ _brew_bump_formula_pr() { _arguments \ '--commit[When passed with `--write-only`, generate a new commit after writing changes to the formula file]' \ '--debug[Display any debugging information]' \ - '(--write-only --write)--dry-run[Print what would be done rather than doing it]' \ + '(--write-only)--dry-run[Print what would be done rather than doing it]' \ '--force[Ignore duplicate open PRs. Remove all mirrors if `--mirror` was not specified]' \ '--fork-org[Use the specified GitHub organization for forking]' \ '--help[Show this message]' \ From 4c643aed0227bbfa7ea2a4c21eef2a715104c086 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Tue, 23 Aug 2022 09:49:54 +0100 Subject: [PATCH 120/122] linkage_checker: disable libcrypt.so.1 linkage --- .../extend/os/linux/linkage_checker.rb | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/Library/Homebrew/extend/os/linux/linkage_checker.rb b/Library/Homebrew/extend/os/linux/linkage_checker.rb index 16016c8a4b..8e42455b5f 100644 --- a/Library/Homebrew/extend/os/linux/linkage_checker.rb +++ b/Library/Homebrew/extend/os/linux/linkage_checker.rb @@ -10,7 +10,6 @@ class LinkageChecker libanl.so.1 libatomic.so.1 libc.so.6 - libcrypt.so.1 libdl.so.2 libm.so.6 libmvec.so.1 @@ -29,17 +28,10 @@ class LinkageChecker def display_deprecated_warning(strict: false) return unless @libcrypt_found - # Steps when moving this to `odisabled`: - # - Remove `libcrypt.so.1` from SYSTEM_LIBRARY_ALLOWLIST above. - # - Remove the `disable` and `disable_for_developer` kwargs here. - # - Remove `broken_library_linkage?` override below and the generic alias in HOMEBREW_LIBRARY/linkage_checker.rb. - # - Remove `fail_on_libcrypt1?`. - # Steps when removing this entirely (assuming the above has already been done): + # Steps when removing this entirely: # - Remove the `display_` overrides here and the associated generic aliases in HOMEBREW_LIBRARY/linkage_checker.rb # - Remove the setting of `@libcrypt_found` in `check_dylibs` below. - odeprecated "linkage to libcrypt.so.1", "libcrypt.so.2 in the libxcrypt formula", - disable: fail_on_libcrypt1?(strict: strict), - disable_for_developers: false + odisabled "linkage to libcrypt.so.1", "libcrypt.so.2 in the libxcrypt formula" end def display_normal_output @@ -53,16 +45,11 @@ class LinkageChecker end def broken_library_linkage?(test: false, strict: false) - generic_broken_library_linkage?(test: test, strict: strict) || - (fail_on_libcrypt1?(strict: strict) && @libcrypt_found) + generic_broken_library_linkage?(test: test, strict: strict) end private - def fail_on_libcrypt1?(strict:) - strict || ENV["HOMEBREW_DISALLOW_LIBCRYPT1"].present? - end - def check_dylibs(rebuild_cache:) generic_check_dylibs(rebuild_cache: rebuild_cache) From d9dc41bd38a5e54ad1ffafc8b7a60729c9ec6918 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Tue, 23 Aug 2022 09:55:30 +0100 Subject: [PATCH 121/122] linkage_checker: deprecate libnsl.so.1 linkage --- .../extend/os/linux/linkage_checker.rb | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/extend/os/linux/linkage_checker.rb b/Library/Homebrew/extend/os/linux/linkage_checker.rb index 8e42455b5f..95146eb1f4 100644 --- a/Library/Homebrew/extend/os/linux/linkage_checker.rb +++ b/Library/Homebrew/extend/os/linux/linkage_checker.rb @@ -26,12 +26,27 @@ class LinkageChecker ].freeze def display_deprecated_warning(strict: false) - return unless @libcrypt_found - - # Steps when removing this entirely: + # Steps when moving these to `odisabled`: + # - Remove the old library from SYSTEM_LIBRARY_ALLOWLIST above. + # - Remove the `disable` and `disable_for_developer` kwargs here. + # - Adjust the `broken_library_linkage?` override below to not check for the library. + # - Remove the relevant `fail_on_lib*?`. + # If there's no more deprecations left: + # - Remove the `broken_library_linkage?` override and the generic alias in HOMEBREW_LIBRARY/linkage_checker.rb. + # + # Steps when removing handling for a library entirely (assuming the steps to `odisabled` has already been done): + # - Remove the relevant setting of `@lib*_found` in `check_dylibs` below. + # - Remove the `odisabled` line + # If there's no library deprecated/disabled handling left: # - Remove the `display_` overrides here and the associated generic aliases in HOMEBREW_LIBRARY/linkage_checker.rb - # - Remove the setting of `@libcrypt_found` in `check_dylibs` below. - odisabled "linkage to libcrypt.so.1", "libcrypt.so.2 in the libxcrypt formula" + + odisabled "linkage to libcrypt.so.1", "libcrypt.so.2 in the libxcrypt formula" if @libcrypt_found + + return unless @libnsl_found + + odeprecated "linkage to libnsl.so.1", "libnsl.so.3 in the libnsl formula", + disable: fail_on_libnsl1?(strict: strict), + disable_for_developers: false end def display_normal_output @@ -45,15 +60,20 @@ class LinkageChecker end def broken_library_linkage?(test: false, strict: false) - generic_broken_library_linkage?(test: test, strict: strict) + generic_broken_library_linkage?(test: test, strict: strict) || (fail_on_libnsl1?(strict: strict) && @libnsl_found) end private + def fail_on_libnsl1?(strict:) + strict || ENV["HOMEBREW_DISALLOW_LIBNSL1"].present? + end + def check_dylibs(rebuild_cache:) generic_check_dylibs(rebuild_cache: rebuild_cache) @libcrypt_found = true if @system_dylibs.any? { |s| File.basename(s) == "libcrypt.so.1" } + @libnsl_found = true if @system_dylibs.any? { |s| File.basename(s) == "libnsl.so.1" } # glibc and gcc are implicit dependencies. # No other linkage to system libraries is expected or desired. From c294dcc6163eb7049c45eb59e630e90cf821b06b Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 23 Aug 2022 12:42:02 +0100 Subject: [PATCH 122/122] glibc related cleanup Extracted from https://github.com/Homebrew/brew/pull/13577 --- Library/Homebrew/compilers.rb | 2 +- Library/Homebrew/dependency_collector.rb | 15 ++++++++++++-- Library/Homebrew/development_tools.rb | 8 ++++---- Library/Homebrew/extend/os/linux/compilers.rb | 4 +--- Library/Homebrew/formula.rb | 18 +++++++++++++---- Library/Homebrew/formula_auditor.rb | 9 +++++---- Library/Homebrew/github_packages.rb | 4 ++-- Library/Homebrew/keg_relocate.rb | 2 +- Library/Homebrew/os.rb | 11 ++++++++-- .../Homebrew/test/compiler_selector_spec.rb | 2 +- Library/Homebrew/test/formula_spec.rb | 2 +- docs/Linux-CI.md | 20 +++++++++---------- 12 files changed, 62 insertions(+), 35 deletions(-) diff --git a/Library/Homebrew/compilers.rb b/Library/Homebrew/compilers.rb index 0c61affc25..b620fc0845 100644 --- a/Library/Homebrew/compilers.rb +++ b/Library/Homebrew/compilers.rb @@ -172,7 +172,7 @@ class CompilerSelector def compiler_version(name) case name.to_s when "gcc", GNU_GCC_REGEXP - versions.non_apple_gcc_version(name.to_s) + versions.gcc_version(name.to_s) else versions.send("#{name}_build_version") end diff --git a/Library/Homebrew/dependency_collector.rb b/Library/Homebrew/dependency_collector.rb index f19b059b12..f4864b9051 100644 --- a/Library/Homebrew/dependency_collector.rb +++ b/Library/Homebrew/dependency_collector.rb @@ -30,12 +30,23 @@ class DependencyCollector @requirements = Requirements.new end + def initialize_copy(other) + super + @deps = @deps.dup + @requirements = @requirements.dup + end + def add(spec) case dep = fetch(spec) when Dependency @deps << dep when Requirement @requirements << dep + when nil + # no-op when we have a nil value + nil + else + raise ArgumentError, "DependencyCollector#add passed something that isn't a Dependency or Requirement!" end dep end @@ -63,7 +74,7 @@ class DependencyCollector Dependency.new("git", tags) end - def brewed_curl_dep_if_needed(tags) + def curl_dep_if_needed(tags) Dependency.new("curl", tags) end @@ -148,7 +159,7 @@ class DependencyCollector strategy = spec.download_strategy if strategy <= HomebrewCurlDownloadStrategy - @deps << brewed_curl_dep_if_needed(tags) + @deps << curl_dep_if_needed(tags) parse_url_spec(spec.url, tags) elsif strategy <= CurlDownloadStrategy parse_url_spec(spec.url, tags) diff --git a/Library/Homebrew/development_tools.rb b/Library/Homebrew/development_tools.rb index 003dbfa6eb..6ccda875a4 100644 --- a/Library/Homebrew/development_tools.rb +++ b/Library/Homebrew/development_tools.rb @@ -78,8 +78,8 @@ class DevelopmentTools end sig { params(cc: String).returns(Version) } - def non_apple_gcc_version(cc) - (@non_apple_gcc_version ||= {}).fetch(cc) do + def gcc_version(cc) + (@gcc_version ||= {}).fetch(cc) do path = HOMEBREW_PREFIX/"opt/#{CompilerSelector.preferred_gcc}/bin"/cc path = locate(cc) unless path.exist? version = if path && @@ -88,14 +88,14 @@ class DevelopmentTools else Version::NULL end - @non_apple_gcc_version[cc] = version + @gcc_version[cc] = version end end sig { void } def clear_version_cache @clang_version = @clang_build_version = nil - @non_apple_gcc_version = {} + @gcc_version = {} end sig { returns(T::Boolean) } diff --git a/Library/Homebrew/extend/os/linux/compilers.rb b/Library/Homebrew/extend/os/linux/compilers.rb index 21ac0954d5..696abfd740 100644 --- a/Library/Homebrew/extend/os/linux/compilers.rb +++ b/Library/Homebrew/extend/os/linux/compilers.rb @@ -4,8 +4,6 @@ class CompilerSelector sig { returns(String) } def self.preferred_gcc - # gcc-5 is the lowest gcc version we support on Linux. - # gcc-5 is the default gcc in Ubuntu 16.04 (used for our CI) - "gcc@5" + OS::LINUX_PREFERRED_GCC_FORMULA end end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 0e4c7c079d..1cc59e76d0 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -435,16 +435,26 @@ class Formula end # If this is a `@`-versioned formula. + sig { returns(T::Boolean) } def versioned_formula? name.include?("@") end - # Returns any `@`-versioned formulae for any formula (including versioned formulae). - def versioned_formulae - Pathname.glob(path.to_s.gsub(/(@[\d.]+)?\.rb$/, "@*.rb")).map do |versioned_path| + # Returns any `@`-versioned formulae names for any formula (including versioned formulae). + sig { returns(T::Array[String]) } + def versioned_formulae_names + @versioned_formulae_names ||= Pathname.glob(path.to_s.gsub(/(@[\d.]+)?\.rb$/, "@*.rb")).map do |versioned_path| next if versioned_path == path - Formula[versioned_path.basename(".rb").to_s] + versioned_path.basename(".rb").to_s + end.compact.sort + end + + # Returns any `@`-versioned Formula objects for any Formula (including versioned formulae). + sig { returns(T::Array[Formula]) } + def versioned_formulae + @versioned_formulae ||= versioned_formulae_names.map do |name| + Formula[name] rescue FormulaUnavailableError nil end.compact.sort_by(&:version).reverse diff --git a/Library/Homebrew/formula_auditor.rb b/Library/Homebrew/formula_auditor.rb index dfd6ece5a6..21da794564 100644 --- a/Library/Homebrew/formula_auditor.rb +++ b/Library/Homebrew/formula_auditor.rb @@ -433,11 +433,12 @@ module Homebrew def audit_glibc return unless @core_tap return if formula.name != "glibc" - return if [OS::CI_GLIBC_VERSION, "2.27", "2.31", "2.35"].include?(formula.version.to_s) + # Also allow LINUX_GLIBC_NEXT_CI_VERSION for when we're upgrading. + return if [OS::LINUX_GLIBC_CI_VERSION, OS::LINUX_GLIBC_NEXT_CI_VERSION].include?(formula.version.to_s) - problem "The glibc version must be #{OS::CI_GLIBC_VERSION}, as this is the version used by our CI on Linux. " \ - "Glibc is for users who have a system Glibc with a lower version, " \ - "which allows them to use our Linux bottles, which were compiled against system Glibc on CI." + problem "The glibc version must be #{OS::LINUX_GLIBC_CI_VERSION}, as needed by our CI on Linux. " \ + "The glibc formula is for users who have a system glibc with a lower version, " \ + "which allows them to use our Linux bottles, which were compiled against system glibc on CI." end ELASTICSEARCH_KIBANA_RELICENSED_VERSION = "7.11" diff --git a/Library/Homebrew/github_packages.rb b/Library/Homebrew/github_packages.rb index 7943752790..0527dcb401 100644 --- a/Library/Homebrew/github_packages.rb +++ b/Library/Homebrew/github_packages.rb @@ -333,9 +333,9 @@ class GitHubPackages os_version ||= "macOS #{bottle_tag.to_macos_version}" when "linux" os_version&.delete_suffix!(" LTS") - os_version ||= OS::CI_OS_VERSION + os_version ||= OS::LINUX_CI_OS_VERSION glibc_version = tab["built_on"]["glibc_version"].presence if tab["built_on"].present? - glibc_version ||= OS::CI_GLIBC_VERSION + glibc_version ||= OS::LINUX_GLIBC_CI_VERSION cpu_variant = tab["oldest_cpu_family"] || Hardware::CPU::INTEL_64BIT_OLDEST_CPU.to_s end diff --git a/Library/Homebrew/keg_relocate.rb b/Library/Homebrew/keg_relocate.rb index a396f43205..ae3db9de42 100644 --- a/Library/Homebrew/keg_relocate.rb +++ b/Library/Homebrew/keg_relocate.rb @@ -373,7 +373,7 @@ class Keg @bottle_dependencies ||= begin formulae = [] gcc = Formulary.factory(CompilerSelector.preferred_gcc) - formulae << gcc if DevelopmentTools.non_apple_gcc_version("gcc") < gcc.version.to_i + formulae << gcc if DevelopmentTools.gcc_version("gcc") < gcc.version.to_i formulae end end diff --git a/Library/Homebrew/os.rb b/Library/Homebrew/os.rb index 52945a402a..ac480c374f 100644 --- a/Library/Homebrew/os.rb +++ b/Library/Homebrew/os.rb @@ -45,8 +45,15 @@ module OS ::OS_VERSION = ENV.fetch("HOMEBREW_OS_VERSION").freeze - CI_GLIBC_VERSION = "2.23" - CI_OS_VERSION = "Ubuntu 16.04" + LINUX_CI_OS_VERSION = "Ubuntu 16.04" + LINUX_GLIBC_CI_VERSION = "2.23" + LINUX_GCC_CI_VERSION = "5.0" + LINUX_PREFERRED_GCC_FORMULA = "gcc@5" + + # Ubuntu 22.04 (see Linux-CI.md) + LINUX_GLIBC_NEXT_CI_VERSION = "2.35" + # LINUX_GCC_CI_VERSION = "11.0" + # LINUX_PREFERRED_GCC_FORMULA = "gcc@11" if OS.mac? require "os/mac" diff --git a/Library/Homebrew/test/compiler_selector_spec.rb b/Library/Homebrew/test/compiler_selector_spec.rb index 2f421a20bd..5ee6d0c2eb 100644 --- a/Library/Homebrew/test/compiler_selector_spec.rb +++ b/Library/Homebrew/test/compiler_selector_spec.rb @@ -18,7 +18,7 @@ describe CompilerSelector do end before do - allow(versions).to receive(:non_apple_gcc_version) do |name| + allow(versions).to receive(:gcc_version) do |name| case name when "gcc-7" then Version.create("7.1") when "gcc-6" then Version.create("6.1") diff --git a/Library/Homebrew/test/formula_spec.rb b/Library/Homebrew/test/formula_spec.rb index bada984de5..7b2de44182 100644 --- a/Library/Homebrew/test/formula_spec.rb +++ b/Library/Homebrew/test/formula_spec.rb @@ -149,7 +149,7 @@ describe Formula do end end - it "returns true by default" do + it "returns array with versioned formulae" do FileUtils.touch f.path FileUtils.touch f2.path allow(Formulary).to receive(:load_formula_from_path).with(f2.name, f2.path).and_return(f2) diff --git a/docs/Linux-CI.md b/docs/Linux-CI.md index f69540771d..8ef5c93688 100644 --- a/docs/Linux-CI.md +++ b/docs/Linux-CI.md @@ -2,22 +2,22 @@ We currently use Ubuntu 16.04 for bottling in `homebrew/core`. -### Ubuntu versus other distributions +## Ubuntu vs. other Linux distributions As of 2022, around 77% of our users are using Ubuntu. This is the reason why we have chosen this distribution for our base CI image. -We have been using Ubuntu for CI since version 14.04 with success. -The LTS versions have 5 year support. A new LTS version is released every 2 years. +We have successfully used Ubuntu for CI since version 14.04. +The Ubuntu LTS versions are supported for 5 years. A new LTS version is released every 2 years. Our bottles are compatible with other distributions like Debian/CentOS, even when compiled on Ubuntu. -### Past and next versions +## Past and next versions We are currently moving our CI to Ubuntu 22.04. This work will probably be done before end of 2022. -Moving from Ubuntu 16.04 to Ubuntu 22.04 (and thus skipping version 18.04 and 20.04) took more time than expected due to other more urgent issues we had to take care of. +Moving from Ubuntu 16.04 to Ubuntu 22.04 (and thus skipping version 18.04 and 20.04) took longer than expected. -We plan to proceed with a more regular update from 2022 on. We aim to use the latest Ubuntu LTS version for our CI. +We plan to proceed with regular updates from 2022 onwards. We aim to use the latest Ubuntu LTS version for our CI. -We will start using the latest Ubuntu LTS version for our CI 3 months after it's release. Ideally the migration to the newest version will be done within 12 months after the LTS release, depending of course on the maintainer bandwidth to carry out such a migration. +We will start using the latest Ubuntu LTS version for our CI no earlier than 3 months after its release and, ideally, no more than 12 months after its release. | Distribution | Glibc | GCC | Usage | |---|---|---|---| @@ -26,10 +26,10 @@ We will start using the latest Ubuntu LTS version for our CI 3 months after it's | Ubuntu 22.04 | 2.35 | 11 | From 2022 to 2024 | | Ubuntu 24.04 | ? | ? | From 2024 to 2026 | -### Why always using the latests version? +## Why always use the latest version? -Homebrew is a rolling-release package manager. We try to ship the newest things as quickest as possible, on macOS and Linux. +Homebrew is a rolling-release package manager. We try to ship the newest things as quickly as possible, on macOS and Linux. -When a formula needs a newer GCC because our host GCC in CI is too old, we need to make that formula depend on a newer Homebrew GCC. All C++ dependents of that formula immediately acquire a dependency on Homebrew GCC as well. While we have taken the steps to make sure this no longer holds up GCC updates, it still creates a maintenance headache. This problem is more likely for formula which are very actively maintained and try to use newer features of C++. We decided that we shouldn't be creating maintenance burdens for formulae which are doing the right thing by staying up to date. It makes a lot of sense for Homebrew maintainers to submit upstream fixes when formulae are not working with newer compilers. It makes a lot less sense for Homebrew maintainers to submit fixes because our host compiler is too old. +When a formula needs a newer GCC because our host GCC in CI is too old, we needed to make that formula depend on a newer Homebrew GCC. All C++ dependents of that formula immediately acquire a dependency on Homebrew GCC as well. While we have taken the steps to make sure this no longer holds up GCC updates, it still creates a maintenance burden. This problem is more likely for formula which are very actively maintained and try to use newer features of C++. We decided that we shouldn't have a maintenance burden for formulae which are doing the right thing by staying up to date. It makes a lot of sense for Homebrew maintainers to submit upstream fixes when formulae are not working with newer compilers. It makes a lot less sense for Homebrew maintainers to submit fixes because our host compiler is too old. Note that `glibc` will need to be installed for more users as their `glibc` version will often be too old: disk space is cheap and we have can handle this situation for our users. This situation will often arise when update to a new LTS version and adoption of the new Ubuntu is still low during the first months. For the same reasons as above: we prefer to stay on the bleeding edge and give our users a gentle nudge to think about updating their OS.