diff -Nru leiningen-clojure-2.8.1/bin/lein leiningen-clojure-2.9.0/bin/lein --- leiningen-clojure-2.8.1/bin/lein 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/bin/lein 2019-02-11 00:27:53.000000000 +0000 @@ -4,7 +4,11 @@ # somewhere on your $PATH, like ~/bin. The rest of Leiningen will be # installed upon first run into the ~/.lein/self-installs directory. -export LEIN_VERSION="2.8.1" +function msg { + echo "$@" 1>&2 +} + +export LEIN_VERSION="2.9.0" case $LEIN_VERSION in *SNAPSHOT) SNAPSHOT="YES" ;; @@ -12,8 +16,10 @@ esac if [[ "$CLASSPATH" != "" ]]; then - echo "WARNING: You have \$CLASSPATH set, probably by accident." - echo "It is strongly recommended to unset this before proceeding." + cat <<-'EOS' 1>&2 + WARNING: You have $CLASSPATH set, probably by accident. + It is strongly recommended to unset this before proceeding. + EOS fi if [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]]; then @@ -29,7 +35,7 @@ fi function command_not_found { - >&2 echo "Leiningen couldn't find $1 in your \$PATH ($PATH), which is required." + msg "Leiningen couldn't find $1 in your \$PATH ($PATH), which is required." exit 1 } @@ -60,20 +66,24 @@ } function download_failed_message { - echo "Failed to download $1 (exit code $2)" - echo "It's possible your HTTP client's certificate store does not have the" - echo "correct certificate authority needed. This is often caused by an" - echo "out-of-date version of libssl. It's also possible that you're behind a" - echo "firewall and haven't set HTTP_PROXY and HTTPS_PROXY." + cat <<-EOS 1>&2 + Failed to download $1 (exit code $2) + It's possible your HTTP client's certificate store does not have the + correct certificate authority needed. This is often caused by an + out-of-date version of libssl. It's also possible that you're behind a + firewall and haven't set HTTP_PROXY and HTTPS_PROXY. + EOS } function self_install { if [ -r "$LEIN_JAR" ]; then - echo "The self-install jar already exists at $LEIN_JAR." - echo "If you wish to re-download, delete it and rerun \"$0 self-install\"." + cat <<-EOS 1>&2 + The self-install jar already exists at $LEIN_JAR. + If you wish to re-download, delete it and rerun "$0 self-install". + EOS exit 1 fi - echo "Downloading Leiningen to $LEIN_JAR now..." + msg "Downloading Leiningen to $LEIN_JAR now..." mkdir -p "$(dirname "$LEIN_JAR")" LEIN_URL="https://github.com/technomancy/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.zip" $HTTP_CLIENT "$LEIN_JAR.pending" "$LEIN_URL" @@ -161,9 +171,11 @@ # Need to use lein release to bootstrap the leiningen-core library (for aether) if [ ! -r "$LEIN_DIR/leiningen-core/.lein-bootstrap" ]; then - echo "Leiningen is missing its dependencies." - echo "Please run \"lein bootstrap\" in the leiningen-core/ directory" - echo "with a stable release of Leiningen. See CONTRIBUTING.md for details." + cat <<-'EOS' 1>&2 + Leiningen is missing its dependencies. + Please run "lein bootstrap" in the leiningen-core/ directory + with a stable release of Leiningen. See CONTRIBUTING.md for details. + EOS exit 1 fi @@ -178,7 +190,7 @@ # Use bin/lein to calculate its own classpath. if [ ! -r "$LEIN_DIR/.lein-classpath" ] && [ "$1" != "classpath" ]; then - echo "Recalculating Leiningen's classpath." + msg "Recalculating Leiningen's classpath." ORIG_PWD="$PWD" cd "$LEIN_DIR" @@ -201,7 +213,7 @@ else # Not running from a checkout add_path CLASSPATH "$LEIN_JAR" - if [ "$LEIN_USE_BOOTCLASSPATH" != "" ]; then + if [ "$LEIN_USE_BOOTCLASSPATH" != "no" ]; then LEIN_JVM_OPTS="-Xbootclasspath/a:$LEIN_JAR $LEIN_JVM_OPTS" fi @@ -212,8 +224,8 @@ if [ ! -x "$JAVA_CMD" ] && ! type -f java >/dev/null then - >&2 echo "Leiningen couldn't find 'java' executable, which is required." - >&2 echo "Please either set JAVA_CMD or put java (>=1.6) in your \$PATH ($PATH)." + msg "Leiningen couldn't find 'java' executable, which is required." + msg "Please either set JAVA_CMD or put java (>=1.6) in your \$PATH ($PATH)." exit 1 fi @@ -245,24 +257,28 @@ # you need to remove the self-install and upgrade functionality or see lein-pkg. if [ "$1" = "self-install" ]; then if [ -r "$BIN_DIR/../src/leiningen/version.clj" ]; then - echo "Running self-install from a checkout is not supported." - echo "See CONTRIBUTING.md for SNAPSHOT-specific build instructions." + cat <<-'EOS' 1>&2 + Running self-install from a checkout is not supported. + See CONTRIBUTING.md for SNAPSHOT-specific build instructions. + EOS exit 1 fi - echo "Manual self-install is deprecated; it will run automatically when necessary." + msg "Manual self-install is deprecated; it will run automatically when necessary." self_install elif [ "$1" = "upgrade" ] || [ "$1" = "downgrade" ]; then if [ "$LEIN_DIR" != "" ]; then - echo "The upgrade task is not meant to be run from a checkout." + msg "The upgrade task is not meant to be run from a checkout." exit 1 fi if [ $SNAPSHOT = "YES" ]; then - echo "The upgrade task is only meant for stable releases." - echo "See the \"Bootstrapping\" section of CONTRIBUTING.md." + cat <<-'EOS' 1>&2 + The upgrade task is only meant for stable releases. + See the "Bootstrapping" section of CONTRIBUTING.md. + EOS exit 1 fi if [ ! -w "$SCRIPT" ]; then - echo "You do not have permission to upgrade the installation in $SCRIPT" + msg "You do not have permission to upgrade the installation in $SCRIPT" exit 1 else TARGET_VERSION="${2:-stable}" @@ -272,7 +288,7 @@ case "$RESP" in y|Y|"") echo - echo "Upgrading..." + msg "Upgrading..." TARGET="/tmp/lein-${$}-upgrade" if $cygwin; then TARGET=$(cygpath -w "$TARGET") @@ -282,15 +298,16 @@ if [ $? == 0 ]; then cmp -s "$TARGET" "$SCRIPT" if [ $? == 0 ]; then - echo "Leiningen is already up-to-date." + msg "Leiningen is already up-to-date." fi mv "$TARGET" "$SCRIPT" && chmod +x "$SCRIPT" + unset CLASSPATH exec "$SCRIPT" version else download_failed_message "$LEIN_SCRIPT_URL" fi;; *) - echo "Aborted." + msg "Aborted." exit 1;; esac fi @@ -306,7 +323,7 @@ fi if [ -n "$DEBUG" ]; then - echo "Leiningen's classpath: $CLASSPATH" + msg "Leiningen's classpath: $CLASSPATH" fi if [ -r .lein-fast-trampoline ]; then @@ -324,7 +341,7 @@ command_not_found "sha1sum or shasum" fi - export INPUT_CHECKSUM=$(echo "$INPUTS" | $SUM | cut -f 1 -d " ") + INPUT_CHECKSUM=$(echo "$INPUTS" | $SUM | cut -f 1 -d " ") # Just don't change :target-path in project.clj, mkay? TRAMPOLINE_FILE="target/trampolines/$INPUT_CHECKSUM" else @@ -343,7 +360,7 @@ if [ "$INPUT_CHECKSUM" != "" ] && [ -r "$TRAMPOLINE_FILE" ]; then if [ -n "$DEBUG" ]; then - echo "Fast trampoline with $TRAMPOLINE_FILE." + msg "Fast trampoline with $TRAMPOLINE_FILE." fi exec sh -c "exec $(cat "$TRAMPOLINE_FILE")" else @@ -353,6 +370,7 @@ -Dmaven.wagon.http.ssl.easy=false \ -Dmaven.wagon.rto=10000 \ $LEIN_JVM_OPTS \ + -Dleiningen.input-checksum="$INPUT_CHECKSUM" \ -Dleiningen.original.pwd="$ORIGINAL_PWD" \ -Dleiningen.script="$SCRIPT" \ -classpath "$CLASSPATH" \ diff -Nru leiningen-clojure-2.8.1/bin/lein.bat leiningen-clojure-2.9.0/bin/lein.bat --- leiningen-clojure-2.8.1/bin/lein.bat 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/bin/lein.bat 2019-02-11 00:27:53.000000000 +0000 @@ -2,7 +2,7 @@ setLocal EnableExtensions EnableDelayedExpansion -set LEIN_VERSION=2.8.1 +set LEIN_VERSION=2.9.0 if "%LEIN_VERSION:~-9%" == "-SNAPSHOT" ( set SNAPSHOT=YES @@ -154,7 +154,8 @@ call powershell -? >nul 2>&1 if NOT ERRORLEVEL 0 goto TRY_WGET set LAST_HTTP_CLIENT=powershell - powershell -Command "& {param($a,$f) $client = New-Object System.Net.WebClient; $client.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials; $client.DownloadFile($a, $f)}" ""%2"" ""%1"" + rem By default: Win7 = PS2, Win 8.0 = PS3 (maybe?), Win 8.1 = PS4, Win10 = PS5 + powershell -Command "& {param($a,$f) if (($PSVersionTable.PSVersion | Select-Object -ExpandProperty Major) -lt 4) { exit 111; } else { $client = New-Object System.Net.WebClient; [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $client.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials; $client.DownloadFile($a, $f); }}" ""%2"" ""%1"" SET RC=%ERRORLEVEL% goto EXITRC @@ -217,14 +218,35 @@ :DOWNLOAD_FAILED SET RC=3 +if "%ERRORLEVEL%" == "111" ( + echo. + echo You seem to be using an old version of PowerShell that + echo can't download files via TLS 1.2. + echo Please upgrade your PowerShell to at least version 4.0, e.g. via + echo https://www.microsoft.com/en-us/download/details.aspx?id=50395 + echo. + echo Alternatively you can manually download + echo %LEIN_JAR_URL% + echo and save it as + echo %LEIN_JAR% + echo. + echo If you have "curl" or "wget" you can try setting the HTTP_CLIENT + echo variable, but the TLS problem might still persist. + echo. + echo a^) set HTTP_CLIENT=wget -O + echo b^) set HTTP_CLIENT=curl -f -L -o + echo. + echo NOTE: Make sure to *not* add double quotes when setting the value + echo of HTTP_CLIENT + goto EXITRC +) +SET RC=3 del "%LEIN_JAR%.pending" >nul 2>&1 echo. echo Failed to download %LEIN_JAR_URL% echo. echo It is possible that the download failed due to "powershell", echo "curl" or "wget"'s inability to retrieve GitHub's security certificate. -echo The suggestions below do not check certificates, so use this only if -echo you understand the security implications of not doing so. echo. if "%LAST_HTTP_CLIENT%" == "powershell" ( @@ -233,8 +255,8 @@ echo the HTTP_CLIENT environment variable with one of the following echo values: echo. - echo a^) set HTTP_CLIENT=wget --no-check-certificate -O - echo b^) set HTTP_CLIENT=curl -f -L -k -o + echo a^) set HTTP_CLIENT=wget -O + echo b^) set HTTP_CLIENT=curl -f -L -o echo. echo NOTE: Make sure to *not* add double quotes when setting the value echo of HTTP_CLIENT @@ -246,7 +268,7 @@ echo the HTTP_CLIENT environment variable with one of the following echo values: echo. - echo a^) set HTTP_CLIENT=wget --no-check-certificate -O + echo a^) set HTTP_CLIENT=wget -O echo. echo NOTE: Make sure to *not* add double quotes when setting the value echo of HTTP_CLIENT @@ -261,7 +283,7 @@ echo the HTTP_CLIENT environment variable with one of the following echo values: echo. - echo. a^) set HTTP_CLIENT=curl -f -L -k -o + echo. a^) set HTTP_CLIENT=curl -f -L -o echo. echo NOTE: make sure *not* to add double quotes to set the value of echo HTTP_CLIENT @@ -323,7 +345,7 @@ rem Note: Stale URL. HTTP 404. rem Alternative: wget64.exe compiled by J. Simoncic, rename to wget.exe rem MD5 1750c130c5daca8b347d3f7e34824c9b -rem Check: https://www.virustotal.com/en/file/abf507f8240ed41aac74c9df6de558c88c2f11d7770f0298135f1cc544b9c08b/analysis/ +rem Check: https://www.virustotal.com/en/file/abf507f8240ed41aac74c9df6de558c88c2f11d7770f02.8.4-SNAPSHOT5f1cc544b9c08b/analysis/ echo Wget: "https://eternallybored.org/misc/wget/" echo Curl: "http://curl.haxx.se/dlwiz/?type=bin&os=Win32&flav=-&ver=2000/XP" diff -Nru leiningen-clojure-2.8.1/bin/lein-pkg leiningen-clojure-2.9.0/bin/lein-pkg --- leiningen-clojure-2.8.1/bin/lein-pkg 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/bin/lein-pkg 2019-02-11 00:27:53.000000000 +0000 @@ -4,7 +4,7 @@ # It has all the cross-platform stuff stripped out as well as the # logic for running from a source checkout and self-install/upgrading. -export LEIN_VERSION="2.8.1" +export LEIN_VERSION="2.9.0" # cd to the project root, if applicable NOT_FOUND=1 @@ -50,7 +50,7 @@ grep -qsE 'defproject leiningen[[:space:]]+"[[:digit:].]+"' \ project.clj ;}; then CLASSPATH="$CLASSPATH":"$LEIN_JAR" - if [ "$LEIN_USE_BOOTCLASSPATH" != "" ]; then + if [ "$LEIN_USE_BOOTCLASSPATH" != "no" ]; then LEIN_JVM_OPTS="-Xbootclasspath/a:$LEIN_JAR $LEIN_JVM_OPTS" fi fi @@ -96,7 +96,7 @@ command_not_found "sha1sum or shasum" fi - export INPUT_CHECKSUM=$(echo "$INPUTS" | $SUM | cut -f 1 -d " ") + INPUT_CHECKSUM=$(echo "$INPUTS" | $SUM | cut -f 1 -d " ") # Just don't change :target-path in project.clj, mkay? TRAMPOLINE_FILE="target/trampolines/$INPUT_CHECKSUM" else @@ -123,6 +123,7 @@ -Dmaven.wagon.http.ssl.easy=false \ -Dmaven.wagon.rto=10000 \ $LEIN_JVM_OPTS \ + -Dleiningen.input-checksum="$INPUT_CHECKSUM" \ -Dleiningen.original.pwd="$ORIGINAL_PWD" \ -Dleiningen.script="$0" \ -classpath "$CLASSPATH" \ diff -Nru leiningen-clojure-2.8.1/bin/lein.ps1 leiningen-clojure-2.9.0/bin/lein.ps1 --- leiningen-clojure-2.8.1/bin/lein.ps1 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/bin/lein.ps1 2019-02-11 00:27:53.000000000 +0000 @@ -28,25 +28,37 @@ { for($dir = [IO.DirectoryInfo]"$PWD"; $dir.Parent; $dir = $dir.Parent) { - if(Test-Path (Join-Path $dir.FullName $file) -PathType Leaf) { cd $dir } + if(Test-Path (Join-Path $dir.FullName $file) -PathType Leaf) { cd $dir.FullName; break } } } function Initialize-Environment { - $env:LEIN_VERSION = '2.8.1' + $env:LEIN_VERSION = '2.9.0' $env:SNAPSHOT = if($env:LEIN_VERSION -like '*-SNAPSHOT'){'YES'}else{'NO'} #TODO: Still needed? $env:ORIGINAL_PWD = $PWD -replace '\\$','\\' Set-ParentLocation project.clj if(!$env:LEIN_HOME) {$env:LEIN_HOME = "$env:USERPROFILE\.lein"} if(!$env:LEIN_JAR) {$env:LEIN_JAR = "$env:LEIN_HOME\self-installs\leiningen-$env:LEIN_VERSION-standalone.jar"} - if(!([Net.WebRequest]::DefaultWebProxy.IsBypassed('https://github.com/'))) - { - $proxy = [Net.WebRequest]::DefaultWebProxy.GetProxy('https://github.com/') - Write-Verbose "Using proxy: $proxy" - $Script:PSBoundParameters = @{ - 'Invoke-WebRequest:Proxy' = $proxy - 'Invoke-WebRequest:ProxyUseDefaultCredentials' = $true + if($PSVersionTable.PSVersion.Major -gt 5) { + if(!($([System.Net.WebProxy]::new()).IsBypassed('https://github.com/'))) + { + $proxy = $([System.Net.WebProxy]::new()).GetProxy('https://github.com/') + Write-Verbose "Using proxy: $proxy" + $Script:PSBoundParameters = @{ + 'Invoke-WebRequest:Proxy' = $proxy + 'Invoke-WebRequest:ProxyUseDefaultCredentials' = $true + } + } + } else { + if(!([Net.WebRequest]::DefaultWebProxy.IsBypassed('https://github.com/'))) + { + $proxy = [Net.WebRequest]::DefaultWebProxy.GetProxy('https://github.com/') + Write-Verbose "Using proxy: $proxy" + $Script:PSBoundParameters = @{ + 'Invoke-WebRequest:Proxy' = $proxy + 'Invoke-WebRequest:ProxyUseDefaultCredentials' = $true + } } } } @@ -92,7 +104,7 @@ @{ # splatting Invoke-WebRequest due to long URI Uri = "https://github.com/technomancy/leiningen/releases/download/$env:LEIN_VERSION/leiningen-$env:LEIN_VERSION-standalone.zip" OutFile = $env:LEIN_JAR - } |% {Write-Progress 'Install-Self' $_.Uri -CurrentOperation "Downloading to $env:LEIN_JAR" ; Invoke-WebRequest @_} + } |% {Write-Progress 'Install-Self' $_.Uri -CurrentOperation "Downloading to $env:LEIN_JAR" ; [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest @_} Write-Progress 'Install-Self' -Completed } @@ -109,13 +121,9 @@ OutFile = "$PSCommandPath.pending" } |% {Write-Progress 'Update-Self' $_.Uri -CurrentOperation "Downloading to $PSCommandPath.pending" -PercentComplete 50 ; Invoke-WebRequest @_} Write-Progress 'Update-Self' -Completed - Install-Self - Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action { - rm "$PSScriptRoot\lein.cmd" - mv "$PSScriptRoot\lein.cmd.pending" "$PSScriptRoot\lein.cmd" - rm "$PSCommandPath.pending" - mv "$PSCommandPath" "$PSCommandPath.pending" - } + Move-Item "$PSScriptRoot\lein.cmd.pending" "$PSScriptRoot\lein.cmd" -force + Move-Item "$PSCommandPath.pending" "$PSCommandPath" -force + . "$PSCommandPath" self-install } function Invoke-Java diff -Nru leiningen-clojure-2.8.1/bin/lein-sdkman leiningen-clojure-2.9.0/bin/lein-sdkman --- leiningen-clojure-2.8.1/bin/lein-sdkman 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/bin/lein-sdkman 2019-02-11 00:27:53.000000000 +0000 @@ -2,7 +2,7 @@ # This variant of the lein script is meant for consumption by SDKMAN! # (i.e. a script which supports all platforms with bash installed) -export LEIN_VERSION="2.8.1" +export LEIN_VERSION="2.9.0" if [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]]; then delimiter=";" @@ -107,7 +107,7 @@ add_path CLASSPATH "$LEIN_JAR" -if [ "$LEIN_USE_BOOTCLASSPATH" != "" ]; then +if [ "$LEIN_USE_BOOTCLASSPATH" != "no" ]; then LEIN_JVM_OPTS="-Xbootclasspath/a:$LEIN_JAR $LEIN_JVM_OPTS" fi @@ -170,7 +170,7 @@ command_not_found "sha1sum or shasum" fi - export INPUT_CHECKSUM=$(echo "$INPUTS" | $SUM | cut -f 1 -d " ") + INPUT_CHECKSUM=$(echo "$INPUTS" | $SUM | cut -f 1 -d " ") # Just don't change :target-path in project.clj, mkay? TRAMPOLINE_FILE="target/trampolines/$INPUT_CHECKSUM" else @@ -199,6 +199,7 @@ -Dmaven.wagon.http.ssl.easy=false \ -Dmaven.wagon.rto=10000 \ $LEIN_JVM_OPTS \ + -Dleiningen.input-checksum="$INPUT_CHECKSUM" \ -Dleiningen.original.pwd="$ORIGINAL_PWD" \ -Dleiningen.script="$SCRIPT" \ -classpath "$CLASSPATH" \ diff -Nru leiningen-clojure-2.8.1/.circleci/config.yml leiningen-clojure-2.9.0/.circleci/config.yml --- leiningen-clojure-2.8.1/.circleci/config.yml 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/.circleci/config.yml 2019-02-11 00:27:53.000000000 +0000 @@ -3,7 +3,9 @@ build: working_directory: ~/leiningen docker: - - image: clojure:lein-2.7.1 + # somehow docker hub deleted the 2.8.1 image?! + # https://circleci.com/gh/technomancy/leiningen/1584 + - image: clojure:lein-2.8.0 steps: - checkout - restore_cache: diff -Nru leiningen-clojure-2.8.1/CONTRIBUTING.md leiningen-clojure-2.9.0/CONTRIBUTING.md --- leiningen-clojure-2.8.1/CONTRIBUTING.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/CONTRIBUTING.md 2019-02-11 00:27:53.000000000 +0000 @@ -21,13 +21,14 @@ is inappropriate. Simpler issues appropriate for first-time contributors looking to help out are tagged "newbie". -Patches are preferred as patches from `git format-patch` on the -mailing list or as GitHub pull requests. Please use topic branches -when sending pull requests rather than committing directly to master -in order to minimize unnecessary merge commit clutter. Direct pull +Code submissions should +be [sent](https://man.sr.ht/git.sr.ht/send-email.md) with `git +send-email` or as GitHub pull requests. Please use topic branches when +sending pull requests rather than committing directly to master in +order to minimize unnecessary merge commit clutter. Direct pull requests towards the master branch, not the stable branch. -Leiningen is [mirrored at GitLab](https://gitlab.org/technomancy/leiningen) +Leiningen is [mirrored at GitLab](https://gitlab.com/technomancy/leiningen) and [tested on CircleCI](https://circleci.com/gh/technomancy/leiningen). ## Codebase diff -Nru leiningen-clojure-2.8.1/debian/changelog leiningen-clojure-2.9.0/debian/changelog --- leiningen-clojure-2.8.1/debian/changelog 2018-10-20 15:56:55.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/changelog 2019-03-03 14:38:24.000000000 +0000 @@ -1,3 +1,13 @@ +leiningen-clojure (2.9.0-1) unstable; urgency=medium + + * New upstream version. + * Build Leiningen with JDK11 (Closes: #900299, #923164) + * Build Leiningen with Leiningen, and no longer build/install lein-core. + * Update autopkgtests to work with JDK11. + * Added a NEWS.Debian file to inform users of the JDK8 -> 11 changes. + + -- Elana Hashman Sun, 03 Mar 2019 14:38:24 +0000 + leiningen-clojure (2.8.1-9) unstable; urgency=medium * Fix dependency (libwagon2-java -> libwagon-java) in autopkgtests. diff -Nru leiningen-clojure-2.8.1/debian/control leiningen-clojure-2.9.0/debian/control --- leiningen-clojure-2.8.1/debian/control 2018-10-20 15:56:17.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/control 2019-03-03 14:38:24.000000000 +0000 @@ -7,30 +7,33 @@ debhelper (>= 11~), javahelper (>= 0.32), maven-debian-helper (>= 2.0), + leiningen, +# TODO: Remove? Seems to be needed for lein 2.8.1 to work + libtools-nrepl-clojure (>= 0.2.13), libmaven-install-plugin-java, bash-completion, - openjdk-8-jdk, - libclojure1.8-java, + openjdk-11-jdk, + libclojure-java (>= 1.10), # leiningen-core - libbultitude-clojure (>= 0.2.8), + libbultitude-clojure (>= 0.3.0-2), libclasslojure-clojure (>= 0.7.1), librobert-hooke-clojure (>= 1.3.0), - libpomegranate-clojure (>= 0.4.0), + libpomegranate-clojure (>= 1.1.0+really), libdynapath-clojure (>= 1.0.0), libcom-hypirion-io-clojure (>= 0.3.1), libtools-macro-clojure (>= 0.1.5), - libcomplete-clojure (>= 0.2.4), + libcomplete-clojure (>= 0.2.5), libwagon-java (>= 2.12), libslf4j-java (>= 1.7.22), # leiningen libdata-xml-clojure (>= 0.0.8), libstencil-clojure (>= 0.5.0), - libtools-nrepl-clojure (>= 0.2.12), + libnrepl-clojure (>= 0.6.0), libsjacket-clojure (>= 0.1.1), libparsley-clojure (>= 0.9.3), libscout-clojure (>= 0.1.1), libcommons-lang-java (>= 2.6), - libcommons-io-java (>= 2.5) + libcommons-io-java (>= 2.6) Standards-Version: 4.2.1 Vcs-Git: https://salsa.debian.org/clojure-team/leiningen-clojure.git Vcs-Browser: https://salsa.debian.org/clojure-team/leiningen-clojure @@ -41,10 +44,10 @@ Depends: ${java:Depends}, ${misc:Depends}, - openjdk-8-jre-headless + default-jre-headless Recommends: ${java:Recommends}, - openjdk-8-jdk-headless + default-jdk-headless Suggests: ${maven:OptionalDepends} Description: Automation tool and dependency manager for Clojure projects Working on Clojure projects with tools designed for Java can be an diff -Nru leiningen-clojure-2.8.1/debian/maven.rules leiningen-clojure-2.9.0/debian/maven.rules --- leiningen-clojure-2.8.1/debian/maven.rules 2017-12-21 18:06:50.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/maven.rules 2019-02-24 21:00:34.000000000 +0000 @@ -1 +1 @@ -org.clojure clojure* * s/1\.8\..*/1.8.x/ * * +org.clojure clojure* * s/1\.10\..*/1.10.x/ * * diff -Nru leiningen-clojure-2.8.1/debian/NEWS leiningen-clojure-2.9.0/debian/NEWS --- leiningen-clojure-2.8.1/debian/NEWS 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/NEWS 2019-03-03 14:38:24.000000000 +0000 @@ -0,0 +1,9 @@ +leiningen-clojure (2.9.0-1) unstable; urgency=medium + + Leiningen has been updated to build and run with JDK11 for the buster + release; however, some users may encounter performance degradations as a + result. If you wish, you can override the default Java command used by + Leiningen by exporting JAVA_CMD, for example: + export JAVA_CMD=/usr/lib/jvm/java-8-openjdk-amd64/bin/java + + -- Elana Hashman Sun, 03 Mar 2019 14:19:48 +0000 diff -Nru leiningen-clojure-2.8.1/debian/patches/0001-Build-in-offline-mode-with-local-repo.patch leiningen-clojure-2.9.0/debian/patches/0001-Build-in-offline-mode-with-local-repo.patch --- leiningen-clojure-2.8.1/debian/patches/0001-Build-in-offline-mode-with-local-repo.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0001-Build-in-offline-mode-with-local-repo.patch 2019-02-24 21:01:54.000000000 +0000 @@ -7,10 +7,10 @@ 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/project.clj b/project.clj -index fc32d11..606d727 100644 +index 45886f6..478409c 100644 --- a/project.clj +++ b/project.clj -@@ -36,4 +36,6 @@ +@@ -38,4 +38,6 @@ :offline (comp (partial not-any? identity) (juxt :online :disabled))} :source-paths ["leiningen-core/src" "src"] diff -Nru leiningen-clojure-2.8.1/debian/patches/0002-Fix-source-directory-in-POM.patch leiningen-clojure-2.9.0/debian/patches/0002-Fix-source-directory-in-POM.patch --- leiningen-clojure-2.8.1/debian/patches/0002-Fix-source-directory-in-POM.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0002-Fix-source-directory-in-POM.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -From: Elana Hashman -Date: Thu, 21 Dec 2017 02:46:56 +0000 -Subject: Fix source directory in POM - ---- - leiningen-core/pom.xml | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/leiningen-core/pom.xml b/leiningen-core/pom.xml -index eb05418..c82775e 100644 ---- a/leiningen-core/pom.xml -+++ b/leiningen-core/pom.xml -@@ -19,13 +19,15 @@ - - - -- src -- test - -+ -+ src -+ - - resources - - -+ test - - - resources diff -Nru leiningen-clojure-2.8.1/debian/patches/0002-Update-LEIN_JAR-location-to-match-installed-jar.patch leiningen-clojure-2.9.0/debian/patches/0002-Update-LEIN_JAR-location-to-match-installed-jar.patch --- leiningen-clojure-2.8.1/debian/patches/0002-Update-LEIN_JAR-location-to-match-installed-jar.patch 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0002-Update-LEIN_JAR-location-to-match-installed-jar.patch 2019-02-24 21:01:32.000000000 +0000 @@ -0,0 +1,21 @@ +From: Elana Hashman +Date: Thu, 21 Dec 2017 17:19:56 +0000 +Subject: Update LEIN_JAR location to match installed jar + +--- + bin/lein-pkg | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bin/lein-pkg b/bin/lein-pkg +index 8f33656..2bcdb05 100644 +--- a/bin/lein-pkg ++++ b/bin/lein-pkg +@@ -43,7 +43,7 @@ LEIN_JVM_OPTS="${LEIN_JVM_OPTS:-'-Xms64m -Xmx512m'}" + # If you're not using an uberjar you'll need to list each dependency + # and add them individually to the classpath/bootclasspath as well. + +-LEIN_JAR=/usr/share/java/leiningen-$LEIN_VERSION-standalone.jar ++LEIN_JAR=/usr/share/java/leiningen-$LEIN_VERSION.jar + + # Do not use installed leiningen jar during self-compilation + if ! { [ "$1" = "compile" ] && diff -Nru leiningen-clojure-2.8.1/debian/patches/0003-Build-leiningen-core-offline.patch leiningen-clojure-2.9.0/debian/patches/0003-Build-leiningen-core-offline.patch --- leiningen-clojure-2.8.1/debian/patches/0003-Build-leiningen-core-offline.patch 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0003-Build-leiningen-core-offline.patch 2019-02-24 21:14:19.000000000 +0000 @@ -0,0 +1,20 @@ +From: Elana Hashman +Date: Sun, 24 Feb 2019 21:00:29 +0000 +Subject: Build leiningen-core offline + +--- + leiningen-core/project.clj | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/leiningen-core/project.clj b/leiningen-core/project.clj +index 18c8b30..310d52d 100644 +--- a/leiningen-core/project.clj ++++ b/leiningen-core/project.clj +@@ -21,4 +21,6 @@ + :scm {:dir ".."} + :dev-resources-path "dev-resources" + :aliases {"bootstrap" ["with-profile" "base" +- "do" "install," "classpath" ".lein-bootstrap"]}) ++ "do" "install," "classpath" ".lein-bootstrap"]} ++ :offline? true ++ :local-repo "../debian/maven-repo") diff -Nru leiningen-clojure-2.8.1/debian/patches/0003-Update-LEIN_JAR-location-to-match-installed-jar.patch leiningen-clojure-2.9.0/debian/patches/0003-Update-LEIN_JAR-location-to-match-installed-jar.patch --- leiningen-clojure-2.8.1/debian/patches/0003-Update-LEIN_JAR-location-to-match-installed-jar.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0003-Update-LEIN_JAR-location-to-match-installed-jar.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -From: Elana Hashman -Date: Thu, 21 Dec 2017 17:19:56 +0000 -Subject: Update LEIN_JAR location to match installed jar - ---- - bin/lein-pkg | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/bin/lein-pkg b/bin/lein-pkg -index 6f06ff9..de113fc 100644 ---- a/bin/lein-pkg -+++ b/bin/lein-pkg -@@ -43,7 +43,7 @@ LEIN_JVM_OPTS="${LEIN_JVM_OPTS:-'-Xms64m -Xmx512m'}" - # If you're not using an uberjar you'll need to list each dependency - # and add them individually to the classpath/bootclasspath as well. - --LEIN_JAR=/usr/share/java/leiningen-$LEIN_VERSION-standalone.jar -+LEIN_JAR=/usr/share/java/leiningen-$LEIN_VERSION.jar - - # Do not use installed leiningen jar during self-compilation - if ! { [ "$1" = "compile" ] && diff -Nru leiningen-clojure-2.8.1/debian/patches/0004-Bump-commons-io-version.patch leiningen-clojure-2.9.0/debian/patches/0004-Bump-commons-io-version.patch --- leiningen-clojure-2.8.1/debian/patches/0004-Bump-commons-io-version.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0004-Bump-commons-io-version.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -From: Elana Hashman -Date: Sun, 11 Feb 2018 16:16:45 -0500 -Subject: Bump commons-io version - ---- - project.clj | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/project.clj b/project.clj -index 606d727..488f292 100644 ---- a/project.clj -+++ b/project.clj -@@ -23,7 +23,7 @@ - ;; bump versions of various common transitive deps - [net.cgrand/parsley "0.9.3" :exclusions [org.clojure/clojure]] - [scout "0.1.1"] -- [commons-io "2.5"]] -+ [commons-io "2.6"]] - ;; checkout-deps don't work with :eval-in :leiningen - :profiles {:dev {:resource-paths ["leiningen-core/dev-resources"] - :test-paths ["leiningen-core/test"]} diff -Nru leiningen-clojure-2.8.1/debian/patches/0005-Make-run-script-use-Java-8.patch leiningen-clojure-2.9.0/debian/patches/0005-Make-run-script-use-Java-8.patch --- leiningen-clojure-2.8.1/debian/patches/0005-Make-run-script-use-Java-8.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0005-Make-run-script-use-Java-8.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -From: Elana Hashman -Date: Sat, 14 Apr 2018 01:42:23 +0000 -Subject: Make run script use Java 8 - ---- - bin/lein-pkg | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/bin/lein-pkg b/bin/lein-pkg -index de113fc..da662da 100644 ---- a/bin/lein-pkg -+++ b/bin/lein-pkg -@@ -27,7 +27,10 @@ export LEIN_HOME="${LEIN_HOME:-"$HOME/.lein"}" - - # Support $JAVA_OPTS for backwards-compatibility. - JVM_OPTS=${JVM_OPTS:-"$JAVA_OPTS"} --JAVA_CMD=${JAVA_CMD:-"java"} -+ -+# NOTE(Debian): Force Java 8 usage for performance and compatibility -+# See https://salsa.debian.org/clojure-team/leiningen-clojure/issues/1 -+JAVA_CMD=${JAVA_CMD:-"/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)/bin/java"} - - for f in "/etc/leinrc" "$LEIN_HOME/leinrc" ".leinrc"; do - if [ -e "$f" ]; then diff -Nru leiningen-clojure-2.8.1/debian/patches/0006-Upgrade-clojure.tools.nrepl.patch leiningen-clojure-2.9.0/debian/patches/0006-Upgrade-clojure.tools.nrepl.patch --- leiningen-clojure-2.8.1/debian/patches/0006-Upgrade-clojure.tools.nrepl.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0006-Upgrade-clojure.tools.nrepl.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -From: Elana Hashman -Date: Sun, 24 Jun 2018 15:30:05 -0400 -Subject: Upgrade clojure.tools.nrepl - ---- - leiningen-core/src/leiningen/core/project.clj | 2 +- - project.clj | 2 +- - resources/leiningen/bootclasspath-deps.clj | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/leiningen-core/src/leiningen/core/project.clj b/leiningen-core/src/leiningen/core/project.clj -index c27e361..1f30d8e 100644 ---- a/leiningen-core/src/leiningen/core/project.clj -+++ b/leiningen-core/src/leiningen/core/project.clj -@@ -537,7 +537,7 @@ - :test-selectors {:default (with-meta '(constantly true) - {:displace true})} - ;; bump deps in leiningen's own project.clj with these -- :dependencies '[^:displace [org.clojure/tools.nrepl "0.2.12" -+ :dependencies '[^:displace [org.clojure/tools.nrepl "0.2.13" - :exclusions [org.clojure/clojure]] - ^:displace [clojure-complete "0.2.4" - :exclusions [org.clojure/clojure]]] -diff --git a/project.clj b/project.clj -index 488f292..5352131 100644 ---- a/project.clj -+++ b/project.clj -@@ -17,7 +17,7 @@ - ;; needed for uberjar - [commons-lang "2.6"] - ;; needed for repl -- [org.clojure/tools.nrepl "0.2.12"] -+ [org.clojure/tools.nrepl "0.2.13"] - ;; needed for change - [net.cgrand/sjacket "0.1.1" :exclusions [org.clojure/clojure]] - ;; bump versions of various common transitive deps -diff --git a/resources/leiningen/bootclasspath-deps.clj b/resources/leiningen/bootclasspath-deps.clj -index 88034c5..527048a 100644 ---- a/resources/leiningen/bootclasspath-deps.clj -+++ b/resources/leiningen/bootclasspath-deps.clj -@@ -54,7 +54,7 @@ - org.apache.maven/maven-resolver-provider "3.5.0" - org.clojure/data.xml "0.0.8" - org.clojure/tools.macro "0.1.5" -- org.clojure/tools.nrepl "0.2.12" -+ org.clojure/tools.nrepl "0.2.13" - org.codehaus.plexus/plexus-component-annotations "1.7.1" - org.codehaus.plexus/plexus-interpolation "1.24" - org.codehaus.plexus/plexus-utils "3.0.24" diff -Nru leiningen-clojure-2.8.1/debian/patches/0007-Bump-version-of-reply-and-clojure-complete.patch leiningen-clojure-2.9.0/debian/patches/0007-Bump-version-of-reply-and-clojure-complete.patch --- leiningen-clojure-2.8.1/debian/patches/0007-Bump-version-of-reply-and-clojure-complete.patch 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/0007-Bump-version-of-reply-and-clojure-complete.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -From: xtreak -Date: Mon, 5 Feb 2018 06:25:27 +0000 -Subject: Bump version of reply and clojure-complete - ---- - leiningen-core/src/leiningen/core/project.clj | 2 +- - leiningen-core/test/leiningen/core/test/project.clj | 2 +- - resources/leiningen/bootclasspath-deps.clj | 2 +- - src/leiningen/repl.clj | 4 ++-- - 4 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/leiningen-core/src/leiningen/core/project.clj b/leiningen-core/src/leiningen/core/project.clj -index 1f30d8e..f25bb13 100644 ---- a/leiningen-core/src/leiningen/core/project.clj -+++ b/leiningen-core/src/leiningen/core/project.clj -@@ -539,7 +539,7 @@ - ;; bump deps in leiningen's own project.clj with these - :dependencies '[^:displace [org.clojure/tools.nrepl "0.2.13" - :exclusions [org.clojure/clojure]] -- ^:displace [clojure-complete "0.2.4" -+ ^:displace [clojure-complete "0.2.5" - :exclusions [org.clojure/clojure]]] - :checkout-deps-shares [:source-paths - :test-paths -diff --git a/leiningen-core/test/leiningen/core/test/project.clj b/leiningen-core/test/leiningen/core/test/project.clj -index 27d2131..dc80b8a 100755 ---- a/leiningen-core/test/leiningen/core/test/project.clj -+++ b/leiningen-core/test/leiningen/core/test/project.clj -@@ -45,7 +45,7 @@ - [clj-http/clj-http "3.4.1"] - [org.clojure/tools.nrepl "0.2.12" - :exclusions [[org.clojure/clojure]]] -- [clojure-complete/clojure-complete "0.2.4" -+ [clojure-complete/clojure-complete "0.2.5" - :exclusions [[org.clojure/clojure]]]], - :twelve 12 ; testing unquote - -diff --git a/resources/leiningen/bootclasspath-deps.clj b/resources/leiningen/bootclasspath-deps.clj -index 527048a..2cad1ee 100644 ---- a/resources/leiningen/bootclasspath-deps.clj -+++ b/resources/leiningen/bootclasspath-deps.clj -@@ -21,7 +21,7 @@ - (pp/pprint)))) - { - bultitude "0.2.8" -- clojure-complete "0.2.4" -+ clojure-complete "0.2.5" - com.cemerick/pomegranate "0.4.0-alpha1" - com.google.guava/guava "20.0" - com.hypirion/io "0.3.1" -diff --git a/src/leiningen/repl.clj b/src/leiningen/repl.clj -index 8f6dc6c..314ec1c 100644 ---- a/src/leiningen/repl.clj -+++ b/src/leiningen/repl.clj -@@ -198,9 +198,9 @@ - - (def reply-profile - {:dependencies -- '[^:displace [reply "0.3.7" -+ '[^:displace [reply "0.3.8" - :exclusions [org.clojure/clojure ring/ring-core]] -- [clojure-complete "0.2.4"]]}) -+ [clojure-complete "0.2.5"]]}) - - (defn- trampoline-repl [project port] - (let [init-option (get-in project [:repl-options :init]) diff -Nru leiningen-clojure-2.8.1/debian/patches/series leiningen-clojure-2.9.0/debian/patches/series --- leiningen-clojure-2.8.1/debian/patches/series 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/patches/series 2019-02-25 04:13:36.000000000 +0000 @@ -1,7 +1,3 @@ 0001-Build-in-offline-mode-with-local-repo.patch -0002-Fix-source-directory-in-POM.patch -0003-Update-LEIN_JAR-location-to-match-installed-jar.patch -0004-Bump-commons-io-version.patch -0005-Make-run-script-use-Java-8.patch -0006-Upgrade-clojure.tools.nrepl.patch -0007-Bump-version-of-reply-and-clojure-complete.patch +0002-Update-LEIN_JAR-location-to-match-installed-jar.patch +0003-Build-leiningen-core-offline.patch diff -Nru leiningen-clojure-2.8.1/debian/rules leiningen-clojure-2.9.0/debian/rules --- leiningen-clojure-2.8.1/debian/rules 2018-08-18 21:09:16.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/rules 2019-02-24 21:36:28.000000000 +0000 @@ -5,68 +5,13 @@ export DEBUG=1 export LEIN_HOME=$(CURDIR)/.lein -export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-$(DEB_HOST_ARCH) - -# Jars needed to bootstrap leiningen, one per line, with debian/maven-repo/ -# removed. -BOOTSTRAP_JARS=leiningen-core/leiningen-core/$(DEB_VERSION_UPSTREAM)/leiningen-core-$(DEB_VERSION_UPSTREAM).jar \ - bultitude/bultitude/debian/bultitude-debian.jar \ - clojure-complete/clojure-complete/debian/clojure-complete-debian.jar \ - com/cemerick/pomegranate/debian/pomegranate-debian.jar \ - com/google/guava/guava/debian/guava-debian.jar \ - javax/inject/javax.inject/debian/javax.inject-debian.jar \ - com/hypirion/io/debian/io-debian.jar \ - commons-codec/commons-codec/debian/commons-codec-debian.jar \ - commons-io/commons-io/debian/commons-io-debian.jar \ - commons-logging/commons-logging/debian/commons-logging-debian.jar \ - org/apache/commons/commons-lang3/debian/commons-lang3-debian.jar \ - org/apache/httpcomponents/httpclient/debian/httpclient-debian.jar \ - org/apache/httpcomponents/httpcore/debian/httpcore-debian.jar \ - org/apache/maven/maven-artifact/3.x/maven-artifact-3.x.jar \ - org/apache/maven/maven-builder-support/3.x/maven-builder-support-3.x.jar \ - org/apache/maven/maven-model/3.x/maven-model-3.x.jar \ - org/apache/maven/maven-model-builder/3.x/maven-model-builder-3.x.jar \ - org/apache/maven/maven-repository-metadata/3.x/maven-repository-metadata-3.x.jar \ - org/apache/maven/maven-resolver-provider/3.x/maven-resolver-provider-3.x.jar \ - org/apache/maven/resolver/maven-resolver-api/debian/maven-resolver-api-debian.jar \ - org/apache/maven/resolver/maven-resolver-connector-basic/debian/maven-resolver-connector-basic-debian.jar \ - org/apache/maven/resolver/maven-resolver-impl/debian/maven-resolver-impl-debian.jar \ - org/apache/maven/resolver/maven-resolver-spi/debian/maven-resolver-spi-debian.jar \ - org/apache/maven/resolver/maven-resolver-transport-file/debian/maven-resolver-transport-file-debian.jar \ - org/apache/maven/resolver/maven-resolver-transport-http/debian/maven-resolver-transport-http-debian.jar \ - org/apache/maven/resolver/maven-resolver-transport-wagon/debian/maven-resolver-transport-wagon-debian.jar \ - org/apache/maven/resolver/maven-resolver-util/debian/maven-resolver-util-debian.jar \ - org/apache/maven/wagon/wagon-http/debian/wagon-http-debian.jar \ - org/apache/maven/wagon/wagon-http-shared/debian/wagon-http-shared-debian.jar \ - org/apache/maven/wagon/wagon-provider-api/debian/wagon-provider-api-debian.jar \ - org/clojure/clojure/debian/clojure-debian.jar \ - org/clojure/tools.macro/debian/tools.macro-debian.jar \ - org/clojure/tools.macro/debian/tools.nrepl-debian.jar \ - org/codehaus/plexus/plexus-component-annotations/debian/plexus-component-annotations-debian.jar \ - org/codehaus/plexus/plexus-interpolation/debian/plexus-interpolation-debian.jar \ - org/codehaus/plexus/plexus-utils/2.x/plexus-utils-2.x.jar \ - org/flatland/classlojure/debian/classlojure-debian.jar \ - org/jsoup/jsoup/debian/jsoup-debian.jar \ - org/slf4j/jcl-over-slf4j/debian/jcl-over-slf4j-debian.jar \ - org/slf4j/slf4j-api/debian/slf4j-api-debian.jar \ - org/slf4j/slf4j-nop/debian/slf4j-nop-debian.jar \ - org/tcrawley/dynapath/debian/dynapath-debian.jar \ - robert/hooke/debian/hooke-debian.jar - -# Generate LEIN_BOOTSTRAP from BOOTSTRAP_JARS -BOOTSTRAP_PATHS=$(foreach jar,$(BOOTSTRAP_JARS),debian/maven-repo/$(jar)) -EMPTY := -SPACE := $(EMPTY) $(EMPTY) -LEIN_BOOTSTRAP=$(subst $(SPACE),:,$(BOOTSTRAP_PATHS)) +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-$(DEB_HOST_ARCH) %: dh $@ --with bash-completion --with javahelper --buildsystem=maven override_dh_auto_build: - cp resources/leiningen/bootclasspath-deps.clj \ - leiningen-core/src/leiningen/bootclasspath-deps.clj - dh_auto_build -- -f leiningen-core/pom.xml install - echo $(LEIN_BOOTSTRAP) > leiningen-core/.lein-bootstrap + cd leiningen-core && lein bootstrap chmod a+x bin/lein bin/lein uberjar bin/lein pom @@ -74,17 +19,16 @@ cp bin/lein-pkg bin/lein cp zsh_completion.zsh _lein -override_dh_auto_test: - dh_auto_test -- -f leiningen-core/pom.xml test - override_dh_auto_install: - dh_auto_install -- -f leiningen-core/pom.xml mh_installjar -pleiningen -l pom.xml target/leiningen-$(DEB_VERSION_UPSTREAM)-standalone.jar mh_installpom -pleiningen pom.xml +override_dh_auto_test: + dh_auto_test -- -f leiningen-core/pom.xml test + override_dh_auto_clean: - rm -f leiningen-core/src/leiningen/bootclasspath-deps.clj - dh_auto_clean -- -f leiningen-core/pom.xml clean + dh_auto_clean + cd leiningen-core && lein clean rm -f leiningen-core/.lein-bootstrap rm -f .lein-project-checksum rm -f .lein-classpath diff -Nru leiningen-clojure-2.8.1/debian/tests/control leiningen-clojure-2.9.0/debian/tests/control --- leiningen-clojure-2.8.1/debian/tests/control 2018-10-20 15:38:20.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/tests/control 2019-03-03 14:13:14.000000000 +0000 @@ -1,6 +1,2 @@ -Depends: @, clojure1.8, libbultitude-clojure, libclasslojure-clojure, librobert-hooke-clojure, libpomegranate-clojure, libdynapath-clojure, libcom-hypirion-io-clojure, libtools-macro-clojure, libcomplete-clojure, libwagon-java, libslf4j-java -Restrictions: allow-stderr -Tests: import-core - -Depends: @, bash +Depends: @, bash, openjdk-11-jre-headless Tests: test-lein diff -Nru leiningen-clojure-2.8.1/debian/tests/import-core leiningen-clojure-2.9.0/debian/tests/import-core --- leiningen-clojure-2.8.1/debian/tests/import-core 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/tests/import-core 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -#!/bin/sh - -CLASSPATH="/usr/share/maven-repo/org/clojure/clojure/1.8.0/clojure-1.8.0.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-transport-wagon/debian/maven-resolver-transport-wagon-debian.jar:/usr/share/maven-repo/org/clojure/tools.macro/0.1.5/tools.macro-0.1.5.jar:/usr/share/maven-repo/org/apache/maven/maven-resolver-provider/3.x/maven-resolver-provider-3.x.jar:/usr/share/maven-repo/org/codehaus/plexus/plexus-interpolation/debian/plexus-interpolation-debian.jar:/usr/share/maven-repo/org/apache/commons/commons-lang3/debian/commons-lang3-debian.jar:/usr/share/maven-repo/com/hypirion/io/0.3.1/io-0.3.1.jar:/usr/share/maven-repo/org/apache/maven/wagon/wagon-provider-api/debian/wagon-provider-api-debian.jar:/usr/share/maven-repo/org/clojure/tools.nrepl/0.2.12/tools.nrepl-0.2.12.jar:/usr/share/maven-repo/clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.jar:/usr/share/maven-repo/robert/hooke/1.3.0/hooke-1.3.0.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-impl/debian/maven-resolver-impl-debian.jar:/usr/share/maven-repo/org/slf4j/slf4j-api/debian/slf4j-api-debian.jar:/usr/share/maven-repo/org/tcrawley/dynapath/1.0.0/dynapath-1.0.0.jar:/usr/share/maven-repo/org/jsoup/jsoup/debian/jsoup-debian.jar:/usr/share/maven-repo/org/codehaus/plexus/plexus-component-annotations/debian/plexus-component-annotations-debian.jar:/usr/share/maven-repo/org/apache/httpcomponents/httpcore/debian/httpcore-debian.jar:/usr/share/maven-repo/org/slf4j/slf4j-nop/1.7.25/slf4j-nop-1.7.25.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-api/debian/maven-resolver-api-debian.jar:/usr/share/maven-repo/org/apache/maven/maven-repository-metadata/3.x/maven-repository-metadata-3.x.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-transport-file/debian/maven-resolver-transport-file-debian.jar:/usr/share/maven-repo/org/apache/maven/maven-builder-support/3.x/maven-builder-support-3.x.jar:/usr/share/maven-repo/commons-logging/commons-logging/debian/commons-logging-debian.jar:/usr/share/maven-repo/com/google/guava/guava/debian/guava-debian.jar:/usr/share/maven-repo/commons-io/commons-io/debian/commons-io-debian.jar:/usr/share/maven-repo/org/apache/maven/wagon/wagon-http-shared/debian/wagon-http-shared-debian.jar:/usr/share/maven-repo/bultitude/bultitude/0.2.8/bultitude-0.2.8.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-spi/debian/maven-resolver-spi-debian.jar:/usr/share/maven-repo/org/apache/httpcomponents/httpclient/debian/httpclient-debian.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-util/debian/maven-resolver-util-debian.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-transport-http/debian/maven-resolver-transport-http-debian.jar:/usr/share/maven-repo/org/slf4j/jcl-over-slf4j/debian/jcl-over-slf4j-debian.jar:/usr/share/maven-repo/org/apache/maven/maven-model/3.x/maven-model-3.x.jar:/usr/share/maven-repo/org/apache/maven/maven-model-builder/3.x/maven-model-builder-3.x.jar:/usr/share/maven-repo/org/apache/maven/wagon/wagon-http/debian/wagon-http-debian.jar:/usr/share/maven-repo/org/apache/maven/maven-artifact/3.x/maven-artifact-3.x.jar:/usr/share/maven-repo/org/flatland/classlojure/0.7.1/classlojure-0.7.1.jar:/usr/share/maven-repo/org/codehaus/plexus/plexus-utils/2.x/plexus-utils-2.x.jar:/usr/share/maven-repo/org/apache/maven/resolver/maven-resolver-connector-basic/debian/maven-resolver-connector-basic-debian.jar:/usr/share/maven-repo/commons-codec/commons-codec/debian/commons-codec-debian.jar:/usr/share/maven-repo/com/cemerick/pomegranate/1.0.0/pomegranate-1.0.0.jar" - -for lib in classpath eval main pedantic project ssl user utils; do - clojure -cp /usr/share/maven-repo/leiningen-core/leiningen-core/2.8.1/leiningen-core-2.8.1.jar:$CLASSPATH -e "(use 'leiningen.core.$lib)" -done diff -Nru leiningen-clojure-2.8.1/debian/tests/test-lein leiningen-clojure-2.9.0/debian/tests/test-lein --- leiningen-clojure-2.8.1/debian/tests/test-lein 2018-08-18 20:59:53.000000000 +0000 +++ leiningen-clojure-2.9.0/debian/tests/test-lein 2019-03-03 14:10:24.000000000 +0000 @@ -18,30 +18,30 @@ HELP_TEXT="Leiningen is a tool for working with Clojure projects. Several tasks are available: -change Rewrite project.clj by applying a function. +change Rewrite project.clj with f applied to the value at key-or-path. check Check syntax and warn on reflection. -classpath Print the classpath of the current project. -clean Remove all files from project's target-path. +classpath Write the classpath of the current project to output-file. +clean Removes all files from paths in clean-targets for a project compile Compile Clojure source into .class files. -deploy Build and deploy jar to remote repository. -deps Download all dependencies. +deploy Deploy jar and pom to remote repository. +deps Show details about dependencies. do Higher-order task to perform other tasks in succession. -help Display a list of tasks or help for a given task. -install Install the current project to the local repository. +help Display a list of tasks or help for a given task or subtask. +install Install jar and pom to the local repository; typically ~/.m2. jar Package up all the project's files into a jar file. javac Compile Java source files. -new Generate project scaffolding based on a template. +new Generate scaffolding for a new project based on a template. plugin DEPRECATED. Please use the :user profile instead. pom Write a pom.xml file to disk for Maven interoperability. -release Perform :release-tasks. +release Perform release tasks. repl Start a repl session either with the current project or standalone. retest Run only the test namespaces which failed last time around. -run Run a -main function with optional command-line arguments. +run Run the project's -main function. search Search Central and Clojars for published artifacts. show-profiles List all available profiles or display one if given an argument. test Run the project's tests. trampoline Run a task without nesting the project's JVM inside Leiningen's. -uberjar Package up the project files and dependencies into a jar file. +uberjar Package up the project files and all dependencies into a jar file. update-in Perform arbitrary transformations on your project map. upgrade Upgrade Leiningen to specified version or latest stable. vcs Interact with the version control system. diff -Nru leiningen-clojure-2.8.1/doc/DEPLOY.md leiningen-clojure-2.9.0/doc/DEPLOY.md --- leiningen-clojure-2.8.1/doc/DEPLOY.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/doc/DEPLOY.md 2019-02-11 00:27:53.000000000 +0000 @@ -154,7 +154,7 @@ ```clj {#"blueant" {:password "locative1"} - #"https://clojars.org/repo" + #"https://repo.clojars.org" {:username "milgrim" :password "locative1"} "s3p://s3-repo-bucket/releases" {:username "AKIAIN..." :passphrase "1TChrGK4s..."}} @@ -236,7 +236,8 @@ your `project.clj`: ```clj -{:deploy-repositories [["releases" :clojars]]} +{:deploy-repositories [["releases" :clojars] + ["snapshots" :clojars]]} ``` You can use this to alias any `:repositories` entry; Clojars is just the most @@ -324,6 +325,13 @@ that are varied enough that Leiningen doesn't attempt to support them out of the box. +If you just want to change the `deploy` step so it goes to Clojars, you don't +have to replace the whole `:release-tasks` vector, just set this: + +```clojure +:deploy-repositories {"releases" {:url "https://repo.clojars.org" :creds :gpg}} +``` + ### Committing By default, `["vcs" "commit"]` will commit with the message `"Version diff -Nru leiningen-clojure-2.8.1/doc/FAQ.md leiningen-clojure-2.9.0/doc/FAQ.md --- leiningen-clojure-2.8.1/doc/FAQ.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/doc/FAQ.md 2019-02-11 00:27:53.000000000 +0000 @@ -126,7 +126,7 @@ compilation (which only benefits long-running processes). This can negatively affect performance in the long run, or lead to inaccurate benchmarking results. If want the JVM to fully optimize, you can - you can switch profiles with `lein with-profiles production run ...`. + switch profiles with `lein with-profiles production run ...`. **Q:** I'm attempting to run a project as a background process (`lein run &`), but the process suspends until it is in the foreground. How do I run a program @@ -147,7 +147,7 @@ **Q:** How do I determine my project's version at runtime? **A:** Leiningen writes a file called `pom.properties` into - `target/classes` which contains a the version number and current git + `target/classes` which contains the version number and current git revision of the project. In previous versions of Leiningen this was only available when running from jar files, but as of 2.4.1 it's available during `lein run ...`, etc. You can read it by running @@ -193,7 +193,7 @@ arg1 arg2 [...]` without any AOT, but it will take longer to launch. **Q:** Why does `lein jar` package some namespaces from dependencies into my jar? -**A:** This is likely because you have AOT-compiled its namespaces. An +**A:** This is likely because you have AOT-compiled namespaces. An AOT-compiled namespace can only depend on AOT-compiled namespaces. Therefore, if you depend on a namespace in a dependency that is not AOT-compiled, it will be AOT-compiled and bundled with the jar. It is strongly recommended not to @@ -214,6 +214,13 @@ "java.specification.version")` to use the JVM version or any other property. +**Q:** What does `Received fatal alert: protocol_version` mean when + trying to access Clojars? +**A:** This usually means your JVM is not configured to use TLSv1.2, which is + used by Clojars' CDN. It's strongly recommended to upgrade to at least Java 8, + but if this is not feasible, you can fix it by exporting + `LEIN_JVM_OPTS=-Dhttps.protocols=TLSv1.2` as an environment variable. + **Q:** I get a `java.security.KeyException` or `sun.security.provider.certpath.SunCertPathBuilderException` when running `lein` **A:** The `java.security.KeyException` indicates an ssl error when trying to communicate with the HTTPS server via Java. This could be because you need to update the JDK, or some other package (e.g. with old versions of the nss package). @@ -225,10 +232,11 @@ **Q:** I got `Tried to use insecure HTTP repository without TLS`, what is that about? **A:** This means your project was configured to download dependencies from a repository that does not use TLS encryption. This is very -insecure and exposes you to trivially-executed man-in-the-middle attacks. -In the rare event that you don't care about the security of the machines -running your project, you can re-enable support for unprotected repositories -by putting this in your `project.clj` file: +insecure and exposes you to trivially-executed man-in-the-middle +attacks. In the rare event that you don't care about the security of +the machines running your project or can ensure that the only http +traffic is going out over a trusted network, you can re-enable support +for unsafe repositories by putting this in your `project.clj` file: ;; never do this (require 'cemerick.pomegranate.aether) @@ -244,10 +252,10 @@ **A:** You probably downloaded `lein`/`lein.bat` from the [master branch](https://github.com/technomancy/leiningen/tree/master/bin). Unless you plan to build leiningen yourself or help develop it, we suggest you use the latest stable version: [lein](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein)/[lein.bat](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat) **Q:** I have a dependency whose group ID and/or artifact ID starts with a - number (which is invalid for symbols in Clojure). How can I add it to my - project's dependencies? +number (which is invalid for symbols in Clojure). How can I add it to my +project's dependencies? **A:** As of version 2.8.0, Leiningen supports string dependency names like - this: +this: ```clj :dependencies [["net.3scale/3scale-api" "3.0.2"]] @@ -258,3 +266,15 @@ ```clj :dependencies [[~(symbol "net.3scale" "3scale-api") "3.0.2"]] ``` + +**Q:** I'm getting warnings for implicit hooks or implicit middleware. +**A:** Hooks are a deprecated feature where plugins can modify the +behavior of built-in Leiningen functionality; they result in +situations which can be very difficult to debug and usually point +to situations in which the original API is not flexible enough. + +Leiningen also has a deprecated feature for implicitly loading +middleware. Middleware is not deprecated but should now be declared using +`:middleware` instead of being auto-detected from plugins. + +Adding `:implicits false` to `project.clj` will disable all implicit features. diff -Nru leiningen-clojure-2.8.1/doc/PLUGINS.md leiningen-clojure-2.9.0/doc/PLUGINS.md --- leiningen-clojure-2.8.1/doc/PLUGINS.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/doc/PLUGINS.md 2019-02-11 00:27:53.000000000 +0000 @@ -377,11 +377,6 @@ ### Project Middleware -**Note**: Leiningen supports project middleware in plugins; -however this mechanism is extremely error-prone and difficult to -debug. It should be considered deprecated as of 2.8.0 onward and will -continue to work until version 3.0 but is strongly advised against. - Project middleware is just a function that is called on a project map returning a new project map. Middleware gives a plugin the power to do any kind of transformation on the project map. However, problems with @@ -394,7 +389,7 @@ but only if there are any java source paths in the project: ```clj -(ns lein-inject.plugin +(ns leiningen.inject (:require [leiningen.core.project :as p])) (def javac-params-profile @@ -406,12 +401,12 @@ project)) ``` +Projects use middleware by adding `:middleware` as a vector of var +names into their `project.clj`: -Like hooks, middleware will be applied automatically for plugins if you put it -in `plugin-name.plugin/middleware`. You can also load middleware manually by -setting the `:middleware` key in project.clj to a seq of vars to call to -transform your project map. Note that automatic middleware is applied before -manually specified middleware. +```clj + :middleware [leiningen.inject/middleware] +``` Also note that the currently active middleware depends on which profiles are active. This means we need to reapply the middleware @@ -429,6 +424,12 @@ programmatically computed, or if you have to modify the project map in a way that is not possible with `merge-profiles`. +**Note**: Leiningen supports loading middleware implicitly when the +middleware is named `plugin-name.plugin/middleware`; however this +mechanism is even more difficult to debug than regular middleware. It +should be considered deprecated as of 2.8.0 onward and will continue +to work until version 3.0 but is strongly advised against. + ### Maven Wagons [Pomegranate](https://github.com/cemerick/pomegranate) (the library diff -Nru leiningen-clojure-2.8.1/doc/PROFILES.md leiningen-clojure-2.9.0/doc/PROFILES.md --- leiningen-clojure-2.8.1/doc/PROFILES.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/doc/PROFILES.md 2019-02-11 00:27:53.000000000 +0000 @@ -6,7 +6,6 @@ - [Declaring Profiles](#declaring-profiles) - [Default Profiles](#default-profiles) - [Task Specific Profiles](#task-specific-profiles) - - [Replacing Default Repl Dependencies](#replacing-default-repl-dependencies) - [Profile Metadata](#profile-metadata) - [Merging](#merging) - [Activating Profiles](#activating-profiles) @@ -48,8 +47,9 @@ In addition to `project.clj`, profiles also can be specified in `profiles.clj` within the project root. Profiles specified in `profiles.clj` will override -profiles in `project.clj`, so this can be used for project-specific overrides -that you don't want committed in version control. +profiles in `project.clj` (via [merging](#merging) logic described below), so +this can be used for project-specific overrides that you don't want committed +in version control. User-wide profiles can also be specified in `~/.lein/profiles.clj`. These will be available in all projects @@ -69,7 +69,7 @@ ## Default Profiles Certain profiles are active by default unless you specify another set -of profiles using the `with-profiles` task. Each of the default +of profiles using the `with-profile` task. Each of the default profiles have different semantics: If you want to access dependencies or plugins during development time @@ -125,35 +125,6 @@ putting things in the `:test` profile is strongly advised against as it can result in tests which can't be run from the repl. -### Replacing Default Repl Dependencies - -By default, the repl task will use the version of Clojure, tools.nrepl -and clojure-complete that ships with the Leiningen. These can be -overridden in projects, but this doesn't change the repl's behaviour -outside of those projects. To do that, you should put a `:repl` -profile in your `~/.lein/profiles.clj` file. For example, to replace -the default tools.nrepl dependency with version 0.2.12, you can insert -the following profile: - -```clj -{:repl {:dependencies [[org.clojure/tools.nrepl "0.2.12"]]}} -``` - -Now, all calls to `lein repl` will use version 0.2.12 of tools.nrepl, -with the exception of the projects that has defined a `:repl` profile -themselves. - -If you want to specify the default Clojure version outside of -projects, you can do so by `^:displace`-ing it in the `:repl` profile: - -```clj -{:repl {:dependencies [^:displace [org.clojure/clojure "1.8.0-alpha3"]]}} -``` - -This version will only be used outside of Clojure projects. Note that -this `^:displace` trick will not work with tools.nrepl or -clojure-complete. - ## Profile Metadata If you mark your profile with `^:leaky` metadata, then the profile diff -Nru leiningen-clojure-2.8.1/doc/TEMPLATES.md leiningen-clojure-2.9.0/doc/TEMPLATES.md --- leiningen-clojure-2.8.1/doc/TEMPLATES.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/doc/TEMPLATES.md 2019-02-11 00:27:53.000000000 +0000 @@ -32,11 +32,14 @@ ├── LICENSE ├── project.clj ├── README.md + ├── resources + | └── leiningen + | └── new + | └── liquid_cool + |    └── foo.clj └── src └── leiningen └── new - ├── liquid_cool - │   └── foo.clj └── liquid_cool.clj Note that you'll now have a new and separate project named @@ -50,14 +53,14 @@ ## Structure The files that your template will provide to users are in -`src/leiningen/new/liquid_cool`. The template generator starts you off +`resources/leiningen/new/liquid_cool`. The template generator starts you off with just one, named "foo.clj". You can see it referenced in `src/leiningen/new/liquid_cool.clj`, right underneath the `->files data` line. You can delete `foo.clj` if you like (and its corresponding line in `liquid_cool.clj`), and start populating that -`src/leiningen/new/liquid_cool` directory with the files you wish to be +`resources/leiningen/new/liquid_cool` directory with the files you wish to be part of your template. For everything you add, make sure the `liquid_cool.clj` file receives corresponding entries in that `->files` call. For examples to follow, have a look inside [the \*.clj files for @@ -95,7 +98,7 @@ double mustaches like so: `{{X}}`. As for our input name, `data` already contains the line `:name name`, which means we can lookup the input name by writing `{{name}}` in the template file. To try it out, save the following -contents in the file `src/leiningen/new/liquid_cool/README.md`: +contents in the file `resources/leiningen/new/liquid_cool/README.md`: ```markdown # {{name}} diff -Nru leiningen-clojure-2.8.1/doc/TUTORIAL.md leiningen-clojure-2.9.0/doc/TUTORIAL.md --- leiningen-clojure-2.8.1/doc/TUTORIAL.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/doc/TUTORIAL.md 2019-02-11 00:27:53.000000000 +0000 @@ -348,6 +348,17 @@ jars with the command `lein search $TERM`. Currently only searching Central and Clojars is supported. +### Maven Read Timeout + +The underlying Maven Wagon transport reads the `maven.wagon.rto` system property to determine the timeout used +when downloading artifacts from a repository. The `lein` script sets that property to be 10000. +If that timeout isn't long enough (for example, when using a slow corporate mirror), +it can be overridden via LEIN_JVM_OPTS: + +```bash +export LEIN_JVM_OPTS="-Dmaven.wagon.rto=1800000" +``` + ## Setting JVM Options To pass extra arguments to the JVM, set the `:jvm-opts` vector. This will override any default JVM opts set by Leiningen. diff -Nru leiningen-clojure-2.8.1/.gitignore leiningen-clojure-2.9.0/.gitignore --- leiningen-clojure-2.8.1/.gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/.gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -25,3 +25,4 @@ test_projects/*/target pom.xml deps.txt +profiles.clj \ No newline at end of file diff -Nru leiningen-clojure-2.8.1/leiningen-core/pom.xml leiningen-clojure-2.9.0/leiningen-core/pom.xml --- leiningen-clojure-2.8.1/leiningen-core/pom.xml 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/pom.xml 2019-02-11 00:27:53.000000000 +0000 @@ -3,7 +3,7 @@ leiningen-core leiningen-core jar - 2.8.1 + 2.9.0 leiningen-core Library for core functionality of Leiningen. https://github.com/technomancy/leiningen @@ -14,7 +14,7 @@ - 91afe60b11335c9687f21d61a7a501bc46466f6e + c0eb388176be79167fae736491ffae9ce57bed68 @@ -64,16 +64,16 @@ org.clojure clojure - 1.8.0 + 1.10.0 - bultitude + timofreiberg bultitude - 0.2.8 + 0.3.0 - org.tcrawley - dynapath + org.clojure + clojure @@ -90,31 +90,11 @@ com.cemerick pomegranate - 0.4.0 + 1.1.0 - org.tcrawley - dynapath - - - org.codehaus.plexus - plexus-utils - - - - - org.tcrawley - dynapath - 1.0.0 - - - org.apache.maven.wagon - wagon-http - 2.12 - - - org.apache.maven.wagon - wagon-provider-api + org.slf4j + jcl-over-slf4j @@ -126,7 +106,7 @@ org.slf4j slf4j-nop - 1.7.22 + 1.7.25 org.clojure diff -Nru leiningen-clojure-2.8.1/leiningen-core/project.clj leiningen-clojure-2.9.0/leiningen-core/project.clj --- leiningen-clojure-2.8.1/leiningen-core/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,21 +1,18 @@ -(defproject leiningen-core "2.8.1" +(defproject leiningen-core "2.9.0" :url "https://github.com/technomancy/leiningen" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} :description "Library for core functionality of Leiningen." ;; If you update these, update resources/leiningen/bootclasspath-deps.clj too - :dependencies [[org.clojure/clojure "1.8.0"] - [bultitude "0.2.8" :exclusions [org.tcrawley/dynapath]] + :dependencies [[org.clojure/clojure "1.10.0"] + [timofreiberg/bultitude "0.3.0" + :exclusions [org.clojure/clojure]] [org.flatland/classlojure "0.7.1"] [robert/hooke "1.3.0"] - [com.cemerick/pomegranate "0.4.0" - :exclusions [org.tcrawley/dynapath - org.codehaus.plexus/plexus-utils]] - [org.tcrawley/dynapath "1.0.0"] - [org.apache.maven.wagon/wagon-http "2.12" - :exclusions [org.apache.maven.wagon/wagon-provider-api]] + [com.cemerick/pomegranate "1.1.0" + :exclusions [org.slf4j/jcl-over-slf4j]] [com.hypirion/io "0.3.1"] - [org.slf4j/slf4j-nop "1.7.22"] ; wagon-http uses slf4j + [org.slf4j/slf4j-nop "1.7.25"] ; wagon-http uses slf4j ;; we pull this in transitively but want a newer version [org.clojure/tools.macro "0.1.5"]] :scm {:dir ".."} diff -Nru leiningen-clojure-2.8.1/leiningen-core/resources/clojars.pem leiningen-clojure-2.9.0/leiningen-core/resources/clojars.pem --- leiningen-clojure-2.8.1/leiningen-core/resources/clojars.pem 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/resources/clojars.pem 2019-02-11 00:27:53.000000000 +0000 @@ -1,34 +1,36 @@ -----BEGIN CERTIFICATE----- -MIIF5TCCBM2gAwIBAgIQFNGVvfTc1BlL/qLoiocqFTANBgkqhkiG9w0BAQsFADBC -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS -UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE2MDYxODAwMDAwMFoXDTE4MDYxODIzNTk1 -OVowFjEUMBIGA1UEAwwLY2xvamFycy5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQCxdcDXXuYRM+SOZfLzWZYQfzwvCxbP91jZ/aAaTsil4Ye8w/yD -p5vVSWBdj5pC6BRDnaUpm3YzKKhg9pqNlE+Y+be4aDvxeJ14ZI6VbIvLqNs4+vjr -iUNGV4K9j9oY4xAqF/uF5Y9tBLdEMlKxwhgtVCYNuRhHQ/SIBR8tEk9fPcubKqlD -Q73mgiO6EYHRN260UmUZpcBDarX3Ys9ZPOP35tL34gs/3Qhx4EkGDULjcza/FoS6 -DttwnWPJcey1el3wunA9vK9kKROsCr8ErzGGlMaH2VjB0TVcjBbE0IcaMN9Qhu3k -7gChG5kipKc1bmEFsaG7rDlAzrPsHiiImFqvAgMBAAGjggMBMIIC/TAnBgNVHREE -IDAeggtjbG9qYXJzLm9yZ4IPd3d3LmNsb2phcnMub3JnMAkGA1UdEwQCMAAwKwYD -VR0fBCQwIjAgoB6gHIYaaHR0cDovL2dwLnN5bWNiLmNvbS9ncC5jcmwwbwYDVR0g -BGgwZjBkBgZngQwBAgEwWjAqBggrBgEFBQcCARYeaHR0cHM6Ly93d3cucmFwaWRz -c2wuY29tL2xlZ2FsMCwGCCsGAQUFBwICMCAMHmh0dHBzOi8vd3d3LnJhcGlkc3Ns -LmNvbS9sZWdhbDAfBgNVHSMEGDAWgBSXwidQnsLJ7AyIMsh8reKmAU/abzAOBgNV -HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMFcGCCsG -AQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL2dwLnN5bWNkLmNvbTAmBggr -BgEFBQcwAoYaaHR0cDovL2dwLnN5bWNiLmNvbS9ncC5jcnQwggF+BgorBgEEAdZ5 -AgQCBIIBbgSCAWoBaAB3AN3rHSt6DU+mIIuBrYFocH4ujp0B1VyIjT0RxM227L7M -AAABVWXL4CEAAAQDAEgwRgIhAMrMW015lJdjIgVYuPgOPJJrslXFMerOsYNWPpii -CT5LAiEAhmi3K4vuNADVhyhBfoVbHH+3zF4VTW2ebUyPqj42nLgAdgCkuQmQtBhY -FIe7E6LMZ3AKPDWYBPkb37jjd80OyA3cEAAAAVVly+BdAAAEAwBHMEUCICgkzkc5 -bpuZl7CJDuEomgnheQIWYu5Ossyb6nl2CKcLAiEAqauIJKTo0A3gvIJWh5gEBOXp -+anhk5+sE9WjBVh201UAdQBo9pj4H2SCvjqM7rkoHUz8cVFdZ5PURNEKZ6y7T0/7 -xAAAAVVly+A5AAAEAwBGMEQCIHb60Y5NzcUnIOjCSmUu1Sv0oaEjUKvsebyt9lYD -L0gAAiAgPwUOl8W5K4wzRri4r8Sqoy5WKZkDTufktx4ZKOVi1DANBgkqhkiG9w0B -AQsFAAOCAQEACYwtSrBDaLE7HMPGV02On8SW9RW1Ax5G1IxtusBS2R8gvPYqIG1l -bapadGfGZPlP1bZSxHOZZrgwsAkhwXHndrrq4BqCFME/1yKjrdM8v/wRjz4NK2C1 -E3hsLHiMv5GIX9BAsYZZZbmtMRU0NRfg1dWkSNY+czCgxGvckaDVnJTNyuupHuM8 -QhZ0x1UrbZbPRzwAu/UV6N+PyXM8Yp/UkAQisCaU57qfKT8CltU0KdEJ5LhvwTb5 -AMGei6LqMRZ0GzshRnV8PKIrpkrdEhk37r+0dUAgDUCIOjyEe4fi0l98nLYMEP5P -WD9oAdwDxrRVfBXHAefav2RIKxb+Ev6t+A== ------END CERTIFICATE----- +MIIGLjCCBRagAwIBAgIQD6pvsYX5h3q223XlA/jIWDANBgkqhkiG9w0BAQsFADBe +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRSYXBpZFNTTCBSU0EgQ0EgMjAxODAe +Fw0xODA1MjQwMDAwMDBaFw0yMDA2MTcxMjAwMDBaMBYxFDASBgNVBAMTC2Nsb2ph +cnMub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1m+pJIzATOEM +f2PV95975eoUs25u8wfjGXsL918KuG5c1S/uNAGInTKyZ2ynz/hekeKxCevwhT7l +y9mhfdZf0HxWNuL9YTscjSLZkggTCJdFIjCnlI5dbiilN+YEWNY4wh+bAe9C3PG6 +HpgHMWuLEmwC7XvL9B4VmvcwifRyqMOhZUoiC+IP+8TAI+WVFbCUzIki5kT2AUcz +dk7pLOLl/VFbl6z6bDBbr1l1/FdN/qZL9KitVYF5nSz4wtLfVJKaFnoTmtZjCr30 +ItYwa6OU9L3mS1PQZrU1Ec5iXKnPlCsw2ssJE+IZ3EAD4TOLUE8RB1V7xoRE+ptr +LmhR0m+lqwIDAQABo4IDLjCCAyowHwYDVR0jBBgwFoAUU8oXWfxrwAMhLxqu5Kqo +HIJW2nUwHQYDVR0OBBYEFL5wB7hnK0rB5QTIUOIV8gLPy3bQMCcGA1UdEQQgMB6C +C2Nsb2phcnMub3Jngg93d3cuY2xvamFycy5vcmcwDgYDVR0PAQH/BAQDAgWgMB0G +A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjA+BgNVHR8ENzA1MDOgMaAvhi1o +dHRwOi8vY2RwLnJhcGlkc3NsLmNvbS9SYXBpZFNTTFJTQUNBMjAxOC5jcmwwTAYD +VR0gBEUwQzA3BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cu +ZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBAgEwdQYIKwYBBQUHAQEEaTBnMCYGCCsG +AQUFBzABhhpodHRwOi8vc3RhdHVzLnJhcGlkc3NsLmNvbTA9BggrBgEFBQcwAoYx +aHR0cDovL2NhY2VydHMucmFwaWRzc2wuY29tL1JhcGlkU1NMUlNBQ0EyMDE4LmNy +dDAJBgNVHRMEAjAAMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgDuS723dc5g +uuFCaR+r4Z5mow9+X7By2IMAxHuJeqj9ywAAAWOT7sWAAAAEAwBHMEUCIQCwtF4e +iM/IRHTa4dbhNbu+zXhJqznE+0pdle4IImlbXQIgGzZDhLXbczJb6pVBPE35HmDN ++XDvVeCN+d465ybNtNUAdgCHdb/nWXz4jEOZX73zbv9WjUdWNv9KtWDBtOr/XqCD +DwAAAWOT7sXMAAAEAwBHMEUCIQDmQH+ZTAa+OcjqqOyXTKX+GWqXAkLzYj4lmzHb +0jhsqwIgXFNNDS12sP4T/RuOsNfkEHIwoc0PK+K3eyro6VR9yWIAdgC72d+8H4px +tZOUI5eqkntHOFeVCqtS6BqQlmQ2jh7RhQAAAWOT7sVYAAAEAwBHMEUCIDedm7tm +0jIQbHxBdXsf/Fh0GZKwEXVh04BjDbZfFqT4AiEAi7YDFApSiEGlU42+aoGjLqfI +T4TLLvM2TQw6Umz7UwQwDQYJKoZIhvcNAQELBQADggEBAEF+oP8E7mBtivA2nYfE +FmmqvUS3UyfDGI1tKcRKiKYe0synD5TMg/Tuc9nK6uC0C7oPmuE8CUHOieRR5wdh +UQ8ORIuagiaqE3ONd4kobw/FRWPf9GHxDXPE1LIHVy9x8S/Y/QcPWQ5WDW5n4nv1 +sX24YqCM5RG0MaRZ7xIS14dEOMopjyfJszo4RVDX5AfeeLojsIBkbnH0NT7r03+f +/nS3Gs+15xC7PJzpQLoD2e7QGR3Oc6x8KavuWgdE7kC///tOAOql3kel8sWrATCa +zo4GP8HNLdRJjVnFhwIGV45vHWLD1G2UrzXhXA3uOaKcK909pxQjwLWCBOgDerBW +tBc= +-----END CERTIFICATE----- \ No newline at end of file diff -Nru leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/classpath.clj leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/classpath.clj --- leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/classpath.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/classpath.clj 2019-02-11 00:27:53.000000000 +0000 @@ -404,8 +404,10 @@ (doseq [[_ {:keys [native-prefix file]}] snap-deps] (extract-native-dep! native-path file native-prefix)))))) -(def ^:private bootclasspath-deps (-> "leiningen/bootclasspath-deps.clj" - io/resource slurp read-string)) +(def ^:private bootclasspath-deps + (if-let [deps-file (io/resource "leiningen/bootclasspath-deps.clj")] + (read-string (slurp deps-file)) + {})) (defn- warn-conflicts "When using the bootclasspath (for boot speed), resources already on the diff -Nru leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/eval.clj leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/eval.clj --- leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/eval.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/eval.clj 2019-02-11 00:27:53.000000000 +0000 @@ -36,7 +36,7 @@ (defn- write-pom-properties [{:keys [compile-path group name] :as project}] (when (and (:root project) (:write-pom-properties project true)) (let [path (format "%s/META-INF/maven/%s/%s/pom.properties" - compile-path group name)] + (or compile-path "target/classes") group name)] (utils/mkdirs (.getParentFile (io/file path))) (spit path (project/make-project-properties project))))) @@ -233,9 +233,10 @@ (defn shell-command "Calculate vector of strings needed to evaluate form in a project subprocess." [project form] - (let [init-file (if-let [checksum (System/getenv "INPUT_CHECKSUM")] - (io/file (:target-path project) (str checksum "-init.clj")) - (File/createTempFile "form-init" ".clj"))] + (let [checksum (System/getProperty "leiningen.input-checksum") + init-file (if (empty? checksum) + (File/createTempFile "form-init" ".clj") + (io/file (:target-path project) (str checksum "-init.clj")))] (spit init-file (binding [*print-dup* *eval-print-dup*] (pr-str (when-not (System/getenv "LEIN_FAST_TRAMPOLINE") @@ -305,13 +306,13 @@ (and (not pending?) (some #{"done" "interrupted" "error"} status)))) (defmethod eval-in :nrepl [project form] - (require 'clojure.tools.nrepl) + (require 'nrepl.core) (let [port-file (io/file (:target-path project) "repl-port") - connect (resolve 'clojure.tools.nrepl/connect) - client (resolve 'clojure.tools.nrepl/client) - client-session (resolve 'clojure.tools.nrepl/client-session) - message (resolve 'clojure.tools.nrepl/message) - recv (resolve 'clojure.tools.nrepl.transport/recv)] + connect (resolve 'nrepl/connect) + client (resolve 'nrepl/client) + client-session (resolve 'nrepl/client-session) + message (resolve 'nrepl/message) + recv (resolve 'nrepl.transport/recv)] (if (.exists port-file) (let [transport (connect :host "localhost" :port (Integer. (slurp port-file))) diff -Nru leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/main.clj leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/main.clj --- leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/main.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/main.clj 2019-02-11 00:27:53.000000000 +0000 @@ -348,6 +348,21 @@ (.load reader)) (.getProperty "version"))))) +(def ^:private exact-version-error + "This project has :exact-lein-version set to \"%s\", while you have %s.") + +(defn versions-match? [v1 v2] + (let [v1 (string/trim (first (string/split v1 #"-" 2))) + v2 (string/trim (first (string/split v2 #"-" 2)))] + (= v1 v2))) + +(defn- verify-exact-version + [{:keys [exact-lein-version]}] + (when-not (versions-match? exact-lein-version (leiningen-version)) + (abort (format exact-version-error + exact-lein-version + (leiningen-version))))) + (defn version-satisfies? [v1 v2] (let [v1 (map #(Integer. %) (re-seq #"\d+" (first (string/split v1 #"-" 2)))) v2 (map #(Integer. %) (re-seq #"\d+" (first (string/split v2 #"-" 2))))] @@ -401,9 +416,22 @@ (project/init-project))) (defn- insecure-http-abort [& _] - (abort "Tried to use insecure HTTP repository without TLS. -This is almost certainly a mistake; however in rare cases where it's -intentional please see `lein help faq` for details.")) + (let [repo (promise)] + (reify org.apache.maven.wagon.Wagon + (getRepository [this]) + (setTimeout [this _]) + (setInteractive [this _]) + (addTransferListener [this _]) + (^void connect [this + ^org.apache.maven.wagon.repository.Repository the-repo + ^org.apache.maven.wagon.authentication.AuthenticationInfo _ + ^org.apache.maven.wagon.proxy.ProxyInfoProvider _] + (deliver repo the-repo) nil) + (get [this resource _] + (abort "Tried to use insecure HTTP repository without TLS:\n" + (str (.getId @repo) ": " (.getUrl @repo) "\n " resource) "\n" + "\nThis is almost certainly a mistake; for details see" + "\nhttps://github.com/technomancy/leiningen/blob/master/doc/FAQ.md"))))) (defn -main "Command-line entry point." @@ -415,6 +443,7 @@ (let [project (if (.exists (io/file *cwd* "project.clj")) (project/read (str (io/file *cwd* "project.clj"))) (default-project))] + (when (:exact-lein-version project) (verify-exact-version project)) (when (:min-lein-version project) (verify-min-version project)) (configure-http) (resolve-and-apply project raw-args)) diff -Nru leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/project.clj leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/project.clj --- leiningen-clojure-2.8.1/leiningen-core/src/leiningen/core/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/src/leiningen/core/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -11,7 +11,8 @@ [leiningen.core.classpath :as classpath] [clojure.string :as str]) (:import (clojure.lang DynamicClassLoader) - (java.io PushbackReader Reader))) + (java.io PushbackReader Reader File) + (java.util.regex Pattern))) (defn make-project-properties [project] (with-open [baos (java.io.ByteArrayOutputStream.)] @@ -29,7 +30,9 @@ (defn- warn [& args] ;; TODO: remove with 3.0.0 (require 'leiningen.core.main) - ((resolve 'leiningen.core.main/warn) args)) + (apply (resolve 'leiningen.core.main/warn) args)) + +(def ^:private warn-once (memoize warn)) (defn- update-each-contained [m keys f & args] (reduce (fn [m k] @@ -122,6 +125,15 @@ (with-meta obj m) obj)) +(defn- vary-meta* + "Returns an object of the same type and value as obj, with + (apply f (meta obj) args) as its metadata, if the object can hold + metadata." + [obj f & args] + (if (instance? clojure.lang.IObj obj) + (apply vary-meta obj f args) + obj)) + (defn- displace? "Returns true if the object is marked as displaceable" [obj] @@ -223,7 +235,8 @@ ["vcs" "commit"] ["vcs" "push"]] :pedantic? (quote ^:top-displace ranges) - :jar-exclusions [#"^\."] + :jar-exclusions [#"^\." (re-pattern (Pattern/quote (str File/separator ".")))] + :eval-in :default :offline? (not (nil? (System/getenv "LEIN_OFFLINE"))) :uberjar-exclusions [#"(?i)^META-INF/[^/]*\.(SF|RSA|DSA)$"] :uberjar-merge-with {"META-INF/plexus/components.xml" @@ -302,6 +315,9 @@ :password :gpg :username :gpg}]] {:reduce reduce-repo-step})) +(defn- mark-with-replace [obj] + (vary-meta* obj assoc :replace true)) + (defn normalize-values "Transform values within a project or profile map to normalized values, such that internal functions can assume that the values are already normalized." @@ -310,6 +326,7 @@ (update-each-contained [:repositories :deploy-repositories :mirrors :plugin-repositories] normalize-repos) (update-each-contained [:profiles] utils/map-vals normalize-values) + (update-each-contained [:aliases] utils/map-vals mark-with-replace) (normalize-aot))) (def ^:private empty-meta-merge-defaults @@ -388,9 +405,9 @@ (meta project)))) ([project] (let [repos (if (:omit-default-repositories project) - (do (warn "WARNING:" - ":omit-default-repositories is deprecated;" - "use :repositories ^:replace [...] instead.") + (do (warn-once "WARNING:" + ":omit-default-repositories is deprecated;" + "use :repositories ^:replace [...] instead.") empty-repositories) default-repositories)] (setup-map-defaults @@ -537,9 +554,9 @@ :test-selectors {:default (with-meta '(constantly true) {:displace true})} ;; bump deps in leiningen's own project.clj with these - :dependencies '[^:displace [org.clojure/tools.nrepl "0.2.12" + :dependencies '[^:displace [nrepl/nrepl "0.6.0" :exclusions [org.clojure/clojure]] - ^:displace [clojure-complete "0.2.4" + ^:displace [clojure-complete "0.2.5" :exclusions [org.clojure/clojure]]] :checkout-deps-shares [:source-paths :test-paths @@ -674,17 +691,13 @@ profiles)] (when (and (seq repo-profiles) (not (System/getenv "LEIN_SUPPRESS_USER_LEVEL_REPO_WARNINGS"))) - (warn ":repositories detected in user-level profiles!" - (vec (map first repo-profiles)) "\nSee" - "https://github.com/technomancy/leiningen/wiki/Repeatability")))) - -(alter-var-root #'warn-user-repos memoize) + (warn-once ":repositories detected in user-level profiles!" + (vec (map first repo-profiles)) "\nSee" + "https://github.com/technomancy/leiningen/wiki/Repeatability")))) (defn- warn-user-profile [root profiles] (when (and root (contains? profiles :user)) - (warn "WARNING: user-level profile defined in project files."))) - -(alter-var-root #'warn-user-profile memoize) + (warn-once "WARNING: user-level profile defined in project files."))) (defn- system-profiles [] (let [sys-profile-dir (if (= :windows (utils/get-os)) @@ -771,11 +784,14 @@ (defn- load-hook [hook-name] (if-let [hook (try (utils/require-resolve hook-name) - (catch Throwable e + (catch Exception e (utils/error "problem requiring" hook-name "hook") (throw e)))] - (try (hook) - (catch Throwable e + (try (warn-once "Warning: implicit hook found:" hook-name + "\nHooks are deprecated and will be removed" + "in a future version.") + (hook) + (catch Exception e (utils/error "problem activating" hook-name "hook") (throw e))) (when-not (:optional (meta hook-name)) @@ -939,17 +955,35 @@ (doseq [path (classpath/get-classpath project)] (pomegranate/add-classpath path)))) +(defn- load-repository-overrides + "Loads any network-centric overrides specified in repository-overrides.clj. + This feature allows certain features to be defined outside of the project + file, but before the profiles are loaded. This is necessary because network + operations are needed to complete the profile merging themselves and therefore + they are not suited to defining network configuration items." + [project] + (let [overrides (-> (io/file (:root project) "repository-overrides.clj") + (utils/read-file) + (select-keys [:repositories + :plugin-repositories + :mirrors + :certificates + :local-repo]))] + (merge project overrides))) + (defn init-project "Initializes a project by loading certificates, plugins, middleware, etc. Also merges default profiles." ([project default-profiles] - (-> (project-with-profiles (doto project - (load-certificates) - (init-lein-classpath) - (load-plugins))) - (init-profiles default-profiles) - (load-plugins) - (activate-middleware))) + (-> (load-repository-overrides project) + (doto + (load-certificates) + (init-lein-classpath) + (load-plugins)) + (project-with-profiles) + (init-profiles default-profiles) + (load-plugins) + (activate-middleware))) ([project] (init-project project [:default]))) (defn add-profiles diff -Nru leiningen-clojure-2.8.1/leiningen-core/test/leiningen/core/test/main.clj leiningen-clojure-2.9.0/leiningen-core/test/leiningen/core/test/main.clj --- leiningen-clojure-2.8.1/leiningen-core/test/leiningen/core/test/main.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/test/leiningen/core/test/main.clj 2019-02-11 00:27:53.000000000 +0000 @@ -91,6 +91,18 @@ ["one-or-two" "clojure" "2"] ["3"] ["fixed-and-var-args" "one"] [])) +(deftest test-versions-match + (is (versions-match? "1.2.12" "1.2.12")) + (is (versions-match? "3.0" "3.0")) + (is (versions-match? " 12.1.2" "12.1.2 ")) + (is (not (versions-match? "1.2" "1.3"))) + (is (not (versions-match? "1.2.0" "1.2"))) + (is (not (versions-match? "1.2" "1.2.0"))) + (is (versions-match? "2.1.3-SNAPSHOT" "2.1.3")) + (is (versions-match? " 2.1.3-SNAPSHOT" "2.1.3")) + (is (versions-match? "2.1.3" "2.1.3-FOO")) + (is (not (versions-match? "3.0.0" "3.0.1-BAR")))) + (deftest test-version-satisfies (is (version-satisfies? "1.5.0" "1.4.2")) (is (not (version-satisfies? "1.4.2" "1.5.0"))) diff -Nru leiningen-clojure-2.8.1/leiningen-core/test/leiningen/core/test/project.clj leiningen-clojure-2.9.0/leiningen-core/test/leiningen/core/test/project.clj --- leiningen-clojure-2.8.1/leiningen-core/test/leiningen/core/test/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/test/leiningen/core/test/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -13,7 +13,8 @@ (fn [f] ;; Can't have user-level profiles interfering! (with-redefs [user/profiles (constantly {}) - user/credentials (constantly nil)] + user/credentials (constantly nil) + project/warn-once #'project/warn] (f)))) (defn make-project @@ -43,9 +44,9 @@ [stencil/stencil "0.2.0"] [~(symbol "net.3scale" "3scale-api") "3.0.2"] [clj-http/clj-http "3.4.1"] - [org.clojure/tools.nrepl "0.2.12" + [nrepl/nrepl "0.6.0" :exclusions [[org.clojure/clojure]]] - [clojure-complete/clojure-complete "0.2.4" + [clojure-complete/clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]]], :twelve 12 ; testing unquote @@ -285,7 +286,7 @@ (def test-profiles (atom {:qa {:resource-paths ["/etc/myapp"]} :test {:resource-paths ["test/hi"]} :repl {:dependencies - '[[org.clojure/tools.nrepl "0.2.0-beta6" + '[[nrepl/nrepl "0.4.5" :exclusions [org.clojure/clojure]] [org.thnetos/cd-client "0.3.4" :exclusions [org.clojure/clojure]]]} diff -Nru leiningen-clojure-2.8.1/leiningen-core/test/leiningen/core/test/user.clj leiningen-clojure-2.9.0/leiningen-core/test/leiningen/core/test/user.clj --- leiningen-clojure-2.8.1/leiningen-core/test/leiningen/core/test/user.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/leiningen-core/test/leiningen/core/test/user.clj 2019-02-11 00:27:53.000000000 +0000 @@ -35,4 +35,9 @@ {:url "https://clojars.org/repo" :username "u" :password "p" :passphrase "looooong" :private-key-file "./somewhere" - :foo [:gpg "0x00D85767"]}))))) + :foo [:gpg "0x00D85767"]}))) + (testing "Pulls string out when env/gpg are absent" + (let [settings {:url "https://clojars.private" + :username [:gpg :env/circle_jars_username "ACTUAL"]}] + (is (= "ACTUAL" (:username (resolve-credentials settings)))))))) + diff -Nru leiningen-clojure-2.8.1/lein-pprint/project.clj leiningen-clojure-2.9.0/lein-pprint/project.clj --- leiningen-clojure-2.8.1/lein-pprint/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/lein-pprint/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,4 +1,4 @@ -(defproject lein-pprint "1.1.2" +(defproject lein-pprint "1.2.0" :description "Pretty-print a representation of the project map." :url "https://github.com/technomancy/leiningen" :license {:name "Eclipse Public License" diff -Nru leiningen-clojure-2.8.1/lein-pprint/README.md leiningen-clojure-2.9.0/lein-pprint/README.md --- leiningen-clojure-2.8.1/lein-pprint/README.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/lein-pprint/README.md 2019-02-11 00:27:53.000000000 +0000 @@ -6,7 +6,7 @@ ## Usage -Add `[lein-pprint "1.1.2"]` to `:plugins`. +Add `[lein-pprint "1.2.0"]` to `:plugins`. $ lein pprint @@ -36,6 +36,6 @@ ## License -Copyright © 2012 Phil Hagelberg +Copyright © 2012-2017 Phil Hagelberg and contributors. Distributed under the Eclipse Public License, the same as Clojure. diff -Nru leiningen-clojure-2.8.1/lein-pprint/src/leiningen/pprint.clj leiningen-clojure-2.9.0/lein-pprint/src/leiningen/pprint.clj --- leiningen-clojure-2.8.1/lein-pprint/src/leiningen/pprint.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/lein-pprint/src/leiningen/pprint.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,14 +1,30 @@ (ns leiningen.pprint - (:require [clojure.pprint :as pprint])) + (:require [clojure.pprint :as pprint] + [leiningen.core :refer [abort]])) (defn ^:no-project-needed pprint - "Pretty-print a representation of the project map." + "Usage: pprint [--not-pretty] [--] [selector...] + + When no selectors are specified, pretty-prints a representation of + the entire project map. Otherwise pretty-prints the item(s) + retrieved by (get-in project selector) when reading a selector + produces something sequential, or (get project selector) when it + doesn't. If \"--not-pretty\" is specified, doesn't pretty-print, + just prints." [project & keys] - (if (seq keys) - (doseq [kstr keys] - (let [k (read-string kstr)] - (pprint/pprint (if (sequential? k) - (get-in project k) - (get project k))))) - (pprint/pprint project)) + (let [[pretty? keys] (loop [args args + pretty? true] + (if-let [[arg & args] (seq args)] + (case arg + "--" [pretty? args] + "--no-pretty" (recur false args) + (abort "Unrecognized argument" (pr-str arg))))) + show (if pretty? pprint/pprint println)] + (if (seq keys) + (doseq [kstr keys] + (let [k (read-string kstr)] + (show (if (sequential? k) + (get-in project k) + (get project k))))) + (show project))) (flush)) diff -Nru leiningen-clojure-2.8.1/NEWS.md leiningen-clojure-2.9.0/NEWS.md --- leiningen-clojure-2.8.1/NEWS.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/NEWS.md 2019-02-11 00:27:53.000000000 +0000 @@ -1,5 +1,33 @@ # Leiningen News -- history of user-visible changes +## 2.9.0 / 2019-02-10 + +* Re-enable bootclasspath optimization by default. (Phil Hagelberg) +* Sort namespace order consistently during AOT. (Logan Girard) +* Use Clojure 1.10.0 for plugins and new templates projects. (Alex Miller, Phil Hagelberg) + +## 2.8.3 / 2018-12-14 + +* Fix a warning in the powershell script. (Florian Anderiasch) +* Fix a bug where the repl wouldn't launch. (Bozhidar Batsov) +* Remove broken unattended GPG deploy feature. +* Fix a bug where the repl didn't use `:main` as the initial ns. (Phil Hagelberg) + +## 2.8.2 / 2018-12-11 + +* Fix a bug where hidden files would be included in jars. (James Elliott) +* Add support for repository-overrides.clj to bootstrap repository info. (Greg Haskins) +* Use stderr consistently for diagnostics. (Rob Browning) +* Fix a bug in aliases that come from profiles. (Arnout Roemers) +* Fix TLS errors in self-install on Windows. (Florian Anderiasch) +* Templates use EPL-2.0 with GPL secondary license. (Yegor Timoshenko) +* Allow GPG to be invoked unattended with passphrase. (Neil Okamoto) +* Add pprint `--not-pretty` argument that prints instead of pprinting. (Rob Browning) +* Always send diagnostic messages to standard error. (Rob Browning) +* Add project coordinate data to jar metadata. (Conor McDermottroe) +* Allow freeform `:pom-plugin` configuration. (Hannu Hartikainen) +* **(Breaking)** Switch to [nREPL 0.5](https://metaredux.com/posts/2018/10/29/nrepl-redux.html). See the [upgrade notes](https://nrepl.org/nrepl/installation.html#upgrading) if you experience any problems with the `lein repl` task. (Bozhidar Batsov) + ## 2.8.1 / 2017-10-27 * Fix a bug where `lein help` couldn't list built-in tasks on Java 9. (Phil Hagelberg) @@ -23,6 +51,7 @@ * JVMs on 8u131 and newer will default to using cgroups settings for memory limits. (Phil Hagelberg) * Add `:query` subcommand to `deps` to quickly find latest versions. (Phil Hagelberg) * Fix a bug where dependency resolution wasn't cached correctly. (Phil Hagelberg) +* Support for HTTP nREPL has been moved out; requires drawbridge plugin now. (Phil Hagelberg) * Warn when `$CLASSPATH` is set. (Phil Hagelberg) * Default to requiring TLS for remote repositories. (Phil Hagelberg) * Remove warning when running as root. (Phil Hagelberg) diff -Nru leiningen-clojure-2.8.1/project.clj leiningen-clojure-2.9.0/project.clj --- leiningen-clojure-2.8.1/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,29 +1,31 @@ ;; This is Leiningen's own project configuration. See doc/TUTORIAL.md ;; file as well as sample.project.clj for help writing your own. -(defproject leiningen "2.8.1" +(defproject leiningen "2.9.0" :description "Automate Clojure projects without setting your hair on fire." :url "https://github.com/technomancy/leiningen" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html"} ;; If you update these, update resources/leiningen/bootclasspath-deps.clj too - :dependencies [[leiningen-core "2.8.1"] + :dependencies [[leiningen-core "2.9.0"] ;; needed for pom [org.clojure/data.xml "0.0.8"] ;; needed for test - [bultitude "0.2.8"] + [timofreiberg/bultitude "0.3.0" + :exclusions [org.clojure/clojure]] ;; needed for new [stencil "0.5.0" :exclusions [org.clojure/core.cache]] ;; needed for uberjar [commons-lang "2.6"] ;; needed for repl - [org.clojure/tools.nrepl "0.2.12"] + [nrepl "0.6.0"] ;; needed for change [net.cgrand/sjacket "0.1.1" :exclusions [org.clojure/clojure]] ;; bump versions of various common transitive deps [net.cgrand/parsley "0.9.3" :exclusions [org.clojure/clojure]] [scout "0.1.1"] - [commons-io "2.5"]] + [commons-io "2.6"]] + :pedantic? :abort ;; checkout-deps don't work with :eval-in :leiningen :profiles {:dev {:resource-paths ["leiningen-core/dev-resources"] :test-paths ["leiningen-core/test"]} @@ -31,7 +33,7 @@ leiningen.core.ssl ; lazy-loaded cemerick.pomegranate classlojure.core - clojure.tools.nrepl]}} + nrepl.core]}} :test-selectors {:default (complement :disabled) :offline (comp (partial not-any? identity) (juxt :online :disabled))} diff -Nru leiningen-clojure-2.8.1/README.md leiningen-clojure-2.9.0/README.md --- leiningen-clojure-2.8.1/README.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/README.md 2019-02-11 00:27:53.000000000 +0000 @@ -1,5 +1,7 @@ # Leiningen +[![CircleCI](https://circleci.com/gh/technomancy/leiningen.svg?style=svg)](https://circleci.com/gh/technomancy/leiningen) + Leiningen logo @@ -20,30 +22,17 @@ Leiningen installs itself on the first run of the `lein` shell script; there is no separate install script. Follow these instructions to install Leiningen manually: -1. Make sure you have Java installed; version 8 is recommended at this time. +1. Make sure you have Java installed; OpenJDK version 8 is recommended at this time. 2. [Download the `lein` script from the `stable` branch](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein) of this project. 3. Place it on your `$PATH`. (`~/bin` is a good choice if it is on your path.) 4. Set it to be executable. (`chmod +x ~/bin/lein`) 5. Run it. -### Windows - -There is -[an installer](http://leiningen-win-installer.djpowell.net/) which -will handle downloading and placing Leiningen and its dependencies. - -The manual method of putting -[the batch file](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat). -on your `PATH` and running `lein self-install` should still work for -most users. If you have [Cygwin](http://www.cygwin.com/) you should be -able to use the shell script above rather than the batch file. - -N.B.: Avoid using a LEIN_JAR environment variable. -If you have one instance of Leiningen on your PATH as well as a LEIN_JAR -pointing to a different instance, there is a known problem where `lein -v` and -`lein upgrade` will refer to the first instance, while usage of Leiningen, such -as `lein new foobar`, will refer to the latter. +Windows users can use the above script in the Linux subsystem or try +[the batch file](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat) or +[Powershell version](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.ps1) +instead. ## Basic Usage @@ -134,7 +123,7 @@ ## License -Source Copyright © 2009-2017 Phil Hagelberg, Alex Osborne, Dan Larkin, and +Source Copyright © 2009-2018 Phil Hagelberg, Alex Osborne, Dan Larkin, and [contributors](https://github.com/technomancy/leiningen/contributors). Distributed under the Eclipse Public License, the same as Clojure uses. See the file COPYING. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/bootclasspath-deps.clj leiningen-clojure-2.9.0/resources/leiningen/bootclasspath-deps.clj --- leiningen-clojure-2.8.1/resources/leiningen/bootclasspath-deps.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/bootclasspath-deps.clj 2019-02-11 00:27:53.000000000 +0000 @@ -20,52 +20,54 @@ (dissoc 'leiningen-core) (pp/pprint)))) { - bultitude "0.2.8" - clojure-complete "0.2.4" - com.cemerick/pomegranate "0.4.0-alpha1" + clojure-complete "0.2.5" + com.cemerick/pomegranate "1.1.0" com.google.guava/guava "20.0" com.hypirion/io "0.3.1" commons-codec "1.9" - commons-io "2.5" + commons-io "2.6" commons-lang "2.6" commons-logging "1.2" + javax.inject "1" net.cgrand/parsley "0.9.3" net.cgrand/regex "1.1.0" net.cgrand/sjacket "0.1.1" + nrepl "0.6.0" org.apache.commons/commons-lang3 "3.5" org.apache.httpcomponents/httpclient "4.5.3" - org.apache.httpcomponents/httpcore "4.4.4" - org.apache.maven.resolver/maven-resolver-api "1.0.3" + org.apache.httpcomponents/httpcore "4.4.6" + org.apache.maven.resolver/maven-resolver-api "1.1.1" org.apache.maven.resolver/maven-resolver-connector-basic "1.0.3" - org.apache.maven.resolver/maven-resolver-impl "1.0.3" - org.apache.maven.resolver/maven-resolver-spi "1.0.3" + org.apache.maven.resolver/maven-resolver-impl "1.1.1" + org.apache.maven.resolver/maven-resolver-spi "1.1.1" org.apache.maven.resolver/maven-resolver-transport-file "1.0.3" org.apache.maven.resolver/maven-resolver-transport-http "1.0.3" org.apache.maven.resolver/maven-resolver-transport-wagon "1.0.3" - org.apache.maven.resolver/maven-resolver-util "1.0.3" - org.apache.maven.wagon/wagon-http "2.12" - org.apache.maven.wagon/wagon-http-shared "2.12" - org.apache.maven.wagon/wagon-provider-api "2.12" - org.apache.maven/maven-artifact "3.5.0" - org.apache.maven/maven-builder-support "3.5.0" - org.apache.maven/maven-model "3.5.0" - org.apache.maven/maven-model-builder "3.5.0" - org.apache.maven/maven-repository-metadata "3.5.0" - org.apache.maven/maven-resolver-provider "3.5.0" + org.apache.maven.resolver/maven-resolver-util "1.1.1" + org.apache.maven.wagon/wagon-http "3.0.0" + org.apache.maven.wagon/wagon-http-shared "3.0.0" + org.apache.maven.wagon/wagon-provider-api "3.0.0" + org.apache.maven/maven-artifact "3.5.3" + org.apache.maven/maven-builder-support "3.5.3" + org.apache.maven/maven-model "3.5.3" + org.apache.maven/maven-model-builder "3.5.3" + org.apache.maven/maven-repository-metadata "3.5.3" + org.apache.maven/maven-resolver-provider "3.5.3" + org.clojure/core.specs.alpha "0.2.44" org.clojure/data.xml "0.0.8" + org.clojure/spec.alpha "0.2.176" org.clojure/tools.macro "0.1.5" - org.clojure/tools.nrepl "0.2.12" org.codehaus.plexus/plexus-component-annotations "1.7.1" org.codehaus.plexus/plexus-interpolation "1.24" - org.codehaus.plexus/plexus-utils "3.0.24" + org.codehaus.plexus/plexus-utils "3.1.0" org.flatland/classlojure "0.7.1" org.jsoup/jsoup "1.7.2" - org.slf4j/jcl-over-slf4j "1.7.22" - org.slf4j/slf4j-api "1.7.22" - org.slf4j/slf4j-nop "1.7.22" - org.tcrawley/dynapath "0.2.5" + org.slf4j/slf4j-api "1.7.25" + org.slf4j/slf4j-nop "1.7.25" + org.tcrawley/dynapath "1.0.0" quoin "0.1.2" robert/hooke "1.3.0" scout "0.1.1" stencil "0.5.0" + timofreiberg/bultitude "0.3.0" } diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/deploying leiningen-clojure-2.9.0/resources/leiningen/help/deploying --- leiningen-clojure-2.8.1/resources/leiningen/help/deploying 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/deploying 2019-02-11 00:27:53.000000000 +0000 @@ -154,7 +154,7 @@ ```clj {#"blueant" {:password "locative1"} - #"https://clojars.org/repo" + #"https://repo.clojars.org" {:username "milgrim" :password "locative1"} "s3p://s3-repo-bucket/releases" {:username "AKIAIN..." :passphrase "1TChrGK4s..."}} @@ -236,7 +236,8 @@ your `project.clj`: ```clj -{:deploy-repositories [["releases" :clojars]]} +{:deploy-repositories [["releases" :clojars] + ["snapshots" :clojars]]} ``` You can use this to alias any `:repositories` entry; Clojars is just the most @@ -324,6 +325,13 @@ that are varied enough that Leiningen doesn't attempt to support them out of the box. +If you just want to change the `deploy` step so it goes to Clojars, you don't +have to replace the whole `:release-tasks` vector, just set this: + +```clojure +:deploy-repositories {"releases" {:url "https://repo.clojars.org" :creds :gpg}} +``` + ### Committing By default, `["vcs" "commit"]` will commit with the message `"Version diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/faq leiningen-clojure-2.9.0/resources/leiningen/help/faq --- leiningen-clojure-2.8.1/resources/leiningen/help/faq 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/faq 2019-02-11 00:27:53.000000000 +0000 @@ -126,7 +126,7 @@ compilation (which only benefits long-running processes). This can negatively affect performance in the long run, or lead to inaccurate benchmarking results. If want the JVM to fully optimize, you can - you can switch profiles with `lein with-profiles production run ...`. + switch profiles with `lein with-profiles production run ...`. **Q:** I'm attempting to run a project as a background process (`lein run &`), but the process suspends until it is in the foreground. How do I run a program @@ -147,7 +147,7 @@ **Q:** How do I determine my project's version at runtime? **A:** Leiningen writes a file called `pom.properties` into - `target/classes` which contains a the version number and current git + `target/classes` which contains the version number and current git revision of the project. In previous versions of Leiningen this was only available when running from jar files, but as of 2.4.1 it's available during `lein run ...`, etc. You can read it by running @@ -193,7 +193,7 @@ arg1 arg2 [...]` without any AOT, but it will take longer to launch. **Q:** Why does `lein jar` package some namespaces from dependencies into my jar? -**A:** This is likely because you have AOT-compiled its namespaces. An +**A:** This is likely because you have AOT-compiled namespaces. An AOT-compiled namespace can only depend on AOT-compiled namespaces. Therefore, if you depend on a namespace in a dependency that is not AOT-compiled, it will be AOT-compiled and bundled with the jar. It is strongly recommended not to @@ -214,6 +214,13 @@ "java.specification.version")` to use the JVM version or any other property. +**Q:** What does `Received fatal alert: protocol_version` mean when + trying to access Clojars? +**A:** This usually means your JVM is not configured to use TLSv1.2, which is + used by Clojars' CDN. It's strongly recommended to upgrade to at least Java 8, + but if this is not feasible, you can fix it by exporting + `LEIN_JVM_OPTS=-Dhttps.protocols=TLSv1.2` as an environment variable. + **Q:** I get a `java.security.KeyException` or `sun.security.provider.certpath.SunCertPathBuilderException` when running `lein` **A:** The `java.security.KeyException` indicates an ssl error when trying to communicate with the HTTPS server via Java. This could be because you need to update the JDK, or some other package (e.g. with old versions of the nss package). @@ -225,10 +232,11 @@ **Q:** I got `Tried to use insecure HTTP repository without TLS`, what is that about? **A:** This means your project was configured to download dependencies from a repository that does not use TLS encryption. This is very -insecure and exposes you to trivially-executed man-in-the-middle attacks. -In the rare event that you don't care about the security of the machines -running your project, you can re-enable support for unprotected repositories -by putting this in your `project.clj` file: +insecure and exposes you to trivially-executed man-in-the-middle +attacks. In the rare event that you don't care about the security of +the machines running your project or can ensure that the only http +traffic is going out over a trusted network, you can re-enable support +for unsafe repositories by putting this in your `project.clj` file: ;; never do this (require 'cemerick.pomegranate.aether) @@ -244,10 +252,10 @@ **A:** You probably downloaded `lein`/`lein.bat` from the [master branch](https://github.com/technomancy/leiningen/tree/master/bin). Unless you plan to build leiningen yourself or help develop it, we suggest you use the latest stable version: [lein](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein)/[lein.bat](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat) **Q:** I have a dependency whose group ID and/or artifact ID starts with a - number (which is invalid for symbols in Clojure). How can I add it to my - project's dependencies? +number (which is invalid for symbols in Clojure). How can I add it to my +project's dependencies? **A:** As of version 2.8.0, Leiningen supports string dependency names like - this: +this: ```clj :dependencies [["net.3scale/3scale-api" "3.0.2"]] @@ -258,3 +266,15 @@ ```clj :dependencies [[~(symbol "net.3scale" "3scale-api") "3.0.2"]] ``` + +**Q:** I'm getting warnings for implicit hooks or implicit middleware. +**A:** Hooks are a deprecated feature where plugins can modify the +behavior of built-in Leiningen functionality; they result in +situations which can be very difficult to debug and usually point +to situations in which the original API is not flexible enough. + +Leiningen also has a deprecated feature for implicitly loading +middleware. Middleware is not deprecated but should now be declared using +`:middleware` instead of being auto-detected from plugins. + +Adding `:implicits false` to `project.clj` will disable all implicit features. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/news leiningen-clojure-2.9.0/resources/leiningen/help/news --- leiningen-clojure-2.8.1/resources/leiningen/help/news 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/news 2019-02-11 00:27:53.000000000 +0000 @@ -1,5 +1,33 @@ # Leiningen News -- history of user-visible changes +## 2.9.0 / 2019-02-10 + +* Re-enable bootclasspath optimization by default. (Phil Hagelberg) +* Sort namespace order consistently during AOT. (Logan Girard) +* Use Clojure 1.10.0 for plugins and new templates projects. (Alex Miller, Phil Hagelberg) + +## 2.8.3 / 2018-12-14 + +* Fix a warning in the powershell script. (Florian Anderiasch) +* Fix a bug where the repl wouldn't launch. (Bozhidar Batsov) +* Remove broken unattended GPG deploy feature. +* Fix a bug where the repl didn't use `:main` as the initial ns. (Phil Hagelberg) + +## 2.8.2 / 2018-12-11 + +* Fix a bug where hidden files would be included in jars. (James Elliott) +* Add support for repository-overrides.clj to bootstrap repository info. (Greg Haskins) +* Use stderr consistently for diagnostics. (Rob Browning) +* Fix a bug in aliases that come from profiles. (Arnout Roemers) +* Fix TLS errors in self-install on Windows. (Florian Anderiasch) +* Templates use EPL-2.0 with GPL secondary license. (Yegor Timoshenko) +* Allow GPG to be invoked unattended with passphrase. (Neil Okamoto) +* Add pprint `--not-pretty` argument that prints instead of pprinting. (Rob Browning) +* Always send diagnostic messages to standard error. (Rob Browning) +* Add project coordinate data to jar metadata. (Conor McDermottroe) +* Allow freeform `:pom-plugin` configuration. (Hannu Hartikainen) +* **(Breaking)** Switch to [nREPL 0.5](https://metaredux.com/posts/2018/10/29/nrepl-redux.html). See the [upgrade notes](https://nrepl.org/nrepl/installation.html#upgrading) if you experience any problems with the `lein repl` task. (Bozhidar Batsov) + ## 2.8.1 / 2017-10-27 * Fix a bug where `lein help` couldn't list built-in tasks on Java 9. (Phil Hagelberg) @@ -23,6 +51,7 @@ * JVMs on 8u131 and newer will default to using cgroups settings for memory limits. (Phil Hagelberg) * Add `:query` subcommand to `deps` to quickly find latest versions. (Phil Hagelberg) * Fix a bug where dependency resolution wasn't cached correctly. (Phil Hagelberg) +* Support for HTTP nREPL has been moved out; requires drawbridge plugin now. (Phil Hagelberg) * Warn when `$CLASSPATH` is set. (Phil Hagelberg) * Default to requiring TLS for remote repositories. (Phil Hagelberg) * Remove warning when running as root. (Phil Hagelberg) diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/profiles leiningen-clojure-2.9.0/resources/leiningen/help/profiles --- leiningen-clojure-2.8.1/resources/leiningen/help/profiles 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/profiles 2019-02-11 00:27:53.000000000 +0000 @@ -6,7 +6,6 @@ - [Declaring Profiles](#declaring-profiles) - [Default Profiles](#default-profiles) - [Task Specific Profiles](#task-specific-profiles) - - [Replacing Default Repl Dependencies](#replacing-default-repl-dependencies) - [Profile Metadata](#profile-metadata) - [Merging](#merging) - [Activating Profiles](#activating-profiles) @@ -48,8 +47,9 @@ In addition to `project.clj`, profiles also can be specified in `profiles.clj` within the project root. Profiles specified in `profiles.clj` will override -profiles in `project.clj`, so this can be used for project-specific overrides -that you don't want committed in version control. +profiles in `project.clj` (via [merging](#merging) logic described below), so +this can be used for project-specific overrides that you don't want committed +in version control. User-wide profiles can also be specified in `~/.lein/profiles.clj`. These will be available in all projects @@ -69,7 +69,7 @@ ## Default Profiles Certain profiles are active by default unless you specify another set -of profiles using the `with-profiles` task. Each of the default +of profiles using the `with-profile` task. Each of the default profiles have different semantics: If you want to access dependencies or plugins during development time @@ -125,35 +125,6 @@ putting things in the `:test` profile is strongly advised against as it can result in tests which can't be run from the repl. -### Replacing Default Repl Dependencies - -By default, the repl task will use the version of Clojure, tools.nrepl -and clojure-complete that ships with the Leiningen. These can be -overridden in projects, but this doesn't change the repl's behaviour -outside of those projects. To do that, you should put a `:repl` -profile in your `~/.lein/profiles.clj` file. For example, to replace -the default tools.nrepl dependency with version 0.2.12, you can insert -the following profile: - -```clj -{:repl {:dependencies [[org.clojure/tools.nrepl "0.2.12"]]}} -``` - -Now, all calls to `lein repl` will use version 0.2.12 of tools.nrepl, -with the exception of the projects that has defined a `:repl` profile -themselves. - -If you want to specify the default Clojure version outside of -projects, you can do so by `^:displace`-ing it in the `:repl` profile: - -```clj -{:repl {:dependencies [^:displace [org.clojure/clojure "1.8.0-alpha3"]]}} -``` - -This version will only be used outside of Clojure projects. Note that -this `^:displace` trick will not work with tools.nrepl or -clojure-complete. - ## Profile Metadata If you mark your profile with `^:leaky` metadata, then the profile diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/project.clj leiningen-clojure-2.9.0/resources/leiningen/help/project.clj --- leiningen-clojure-2.8.1/resources/leiningen/help/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -36,6 +36,11 @@ ;; relies on features only found in newer Leiningen versions. :min-lein-version "2.0.0" + ;; You can require a specific version of Leiningen. In case of mismatch + ;; execution will abort. When versions are compared, suffixes such as + ;; "-SNAPSHOT" are dropped. + ;; :exact-lein-version "2.8.2" + ;;; Dependencies, Plugins, and Repositories ;; Dependencies are listed as [group-id/name version]; in addition ;; to keywords supported by Pomegranate, you can use :native-prefix @@ -78,8 +83,8 @@ ;; warns when version ranges are present anywhere in the dependency tree, ;; but can be set to true to warn for both ranges and overrides, or :abort ;; to exit in the case of ranges or overrides. Setting this to :warn or - ; :abort will also warn you when plugins or their dependencies - ; conflict with libraries used by Leiningen itself. + ;; :abort will also warn you when plugins or their dependencies + ;; conflict with libraries used by Leiningen itself. :pedantic? :abort ;; Global exclusions are applied across the board, as an alternative ;; to duplication for multiple dependencies with the same excluded libraries. @@ -382,12 +387,12 @@ ;; Only one of #{:nrepl-handler :nrepl-middleware} ;; may be used at a time. ;; Use a different server-side nREPL handler. - :nrepl-handler (clojure.tools.nrepl.server/default-handler) + :nrepl-handler (nrepl.server/default-handler) ;; Add server-side middleware to nREPL stack. :nrepl-middleware [my.nrepl.thing/wrap-amazingness ;; TODO: link to more detailed documentation. ;; Middleware without appropriate metadata - ;; (see clojure.tools.nrepl.middleware/set-descriptor! + ;; (see nrepl.middleware/set-descriptor! ;; for details) will simply be appended to the stack ;; of middleware (rather than ordered based on its ;; expectations and requirements). @@ -467,7 +472,12 @@ :executions ([:execution [:id "echodir"] [:goals ([:goal "run"])] [:phase "verify"]])}] - [org.apache.tomcat.maven/tomcat7-maven-plugin "2.1"]] + [org.apache.tomcat.maven/tomcat7-maven-plugin "2.1"] + [com.google.appengine/appengine-maven-plugin "1.9.68" + ;; Use a list to pass any structure unaltered + (:configuration + [:project "foo"] + [:version "bar"])]] ;; Include tag in generated pom.xml file. All key/value pairs ;; appear exactly as configured. If absent, Leiningen will try to ;; use information from a .git directory. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/readme leiningen-clojure-2.9.0/resources/leiningen/help/readme --- leiningen-clojure-2.8.1/resources/leiningen/help/readme 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/readme 2019-02-11 00:27:53.000000000 +0000 @@ -1,5 +1,7 @@ # Leiningen +[![CircleCI](https://circleci.com/gh/technomancy/leiningen.svg?style=svg)](https://circleci.com/gh/technomancy/leiningen) + Leiningen logo @@ -20,30 +22,17 @@ Leiningen installs itself on the first run of the `lein` shell script; there is no separate install script. Follow these instructions to install Leiningen manually: -1. Make sure you have Java installed; version 8 is recommended at this time. +1. Make sure you have Java installed; OpenJDK version 8 is recommended at this time. 2. [Download the `lein` script from the `stable` branch](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein) of this project. 3. Place it on your `$PATH`. (`~/bin` is a good choice if it is on your path.) 4. Set it to be executable. (`chmod +x ~/bin/lein`) 5. Run it. -### Windows - -There is -[an installer](http://leiningen-win-installer.djpowell.net/) which -will handle downloading and placing Leiningen and its dependencies. - -The manual method of putting -[the batch file](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat). -on your `PATH` and running `lein self-install` should still work for -most users. If you have [Cygwin](http://www.cygwin.com/) you should be -able to use the shell script above rather than the batch file. - -N.B.: Avoid using a LEIN_JAR environment variable. -If you have one instance of Leiningen on your PATH as well as a LEIN_JAR -pointing to a different instance, there is a known problem where `lein -v` and -`lein upgrade` will refer to the first instance, while usage of Leiningen, such -as `lein new foobar`, will refer to the latter. +Windows users can use the above script in the Linux subsystem or try +[the batch file](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.bat) or +[Powershell version](https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein.ps1) +instead. ## Basic Usage @@ -134,7 +123,7 @@ ## License -Source Copyright © 2009-2017 Phil Hagelberg, Alex Osborne, Dan Larkin, and +Source Copyright © 2009-2018 Phil Hagelberg, Alex Osborne, Dan Larkin, and [contributors](https://github.com/technomancy/leiningen/contributors). Distributed under the Eclipse Public License, the same as Clojure uses. See the file COPYING. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/sample leiningen-clojure-2.9.0/resources/leiningen/help/sample --- leiningen-clojure-2.8.1/resources/leiningen/help/sample 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/sample 2019-02-11 00:27:53.000000000 +0000 @@ -36,6 +36,11 @@ ;; relies on features only found in newer Leiningen versions. :min-lein-version "2.0.0" + ;; You can require a specific version of Leiningen. In case of mismatch + ;; execution will abort. When versions are compared, suffixes such as + ;; "-SNAPSHOT" are dropped. + ;; :exact-lein-version "2.8.2" + ;;; Dependencies, Plugins, and Repositories ;; Dependencies are listed as [group-id/name version]; in addition ;; to keywords supported by Pomegranate, you can use :native-prefix @@ -78,8 +83,8 @@ ;; warns when version ranges are present anywhere in the dependency tree, ;; but can be set to true to warn for both ranges and overrides, or :abort ;; to exit in the case of ranges or overrides. Setting this to :warn or - ; :abort will also warn you when plugins or their dependencies - ; conflict with libraries used by Leiningen itself. + ;; :abort will also warn you when plugins or their dependencies + ;; conflict with libraries used by Leiningen itself. :pedantic? :abort ;; Global exclusions are applied across the board, as an alternative ;; to duplication for multiple dependencies with the same excluded libraries. @@ -382,12 +387,12 @@ ;; Only one of #{:nrepl-handler :nrepl-middleware} ;; may be used at a time. ;; Use a different server-side nREPL handler. - :nrepl-handler (clojure.tools.nrepl.server/default-handler) + :nrepl-handler (nrepl.server/default-handler) ;; Add server-side middleware to nREPL stack. :nrepl-middleware [my.nrepl.thing/wrap-amazingness ;; TODO: link to more detailed documentation. ;; Middleware without appropriate metadata - ;; (see clojure.tools.nrepl.middleware/set-descriptor! + ;; (see nrepl.middleware/set-descriptor! ;; for details) will simply be appended to the stack ;; of middleware (rather than ordered based on its ;; expectations and requirements). @@ -467,7 +472,12 @@ :executions ([:execution [:id "echodir"] [:goals ([:goal "run"])] [:phase "verify"]])}] - [org.apache.tomcat.maven/tomcat7-maven-plugin "2.1"]] + [org.apache.tomcat.maven/tomcat7-maven-plugin "2.1"] + [com.google.appengine/appengine-maven-plugin "1.9.68" + ;; Use a list to pass any structure unaltered + (:configuration + [:project "foo"] + [:version "bar"])]] ;; Include tag in generated pom.xml file. All key/value pairs ;; appear exactly as configured. If absent, Leiningen will try to ;; use information from a .git directory. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/templates leiningen-clojure-2.9.0/resources/leiningen/help/templates --- leiningen-clojure-2.8.1/resources/leiningen/help/templates 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/templates 2019-02-11 00:27:53.000000000 +0000 @@ -32,11 +32,14 @@ ├── LICENSE ├── project.clj ├── README.md + ├── resources + | └── leiningen + | └── new + | └── liquid_cool + |    └── foo.clj └── src └── leiningen └── new - ├── liquid_cool - │   └── foo.clj └── liquid_cool.clj Note that you'll now have a new and separate project named @@ -50,14 +53,14 @@ ## Structure The files that your template will provide to users are in -`src/leiningen/new/liquid_cool`. The template generator starts you off +`resources/leiningen/new/liquid_cool`. The template generator starts you off with just one, named "foo.clj". You can see it referenced in `src/leiningen/new/liquid_cool.clj`, right underneath the `->files data` line. You can delete `foo.clj` if you like (and its corresponding line in `liquid_cool.clj`), and start populating that -`src/leiningen/new/liquid_cool` directory with the files you wish to be +`resources/leiningen/new/liquid_cool` directory with the files you wish to be part of your template. For everything you add, make sure the `liquid_cool.clj` file receives corresponding entries in that `->files` call. For examples to follow, have a look inside [the \*.clj files for @@ -95,7 +98,7 @@ double mustaches like so: `{{X}}`. As for our input name, `data` already contains the line `:name name`, which means we can lookup the input name by writing `{{name}}` in the template file. To try it out, save the following -contents in the file `src/leiningen/new/liquid_cool/README.md`: +contents in the file `resources/leiningen/new/liquid_cool/README.md`: ```markdown # {{name}} diff -Nru leiningen-clojure-2.8.1/resources/leiningen/help/tutorial leiningen-clojure-2.9.0/resources/leiningen/help/tutorial --- leiningen-clojure-2.8.1/resources/leiningen/help/tutorial 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/help/tutorial 2019-02-11 00:27:53.000000000 +0000 @@ -348,6 +348,17 @@ jars with the command `lein search $TERM`. Currently only searching Central and Clojars is supported. +### Maven Read Timeout + +The underlying Maven Wagon transport reads the `maven.wagon.rto` system property to determine the timeout used +when downloading artifacts from a repository. The `lein` script sets that property to be 10000. +If that timeout isn't long enough (for example, when using a slow corporate mirror), +it can be overridden via LEIN_JVM_OPTS: + +```bash +export LEIN_JVM_OPTS="-Dmaven.wagon.rto=1800000" +``` + ## Setting JVM Options To pass extra arguments to the JVM, set the `:jvm-opts` vector. This will override any default JVM opts set by Leiningen. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/app/gitignore leiningen-clojure-2.9.0/resources/leiningen/new/app/gitignore --- leiningen-clojure-2.8.1/resources/leiningen/new/app/gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/app/gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,7 @@ /target /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/app/hgignore leiningen-clojure-2.9.0/resources/leiningen/new/app/hgignore --- leiningen-clojure-2.8.1/resources/leiningen/new/app/hgignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/app/hgignore 2019-02-11 00:27:53.000000000 +0000 @@ -12,3 +12,4 @@ ^target/ ^classes/ ^checkouts/ +profiles.clj diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/app/LICENSE leiningen-clojure-2.9.0/resources/leiningen/new/app/LICENSE --- leiningen-clojure-2.8.1/resources/leiningen/new/app/LICENSE 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/app/LICENSE 2019-02-11 00:27:53.000000000 +0000 @@ -1,214 +1,277 @@ -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from -a Contributor if it was added to the Program by such Contributor itself or -anyone acting on such Contributor's behalf. Contributions do not include -additions to the Program which: (i) are separate modules of software -distributed in conjunction with the Program under their own license -agreement, and (ii) are not derivative works of the Program. + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and -"Contributor" means any person or entity that distributes the Program. + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this +"Program" means the Contributions Distributed in accordance with this Agreement. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. 2. GRANT OF RIGHTS -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. This patent license shall apply to the combination of the -Contribution and the Program if, at the time the Contribution is added by the -Contributor, such addition of the Contribution causes such combination to be -covered by the Licensed Patents. The patent license shall not apply to any -other combinations which include the Contribution. No hardware per se is -licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses -to its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's responsibility -to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). 3. REQUIREMENTS -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: +3.1 If a Contributor Distributes the Program in any form, then: -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on -or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within -the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if any, in a manner that reasonably allows subsequent Recipients to identify -the originator of the Contribution. + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. 4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a -manner which does not create potential liability for other Contributors. -Therefore, if a Contributor includes the Program in a commercial product -offering, such Contributor ("Commercial Contributor") hereby agrees to defend -and indemnify every other Contributor ("Indemnified Contributor") against any -losses, damages and costs (collectively "Losses") arising from claims, -lawsuits and other legal actions brought by a third party against the -Indemnified Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program in -a commercial product offering. The obligations in this section do not apply -to any claims or Losses relating to any actual or alleged intellectual -property infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim -at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. 5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON -AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER -EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR -CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A -PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all risks -associated with its exercise of rights under this Agreement , including but -not limited to the risks and costs of program errors, compliance with -applicable laws, damage to or loss of data, programs or equipment, and -unavailability or interruption of operations. +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming -aware of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under this -Agreement and any licenses granted by Recipient relating to the Program shall -continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of -the Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this -Agreement, whether expressly, by implication, estoppel or otherwise. All -rights in the Program not expressly granted under this Agreement are -reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. \ No newline at end of file diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/app/project.clj leiningen-clojure-2.9.0/resources/leiningen/new/app/project.clj --- leiningen-clojure-2.8.1/resources/leiningen/new/app/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/app/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,9 +1,9 @@ (defproject {{raw-name}} "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html"} - :dependencies [[org.clojure/clojure "1.8.0"]] + :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" + :url "https://www.eclipse.org/legal/epl-2.0/"} + :dependencies [[org.clojure/clojure "1.10.0"]] :main ^:skip-aot {{namespace}} :target-path "target/%s" :profiles {:uberjar {:aot :all}}) diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/app/README.md leiningen-clojure-2.9.0/resources/leiningen/new/app/README.md --- leiningen-clojure-2.8.1/resources/leiningen/new/app/README.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/app/README.md 2019-02-11 00:27:53.000000000 +0000 @@ -32,5 +32,13 @@ Copyright © {{year}} FIXME -Distributed under the Eclipse Public License either version 1.0 or (at -your option) any later version. +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0. + +This Source Code may also be made available under the following Secondary +Licenses when the conditions for such availability set forth in the Eclipse +Public License, v. 2.0 are satisfied: GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or (at your +option) any later version, with the GNU Classpath Exception which is available +at https://www.gnu.org/software/classpath/license.html. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/default/gitignore leiningen-clojure-2.9.0/resources/leiningen/new/default/gitignore --- leiningen-clojure-2.8.1/resources/leiningen/new/default/gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/default/gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,7 @@ /target /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/default/hgignore leiningen-clojure-2.9.0/resources/leiningen/new/default/hgignore --- leiningen-clojure-2.8.1/resources/leiningen/new/default/hgignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/default/hgignore 2019-02-11 00:27:53.000000000 +0000 @@ -2,6 +2,7 @@ target/** classes/** checkouts/** +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/default/LICENSE leiningen-clojure-2.9.0/resources/leiningen/new/default/LICENSE --- leiningen-clojure-2.8.1/resources/leiningen/new/default/LICENSE 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/default/LICENSE 2019-02-11 00:27:53.000000000 +0000 @@ -1,214 +1,277 @@ -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from -a Contributor if it was added to the Program by such Contributor itself or -anyone acting on such Contributor's behalf. Contributions do not include -additions to the Program which: (i) are separate modules of software -distributed in conjunction with the Program under their own license -agreement, and (ii) are not derivative works of the Program. + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and -"Contributor" means any person or entity that distributes the Program. + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this +"Program" means the Contributions Distributed in accordance with this Agreement. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. 2. GRANT OF RIGHTS -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. This patent license shall apply to the combination of the -Contribution and the Program if, at the time the Contribution is added by the -Contributor, such addition of the Contribution causes such combination to be -covered by the Licensed Patents. The patent license shall not apply to any -other combinations which include the Contribution. No hardware per se is -licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses -to its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's responsibility -to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). 3. REQUIREMENTS -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: +3.1 If a Contributor Distributes the Program in any form, then: -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on -or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within -the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if any, in a manner that reasonably allows subsequent Recipients to identify -the originator of the Contribution. + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. 4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a -manner which does not create potential liability for other Contributors. -Therefore, if a Contributor includes the Program in a commercial product -offering, such Contributor ("Commercial Contributor") hereby agrees to defend -and indemnify every other Contributor ("Indemnified Contributor") against any -losses, damages and costs (collectively "Losses") arising from claims, -lawsuits and other legal actions brought by a third party against the -Indemnified Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program in -a commercial product offering. The obligations in this section do not apply -to any claims or Losses relating to any actual or alleged intellectual -property infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim -at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. 5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON -AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER -EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR -CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A -PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all risks -associated with its exercise of rights under this Agreement , including but -not limited to the risks and costs of program errors, compliance with -applicable laws, damage to or loss of data, programs or equipment, and -unavailability or interruption of operations. +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming -aware of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under this -Agreement and any licenses granted by Recipient relating to the Program shall -continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of -the Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this -Agreement, whether expressly, by implication, estoppel or otherwise. All -rights in the Program not expressly granted under this Agreement are -reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. \ No newline at end of file diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/default/project.clj leiningen-clojure-2.9.0/resources/leiningen/new/default/project.clj --- leiningen-clojure-2.8.1/resources/leiningen/new/default/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/default/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,7 @@ (defproject {{raw-name}} "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html"} - :dependencies [[org.clojure/clojure "1.8.0"]]) + :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" + :url "https://www.eclipse.org/legal/epl-2.0/"} + :dependencies [[org.clojure/clojure "1.10.0"]] + :repl-options {:init-ns {{namespace}}}) diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/default/README.md leiningen-clojure-2.9.0/resources/leiningen/new/default/README.md --- leiningen-clojure-2.8.1/resources/leiningen/new/default/README.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/default/README.md 2019-02-11 00:27:53.000000000 +0000 @@ -10,5 +10,13 @@ Copyright © {{year}} FIXME -Distributed under the Eclipse Public License either version 1.0 or (at -your option) any later version. +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0. + +This Source Code may also be made available under the following Secondary +Licenses when the conditions for such availability set forth in the Eclipse +Public License, v. 2.0 are satisfied: GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or (at your +option) any later version, with the GNU Classpath Exception which is available +at https://www.gnu.org/software/classpath/license.html. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/plugin/gitignore leiningen-clojure-2.9.0/resources/leiningen/new/plugin/gitignore --- leiningen-clojure-2.8.1/resources/leiningen/new/plugin/gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/plugin/gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,7 @@ /target /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/plugin/hgignore leiningen-clojure-2.9.0/resources/leiningen/new/plugin/hgignore --- leiningen-clojure-2.8.1/resources/leiningen/new/plugin/hgignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/plugin/hgignore 2019-02-11 00:27:53.000000000 +0000 @@ -2,6 +2,7 @@ target/** classes/** checkouts/** +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/plugin/LICENSE leiningen-clojure-2.9.0/resources/leiningen/new/plugin/LICENSE --- leiningen-clojure-2.8.1/resources/leiningen/new/plugin/LICENSE 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/plugin/LICENSE 2019-02-11 00:27:53.000000000 +0000 @@ -1,214 +1,277 @@ -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from -a Contributor if it was added to the Program by such Contributor itself or -anyone acting on such Contributor's behalf. Contributions do not include -additions to the Program which: (i) are separate modules of software -distributed in conjunction with the Program under their own license -agreement, and (ii) are not derivative works of the Program. + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and -"Contributor" means any person or entity that distributes the Program. + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this +"Program" means the Contributions Distributed in accordance with this Agreement. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. 2. GRANT OF RIGHTS -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. This patent license shall apply to the combination of the -Contribution and the Program if, at the time the Contribution is added by the -Contributor, such addition of the Contribution causes such combination to be -covered by the Licensed Patents. The patent license shall not apply to any -other combinations which include the Contribution. No hardware per se is -licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses -to its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's responsibility -to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). 3. REQUIREMENTS -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: +3.1 If a Contributor Distributes the Program in any form, then: -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on -or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within -the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if any, in a manner that reasonably allows subsequent Recipients to identify -the originator of the Contribution. + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. 4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a -manner which does not create potential liability for other Contributors. -Therefore, if a Contributor includes the Program in a commercial product -offering, such Contributor ("Commercial Contributor") hereby agrees to defend -and indemnify every other Contributor ("Indemnified Contributor") against any -losses, damages and costs (collectively "Losses") arising from claims, -lawsuits and other legal actions brought by a third party against the -Indemnified Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program in -a commercial product offering. The obligations in this section do not apply -to any claims or Losses relating to any actual or alleged intellectual -property infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim -at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. 5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON -AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER -EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR -CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A -PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all risks -associated with its exercise of rights under this Agreement , including but -not limited to the risks and costs of program errors, compliance with -applicable laws, damage to or loss of data, programs or equipment, and -unavailability or interruption of operations. +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming -aware of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under this -Agreement and any licenses granted by Recipient relating to the Program shall -continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of -the Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this -Agreement, whether expressly, by implication, estoppel or otherwise. All -rights in the Program not expressly granted under this Agreement are -reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. \ No newline at end of file diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/plugin/project.clj leiningen-clojure-2.9.0/resources/leiningen/new/plugin/project.clj --- leiningen-clojure-2.8.1/resources/leiningen/new/plugin/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/plugin/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,6 @@ (defproject {{name}} "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html"} + :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" + :url "https://www.eclipse.org/legal/epl-2.0/"} :eval-in-leiningen true) diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/plugin/README.md leiningen-clojure-2.9.0/resources/leiningen/new/plugin/README.md --- leiningen-clojure-2.8.1/resources/leiningen/new/plugin/README.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/plugin/README.md 2019-02-11 00:27:53.000000000 +0000 @@ -21,5 +21,13 @@ Copyright © {{year}} FIXME -Distributed under the Eclipse Public License either version 1.0 or (at -your option) any later version. +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0. + +This Source Code may also be made available under the following Secondary +Licenses when the conditions for such availability set forth in the Eclipse +Public License, v. 2.0 are satisfied: GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or (at your +option) any later version, with the GNU Classpath Exception which is available +at https://www.gnu.org/software/classpath/license.html. diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/template/hgignore leiningen-clojure-2.9.0/resources/leiningen/new/template/hgignore --- leiningen-clojure-2.8.1/resources/leiningen/new/template/hgignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/template/hgignore 2019-02-11 00:27:53.000000000 +0000 @@ -2,6 +2,7 @@ target/** classes/** checkouts/** +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/template/LICENSE leiningen-clojure-2.9.0/resources/leiningen/new/template/LICENSE --- leiningen-clojure-2.8.1/resources/leiningen/new/template/LICENSE 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/template/LICENSE 2019-02-11 00:27:53.000000000 +0000 @@ -1,214 +1,277 @@ -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC -LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM -CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are -distributed by that particular Contributor. A Contribution 'originates' from -a Contributor if it was added to the Program by such Contributor itself or -anyone acting on such Contributor's behalf. Contributions do not include -additions to the Program which: (i) are separate modules of software -distributed in conjunction with the Program under their own license -agreement, and (ii) are not derivative works of the Program. + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and -"Contributor" means any person or entity that distributes the Program. + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. -"Licensed Patents" mean patent claims licensable by a Contributor which are -necessarily infringed by the use or sale of its Contribution alone or when -combined with the Program. - -"Program" means the Contributions distributed in accordance with this +"Program" means the Contributions Distributed in accordance with this Agreement. -"Recipient" means anyone who receives the Program under this Agreement, -including all Contributors. +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. 2. GRANT OF RIGHTS -a) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free copyright license to -reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and -such derivative works, in source code and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants -Recipient a non-exclusive, worldwide, royalty-free patent license under -Licensed Patents to make, use, sell, offer to sell, import and otherwise -transfer the Contribution of such Contributor, if any, in source code and -object code form. This patent license shall apply to the combination of the -Contribution and the Program if, at the time the Contribution is added by the -Contributor, such addition of the Contribution causes such combination to be -covered by the Licensed Patents. The patent license shall not apply to any -other combinations which include the Contribution. No hardware per se is -licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses -to its Contributions set forth herein, no assurances are provided by any -Contributor that the Program does not infringe the patent or other -intellectual property rights of any other entity. Each Contributor disclaims -any liability to Recipient for claims brought by any other entity based on -infringement of intellectual property rights or otherwise. As a condition to -exercising the rights and licenses granted hereunder, each Recipient hereby -assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to -allow Recipient to distribute the Program, it is Recipient's responsibility -to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright license -set forth in this Agreement. + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). 3. REQUIREMENTS -A Contributor may choose to distribute the Program in object code form under -its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: +3.1 If a Contributor Distributes the Program in any form, then: -i) effectively disclaims on behalf of all Contributors all warranties and -conditions, express and implied, including warranties or conditions of title -and non-infringement, and implied warranties or conditions of merchantability -and fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for -damages, including direct, indirect, special, incidental and consequential -damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered -by that Contributor alone and not by any other party; and - -iv) states that source code for the Program is available from such -Contributor, and informs licensees how to obtain it in a reasonable manner on -or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within -the Program. - -Each Contributor must identify itself as the originator of its Contribution, -if any, in a manner that reasonably allows subsequent Recipients to identify -the originator of the Contribution. + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. 4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain responsibilities with -respect to end users, business partners and the like. While this license is -intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a -manner which does not create potential liability for other Contributors. -Therefore, if a Contributor includes the Program in a commercial product -offering, such Contributor ("Commercial Contributor") hereby agrees to defend -and indemnify every other Contributor ("Indemnified Contributor") against any -losses, damages and costs (collectively "Losses") arising from claims, -lawsuits and other legal actions brought by a third party against the -Indemnified Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program in -a commercial product offering. The obligations in this section do not apply -to any claims or Losses relating to any actual or alleged intellectual -property infringement. In order to qualify, an Indemnified Contributor must: -a) promptly notify the Commercial Contributor in writing of such claim, and -b) allow the Commercial Contributor to control, and cooperate with the -Commercial Contributor in, the defense and any related settlement -negotiations. The Indemnified Contributor may participate in any such claim -at its own expense. - -For example, a Contributor might include the Program in a commercial product -offering, Product X. That Contributor is then a Commercial Contributor. If -that Commercial Contributor then makes performance claims, or offers -warranties related to Product X, those performance claims and warranties are -such Commercial Contributor's responsibility alone. Under this section, the -Commercial Contributor would have to defend claims against the other -Contributors related to those performance claims and warranties, and if a -court requires any other Contributor to pay any damages as a result, the -Commercial Contributor must pay those damages. +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. 5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON -AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER -EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR -CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A -PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all risks -associated with its exercise of rights under this Agreement , including but -not limited to the risks and costs of program errors, compliance with -applicable laws, damage to or loss of data, programs or equipment, and -unavailability or interruption of operations. +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY -CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION -LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of the -remainder of the terms of this Agreement, and without further action by the -parties hereto, such provision shall be reformed to the minimum extent -necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Program itself -(excluding combinations of the Program with other software or hardware) -infringes such Recipient's patent(s), then such Recipient's rights granted -under Section 2(b) shall terminate as of the date such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to -comply with any of the material terms or conditions of this Agreement and -does not cure such failure in a reasonable period of time after becoming -aware of such noncompliance. If all Recipient's rights under this Agreement -terminate, Recipient agrees to cease use and distribution of the Program as -soon as reasonably practicable. However, Recipient's obligations under this -Agreement and any licenses granted by Recipient relating to the Program shall -continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in -order to avoid inconsistency the Agreement is copyrighted and may only be -modified in the following manner. The Agreement Steward reserves the right to -publish new versions (including revisions) of this Agreement from time to -time. No one other than the Agreement Steward has the right to modify this -Agreement. The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as the Agreement -Steward to a suitable separate entity. Each new version of the Agreement will -be given a distinguishing version number. The Program (including -Contributions) may always be distributed subject to the version of the -Agreement under which it was received. In addition, after a new version of -the Agreement is published, Contributor may elect to distribute the Program -(including its Contributions) under the new version. Except as expressly -stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this -Agreement, whether expressly, by implication, estoppel or otherwise. All -rights in the Program not expressly granted under this Agreement are -reserved. - -This Agreement is governed by the laws of the State of New York and the -intellectual property laws of the United States of America. No party to this -Agreement will bring a legal action under this Agreement more than one year -after the cause of action arose. Each party waives its rights to a jury trial -in any resulting litigation. +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. \ No newline at end of file diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/template/project.clj leiningen-clojure-2.9.0/resources/leiningen/new/template/project.clj --- leiningen-clojure-2.8.1/resources/leiningen/new/template/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/template/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,6 @@ (defproject {{name}}/lein-template "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://example.com/FIXME" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html"} + :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0" + :url "https://www.eclipse.org/legal/epl-2.0/"} :eval-in-leiningen true) diff -Nru leiningen-clojure-2.8.1/resources/leiningen/new/template/README.md leiningen-clojure-2.9.0/resources/leiningen/new/template/README.md --- leiningen-clojure-2.8.1/resources/leiningen/new/template/README.md 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/resources/leiningen/new/template/README.md 2019-02-11 00:27:53.000000000 +0000 @@ -10,5 +10,13 @@ Copyright © {{year}} FIXME -Distributed under the Eclipse Public License either version 1.0 or (at -your option) any later version. +This program and the accompanying materials are made available under the +terms of the Eclipse Public License 2.0 which is available at +http://www.eclipse.org/legal/epl-2.0. + +This Source Code may also be made available under the following Secondary +Licenses when the conditions for such availability set forth in the Eclipse +Public License, v. 2.0 are satisfied: GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or (at your +option) any later version, with the GNU Classpath Exception which is available +at https://www.gnu.org/software/classpath/license.html. diff -Nru leiningen-clojure-2.8.1/sample.project.clj leiningen-clojure-2.9.0/sample.project.clj --- leiningen-clojure-2.8.1/sample.project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/sample.project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -36,6 +36,11 @@ ;; relies on features only found in newer Leiningen versions. :min-lein-version "2.0.0" + ;; You can require a specific version of Leiningen. In case of mismatch + ;; execution will abort. When versions are compared, suffixes such as + ;; "-SNAPSHOT" are dropped. + ;; :exact-lein-version "2.8.2" + ;;; Dependencies, Plugins, and Repositories ;; Dependencies are listed as [group-id/name version]; in addition ;; to keywords supported by Pomegranate, you can use :native-prefix @@ -78,8 +83,8 @@ ;; warns when version ranges are present anywhere in the dependency tree, ;; but can be set to true to warn for both ranges and overrides, or :abort ;; to exit in the case of ranges or overrides. Setting this to :warn or - ; :abort will also warn you when plugins or their dependencies - ; conflict with libraries used by Leiningen itself. + ;; :abort will also warn you when plugins or their dependencies + ;; conflict with libraries used by Leiningen itself. :pedantic? :abort ;; Global exclusions are applied across the board, as an alternative ;; to duplication for multiple dependencies with the same excluded libraries. @@ -382,12 +387,12 @@ ;; Only one of #{:nrepl-handler :nrepl-middleware} ;; may be used at a time. ;; Use a different server-side nREPL handler. - :nrepl-handler (clojure.tools.nrepl.server/default-handler) + :nrepl-handler (nrepl.server/default-handler) ;; Add server-side middleware to nREPL stack. :nrepl-middleware [my.nrepl.thing/wrap-amazingness ;; TODO: link to more detailed documentation. ;; Middleware without appropriate metadata - ;; (see clojure.tools.nrepl.middleware/set-descriptor! + ;; (see nrepl.middleware/set-descriptor! ;; for details) will simply be appended to the stack ;; of middleware (rather than ordered based on its ;; expectations and requirements). @@ -467,7 +472,12 @@ :executions ([:execution [:id "echodir"] [:goals ([:goal "run"])] [:phase "verify"]])}] - [org.apache.tomcat.maven/tomcat7-maven-plugin "2.1"]] + [org.apache.tomcat.maven/tomcat7-maven-plugin "2.1"] + [com.google.appengine/appengine-maven-plugin "1.9.68" + ;; Use a list to pass any structure unaltered + (:configuration + [:project "foo"] + [:version "bar"])]] ;; Include tag in generated pom.xml file. All key/value pairs ;; appear exactly as configured. If absent, Leiningen will try to ;; use information from a .git directory. diff -Nru leiningen-clojure-2.8.1/src/leiningen/change.clj leiningen-clojure-2.9.0/src/leiningen/change.clj --- leiningen-clojure-2.8.1/src/leiningen/change.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/change.clj 2019-02-11 00:27:53.000000000 +0000 @@ -173,7 +173,7 @@ The first argument should be a keyword (or mashed-together keywords for nested values indicating which value to change). The second argument should name a function var which will be called with the current value -as its first argument and the remaining task aruments as the rest. +as its first argument and the remaining task arguments as the rest. This will append \"-SNAPSHOT\" to the current version: @@ -182,6 +182,11 @@ When called programmatically, you may pass a coll of keywords for the first arg or an actual function for the second. +Using set as the function argument will set the key directly, rather than +applying a function to the original value: + + $ lein change version set '\"1.0.0\"' + All the arguments to f are passed through the reader, so double quoting is necessary to use strings. Note that this task reads the project.clj file from disk rather than honoring the project map, so profile merging or diff -Nru leiningen-clojure-2.8.1/src/leiningen/clean.clj leiningen-clojure-2.9.0/src/leiningen/clean.clj --- leiningen-clojure-2.8.1/src/leiningen/clean.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/clean.clj 2019-02-11 00:27:53.000000000 +0000 @@ -69,7 +69,7 @@ clean-target "\"] is not allowed.")) (protected-path? project clean-target) (main/abort (error-msg "Deleting non-target project paths [\"" - clean-target "%s\"] is not allowed."))))) + clean-target "\"] is not allowed."))))) (defn- with-parent-target-path "Assoc the :target-path sans the profile suffix, if any format diff -Nru leiningen-clojure-2.8.1/src/leiningen/compile.clj leiningen-clojure-2.9.0/src/leiningen/compile.clj --- leiningen-clojure-2.8.1/src/leiningen/compile.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/compile.clj 2019-02-11 00:27:53.000000000 +0000 @@ -26,8 +26,8 @@ their class files are present and up-to-date." [{:keys [aot source-paths] :as project}] (if (or (= :all aot) (= [:all] aot)) - (b/namespaces-on-classpath :classpath (map io/file source-paths)) - (find-namespaces-by-regex project aot))) + (sort (b/namespaces-on-classpath :classpath (map io/file source-paths))) + (sort (find-namespaces-by-regex project aot)))) (defn stale-namespaces "Return a seq of namespaces that are both compilable and that have missing or diff -Nru leiningen-clojure-2.8.1/src/leiningen/deploy.clj leiningen-clojure-2.9.0/src/leiningen/deploy.clj --- leiningen-clojure-2.8.1/src/leiningen/deploy.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/deploy.clj 2019-02-11 00:27:53.000000000 +0000 @@ -37,7 +37,7 @@ [id settings] (do (when @utils/rebound-io? - (main/abort "No credentials found for" id "(did you mean `lein deploy" + (main/abort "No credentials found for " id "(did you mean `lein deploy" "clojars`?)\nPassword prompts are not supported when ran" "after other (potentially)\ninteractive tasks.\nSee `lein" "help deploy` for an explanation of how to specify" @@ -160,7 +160,7 @@ See http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-with-classifiers.html " [version f] - (let [pattern (re-pattern (format "%s-(.*)\\.%s" version (extension f))) + (let [pattern (re-pattern (format "%s-(\\p{Alnum}*)\\.%s" version (extension f))) [_ classifier-of] (re-find pattern f)] (when-not (empty? classifier-of) classifier-of))) @@ -190,6 +190,9 @@ $ lein deploy myrepo com.blueant/fancypants 1.0.1 fancypants.jar pom.xml +The repository can be defined in defproject or a profile, or it can be a URL. +Use file://$HOME/.m2/repository to install in the local repo. + While this works with any arbitrary files on disk, downstream projects will not be able to depend on jars that are deployed without a pom." ([project] diff -Nru leiningen-clojure-2.8.1/src/leiningen/install.clj leiningen-clojure-2.9.0/src/leiningen/install.clj --- leiningen-clojure-2.8.1/src/leiningen/install.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/install.clj 2019-02-11 00:27:53.000000000 +0000 @@ -10,7 +10,9 @@ (java.util UUID))) (defn install - "Install jar and pom to the local repository; typically ~/.m2." + "Install jar and pom to the local repository; typically ~/.m2. + +In order to install arbitrary files into a repository see the deploy task." [project] (when (not (or (:install-releases? project true) (pom/snapshot? project))) diff -Nru leiningen-clojure-2.8.1/src/leiningen/jar.clj leiningen-clojure-2.9.0/src/leiningen/jar.clj --- leiningen-clojure-2.8.1/src/leiningen/jar.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/jar.clj 2019-02-11 00:27:53.000000000 +0000 @@ -22,10 +22,13 @@ (defn- unix-path [path] (.replace path "\\" "/")) -(def ^:private default-manifest +(defn- default-manifest [project] {"Created-By" (str "Leiningen " (main/leiningen-version)) "Built-By" (System/getProperty "user.name") - "Build-Jdk" (System/getProperty "java.version")}) + "Build-Jdk" (System/getProperty "java.version") + "Leiningen-Project-ArtifactId" (:name project) + "Leiningen-Project-GroupId" (:group project) + "Leiningen-Project-Version" (:version project)}) (declare ^:private manifest-entry) @@ -55,7 +58,7 @@ (defn ^:internal make-manifest [project] (let [project-manifest (into {} (:manifest project)) - default-manifest' (cond-> default-manifest + default-manifest' (cond-> (default-manifest project) ;; Add default "Main-Class" only if :main is not ;; explicitly set to nil (:main project :not-found) diff -Nru leiningen-clojure-2.8.1/src/leiningen/javac.clj leiningen-clojure-2.9.0/src/leiningen/javac.clj --- leiningen-clojure-2.8.1/src/leiningen/javac.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/javac.clj 2019-02-11 00:27:53.000000000 +0000 @@ -7,8 +7,7 @@ [leiningen.core.project :as project] [clojure.java.io :as io] [clojure.string :as string]) - (:import java.io.File - javax.tools.ToolProvider)) + (:import java.io.File)) (defn- stale-java-sources "Returns a lazy seq of file paths: every Java source file within dirs modified @@ -138,7 +137,7 @@ "Compile Java source files. Add a :java-source-paths key to project.clj to specify where to find them. -Options passed in on the command line as well as options from the :javac-opts +Options passed in on the command line as well as options from the :javac-options vector in project.clj will be given to the compiler; e.g. `lein javac -verbose`. Like the compile and deps tasks, this should be invoked automatically when diff -Nru leiningen-clojure-2.8.1/src/leiningen/new.clj leiningen-clojure-2.9.0/src/leiningen/new.clj --- leiningen-clojure-2.8.1/src/leiningen/new.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/new.clj 2019-02-11 00:27:53.000000000 +0000 @@ -62,14 +62,14 @@ (abort "Sorry, names such as clojure or *jure are not allowed." "\nIf you intend to use this name ironically, please set the" "\nLEIN_IRONIC_JURE environment variable and try again.") - (and (re-find #"(?i)(? project :repl-options :ack-port))] + (-> project :repl-options :ack-port) + (:ack-port nrepl.config/config))] (Integer/valueOf p))) (defn repl-port [project] (Integer/valueOf (or (user/getenv "LEIN_REPL_PORT") (-> project :repl-options :port) + (:port nrepl.config/config) 0))) (defn repl-host [project] (or (user/getenv "LEIN_REPL_HOST") (-> project :repl-options :host) + (:host nrepl.config/config) + (:bind nrepl.config/config) "127.0.0.1")) +(defn repl-transport [project] + (if-let [transport (or (user/getenv "LEIN_REPL_TRANSPORT") + (-> project :repl-options :transport) + (:transport nrepl.config/config))] + (utils/require-resolve transport))) + +(defn repl-greeting-fn [project] + (if-let [greeting-fn (or (user/getenv "LEIN_REPL_GREETING_FN") + (-> project :repl-options :greeting-fn) + (:greeting-fn nrepl.config/config))] + (utils/require-resolve greeting-fn))) + (defn client-repl-port [project] (let [port (repl-port project)] (if (= port 0) @@ -113,7 +139,9 @@ (if (:port opts) (update-in opts [:port] str) opts))) (defn init-ns [{{:keys [init-ns]} :repl-options, :keys [main]}] - (or init-ns main)) + (or init-ns (if main (if (namespace main) + (symbol (namespace main)) + main)))) (defn- wrap-init-ns [project] (if-let [init-ns (init-ns project)] @@ -132,8 +160,8 @@ init-ns-sentinel# true)) (h# msg#))))] (doto wrap-init-ns# - (clojure.tools.nrepl.middleware/set-descriptor! - {:requires #{(var clojure.tools.nrepl.middleware.session/session)} + (nrepl.middleware/set-descriptor! + {:requires #{(var nrepl.middleware.session/session)} :expects #{"eval"}}) (alter-var-root (constantly @wrap-init-ns#)))))) @@ -142,14 +170,16 @@ (when (and nrepl-middleware nrepl-handler) (main/abort "Can only use one of" :nrepl-handler "or" :nrepl-middleware)) (let [nrepl-middleware (remove nil? (concat [(wrap-init-ns project)] - nrepl-middleware))] + (or nrepl-middleware + (:middleware nrepl.config/config))))] (or nrepl-handler - `(clojure.tools.nrepl.server/default-handler + (:handler nrepl.config/config) + `(nrepl.server/default-handler ~@(map #(if (symbol? %) (list 'var %) %) nrepl-middleware))))) (defn- init-requires [{{:keys [nrepl-middleware nrepl-handler caught]} :repl-options :as project} & nses] - (let [defaults '[clojure.tools.nrepl.server complete.core] + (let [defaults '[nrepl.server complete.core] nrepl-syms (->> (cons nrepl-handler nrepl-middleware) (filter symbol?) (map namespace) @@ -169,26 +199,40 @@ (catch Throwable e#)))) (defn- server-forms [project cfg ack-port start-msg?] - [`(let [server# (clojure.tools.nrepl.server/start-server - :bind ~(:host cfg) :port ~(:port cfg) - :ack-port ~ack-port - :handler ~(handler-for project)) - port# (:port server#) - repl-port-file# (apply io/file ~(repl-port-file-vector project)) - ;; TODO 3.0: remove legacy repl port support. - legacy-repl-port# (if (.exists (io/file ~(:target-path project))) - (io/file ~(:target-path project) "repl-port"))] - (when ~start-msg? - (println "nREPL server started on port" port# "on host" ~(:host cfg) - (str "- nrepl://" ~(:host cfg) ":" port#))) - (spit (doto repl-port-file# .deleteOnExit) port#) - (when legacy-repl-port# - (spit (doto legacy-repl-port# .deleteOnExit) port#)) - @(promise)) + [`(do (if ~(some-> (:transport cfg) meta :ns str) + (require (symbol ~(-> (:transport cfg) meta :ns str)))) + (let [server# (nrepl.server/start-server + :bind ~(:host cfg) + :port ~(:port cfg) + :transport-fn ~(:transport cfg) + :greeting-fn ~(:greeting-fn cfg) + :ack-port ~ack-port + :handler ~(handler-for project)) + port# (:port server#) + repl-port-file# (apply io/file ~(repl-port-file-vector project)) + ;; TODO 3.0: remove legacy repl port support. + legacy-repl-port# (if (.exists (io/file ~(:target-path project ""))) + (io/file ~(:target-path project) "repl-port"))] + (when ~start-msg? + (println "nREPL server started on port" port# "on host" ~(:host cfg) + (str "- " + (nrepl.transport/uri-scheme ~(or (:transport cfg) #'nrepl.transport/bencode)) + "://" ~(:host cfg) ":" port#))) + (spit (doto repl-port-file# .deleteOnExit) port#) + (when legacy-repl-port# + (spit (doto legacy-repl-port# .deleteOnExit) port#)) + @(promise))) ;; TODO: remove in favour of :injections in the :repl profile `(do ~(when-let [init-ns (init-ns project)] `(try (doto '~init-ns require in-ns) (catch Exception e# (println e#) (ns ~init-ns)))) + (when-not (resolve 'when-some) + (binding [*out* *err*] + (println "As of 2.8.2, the repl task is incompatible with" + "Clojure versions older than 1.7.0." + "\nYou can downgrade to 2.8.1 or use `lein trampoline run" + "-m clojure.main` for a simpler fallback repl.")) + (System/exit 1)) ~@(for [n (init-requires project)] `(try (require ~n) (catch Throwable t# @@ -198,9 +242,8 @@ (def reply-profile {:dependencies - '[^:displace [reply "0.3.7" - :exclusions [org.clojure/clojure ring/ring-core]] - [clojure-complete "0.2.4"]]}) + '[^:displace [reply "0.4.3" :exclusions [org.clojure/clojure ring/ring-core]] + [clojure-complete "0.2.5"]]}) (defn- trampoline-repl [project port] (let [init-option (get-in project [:repl-options :init]) @@ -225,7 +268,7 @@ :handler (nrepl.ack/handle-ack nrepl.server/unknown-op)))) (defn nrepl-dependency? [{:keys [dependencies]}] - (some (fn [[d]] (re-find #"tools.nrepl" (str d))) dependencies)) + (some (fn [[d]] (re-find #"nrepl" (str d))) dependencies)) ;; NB: This function cannot happen in parallel (or be recursive) because of race ;; conditions in nrepl.ack. @@ -233,7 +276,7 @@ (nrepl.ack/reset-ack-port!) (when-not (nrepl-dependency? project) (main/info "Warning: no nREPL dependency detected.") - (main/info "Be sure to include org.clojure/tools.nrepl in :dependencies" + (main/info "Be sure to include nrepl/nrepl in :dependencies" "of your profile.")) (let [prep-blocker @eval/prep-blocker ack-port (:port @ack-server)] @@ -241,9 +284,13 @@ (binding [eval/*pump-in* false] (let [[evals requires] (server-forms project cfg ack-port headless?)] - (eval/eval-in-project project - `(do ~(ignore-sigint-form) ~evals) - requires)))) + (try + (eval/eval-in-project project + `(do ~(ignore-sigint-form) ~evals) + requires) + (catch Exception e + (when main/*debug* (throw e)) + (main/warn (.getMessage e))))))) (Thread.) (.start)) (when project @prep-blocker) (when headless? @(promise)) @@ -251,13 +298,15 @@ (get-in project [:repl-options :timeout] 60000))] (do (main/info "nREPL server started on port" repl-port "on host" (:host cfg) - (str "- nrepl://" (:host cfg) ":" repl-port)) + (str "- " + (nrepl.transport/uri-scheme (or (:transport cfg) #'nrepl.transport/bencode)) + "://" (:host cfg) ":" repl-port)) repl-port) (main/abort "REPL server launch timed out.")))) (defn client [project attach] (when (is-uri? attach) - (require 'cemerick.drawbridge.client)) + (require 'drawbridge.client)) (pomegranate/add-dependencies :coordinates (:dependencies reply-profile) :repositories (map classpath/add-repo-auth (:repositories project))) @@ -289,7 +338,6 @@ :connect [dest] Connects to an already running nREPL server. Dest can be: - - an HTTP(S) URL -- connects to an HTTP(S) nREPL endpoint; - host:port -- connects to the specified host and port; - port -- resolves host from the LEIN_REPL_HOST environment variable or :repl-options, in that order, and defaults to @@ -301,6 +349,25 @@ that file and use its contents, allowing sensitive credentials to be kept out of the process table and shell history. +:transport [transport] + Start nREPL using the transport referenced here, instead of using the + default bencode transport. Useful is you want to leverage a client + that can't handle bencode. + If no transport is given then it will be inferred by checking + LEIN_REPL_TRANSPORT, :repl-options, or .nrepl.edn (global one or in + the project root), in that order. + +:greeting-fn [greeting-fn] + Function used to generate the greeting message in the REPL after the + nREPL server has started. Useful for \"dumb\" transports like TTY, or + when you want to send some custom message to clients on connect. + If no greeting-fn is given then it will be inferred by checking + LEIN_REPL_GREETING_FN, :repl-options, or .nrepl.edn (global one or in + the project root), in that order. + +For connecting to HTTPS repl servers add [nrepl/drawbridge \"0.1.5\"] +to your :plugins list. + Note: the :repl profile is implicitly activated for this task. It cannot be deactivated, but it can be overridden." @@ -312,7 +379,9 @@ (client project (doto (connect-string project opts) (->> (main/info "Connecting to nREPL at")))) (let [cfg {:host (or (opt-host opts) (repl-host project)) - :port (or (opt-port opts) (repl-port project))}] + :port (or (opt-port opts) (repl-port project)) + :transport (or (opt-transport opts) (repl-transport project)) + :greeting-fn (or (opt-greeting-fn opts) (repl-greeting-fn project))}] (utils/with-write-permissions (repl-port-file-path project) (case subcommand ":start" (if trampoline/*trampoline?* diff -Nru leiningen-clojure-2.8.1/src/leiningen/search.clj leiningen-clojure-2.9.0/src/leiningen/search.clj --- leiningen-clojure-2.8.1/src/leiningen/search.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/src/leiningen/search.clj 2019-02-11 00:27:53.000000000 +0000 @@ -2,16 +2,25 @@ "Search Central and Clojars for published artifacts." (:require [clojure.string :as string] [clojure.xml :as xml] - [leiningen.core.project :as project]) + [leiningen.core.project :as project] + [leiningen.core.main :as main]) (:import (java.net URLEncoder))) (defn- decruft-central-xml [content] (zipmap (map #(get-in % [:attrs :name]) content) (map #(get-in % [:content 0]) content))) +(defn parse [url] + (try (xml/parse url) + (catch Exception e + (main/warn "Could not retrieve search results from" url "because of" + (class e)) + (when main/*debug* + (.printStackTrace e))))) + (defn search-central [query] (let [url (str "https://search.maven.org/solrsearch/select?wt=xml&q=" query)] - (doseq [doc (get-in (xml/parse url) [:content 1 :content])] + (doseq [doc (get-in (parse url) [:content 1 :content])] (let [result (decruft-central-xml (:content doc)) dep (if (= (result "a") (result "g")) (result "a") @@ -20,7 +29,7 @@ (defn search-clojars [query] (let [url (str "https://clojars.org/search?format=xml&q=" query)] - (doseq [{result :attrs} (:content (xml/parse url))] + (doseq [{result :attrs} (:content (parse url))] (let [dep (if (= (result :jar_name) (result :group_name)) (result :jar_name) (str (result :group_name) "/" (result :jar_name)))] diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/compile.clj leiningen-clojure-2.9.0/test/leiningen/test/compile.clj --- leiningen-clojure-2.8.1/test/leiningen/test/compile.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/compile.clj 2019-02-11 00:27:53.000000000 +0000 @@ -4,7 +4,9 @@ [clojure.java.io :only [file]] [clojure.java.shell :only [with-sh-dir]] [leiningen.compile] - [leiningen.test.helper :only [sample-project delete-file-recursively + [leiningen.test.helper :only [sample-project + delete-file-recursively + sample-ordered-aot-project sample-failing-project sample-reader-cond-project tricky-name-project @@ -31,6 +33,12 @@ (is (.exists (file "test_projects" "sample" "target" "classes" "nom" "nom" "nom.class")))) +(deftest test-compile-order-sorted + (is (= 0 + (compare + (vec (compilable-namespaces sample-ordered-aot-project)) + (vec (sort (compilable-namespaces sample-ordered-aot-project))))))) + (deftest test-compile-regex (compile more-gen-classes-project "#\"\\.ba.$\"") (is (.exists (file "test_projects" "more-gen-classes" "target" diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/deploy.clj leiningen-clojure-2.9.0/test/leiningen/test/deploy.clj --- leiningen-clojure-2.8.1/test/leiningen/test/deploy.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/deploy.clj 2019-02-11 00:27:53.000000000 +0000 @@ -91,4 +91,6 @@ "fat" "1.2.3-alpha6" "some-project-1.2.3-alpha6-fat.jar" "fat" "1.2.3-SNAPSHOT" "some-project-1.2.3-SNAPSHOT-fat.jar" nil "1.2.3" "some-project-1.2.3-.jar" - nil "1.2.3" "some-project-1.2.3.jar")) + nil "1.2.3" "some-project-1.2.3.jar" + nil "0.1.0" "/opt/workspace/mylib-0.1.0-builddir/target/mylib-0.1.0.jar" + "RC2" "0.1.0" "\\opt\\workspace\\mylib-0.1.0-builddir\\target\\mylib-0.1.0-RC2.jar")) diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/deps.clj leiningen-clojure-2.9.0/test/leiningen/test/deps.clj --- leiningen-clojure-2.8.1/test/leiningen/test/deps.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/deps.clj 2019-02-11 00:27:53.000000000 +0000 @@ -141,7 +141,7 @@ (deftest ^:online test-managed-deps (let [is-clojure-dep? #(#{'org.clojure/clojure - 'org.clojure/tools.nrepl} + 'nrepl/nrepl} (first %)) remove-clojure-deps #(remove is-clojure-dep? %) managed-deps (remove-clojure-deps (:managed-dependencies managed-deps-project)) diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/helper.clj leiningen-clojure-2.9.0/test/leiningen/test/helper.clj --- leiningen-clojure-2.8.1/test/leiningen/test/helper.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/helper.clj 2019-02-11 00:27:53.000000000 +0000 @@ -44,6 +44,8 @@ (def sample-no-aot-project (read-test-project "sample-no-aot")) +(def sample-ordered-aot-project (read-test-project "sample-ordered-aot")) + (def sample-profile-meta-project (read-test-project "sample-profile-meta")) (def sample-reader-cond-project (read-test-project "sample-reader-cond")) @@ -78,6 +80,8 @@ (def managed-deps-snapshot-project (read-test-project "managed-deps-snapshot")) +(def with-pom-plugins-project (read-test-project "with-pom-plugins")) + (defn abort-msg "Catches main/abort thrown by calling f on its args and returns its error message." diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/jar.clj leiningen-clojure-2.9.0/test/leiningen/test/jar.clj --- leiningen-clojure-2.8.1/test/leiningen/test/jar.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/jar.clj 2019-02-11 00:27:53.000000000 +0000 @@ -15,6 +15,7 @@ (def mock-project-1 {:name "mock-project" + :group "mock-group" :version "1.0" :main 'foo.one-two.three-four.bar :manifest [["hello" "world"] @@ -26,6 +27,7 @@ (def mock-project-2 {:name "mock-project" + :group "mock-group" :version "1.0" :main 'foo.one-two.three-four.bar :manifest {"hello" "world" @@ -45,9 +47,14 @@ manifest-map)] (is (= {"Main-Class" "foo.one_two.three_four.bar", "hello" "world"} (select-keys mm ["hello" "Main-Class"]))) - (is (= #{"Manifest-Version" "Main-Class" "hello" "A" "G" "Created-By" "Built-By" - "Build-Jdk" "long-line"} + (is (= #{"A" "Build-Jdk" "Built-By" "Created-By" "G" + "Leiningen-Project-ArtifactId" "Leiningen-Project-GroupId" + "Leiningen-Project-Version" "Main-Class" "Manifest-Version" + "hello" "long-line"} (-> mm keys set))) + (is (= (get mm "Leiningen-Project-ArtifactId") "mock-project")) + (is (= (get mm "Leiningen-Project-GroupId") "mock-group")) + (is (= (get mm "Leiningen-Project-Version") "1.0")) (is (= (get mm "long-line") long-line)) (is (= #{"my-section-1" "my-section-2"} (-> mock-project diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/keys.clj leiningen-clojure-2.9.0/test/leiningen/test/keys.clj --- leiningen-clojure-2.8.1/test/leiningen/test/keys.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/keys.clj 2019-02-11 00:27:53.000000000 +0000 @@ -9,6 +9,6 @@ "If this fails, yell at technomancy to generate a new key!"))) (deftest clojars-ssl-cert - (let [month-before-cert-expiry (.parse df "2018-05-18")] + (let [month-before-cert-expiry (.parse df "2020-05-17")] (is (< (System/currentTimeMillis) (.getTime month-before-cert-expiry)) "If this fails, yell at tcrawley to update the clojars.pem for use by lein as a client cert."))) diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/new.clj leiningen-clojure-2.9.0/test/leiningen/test/new.clj --- leiningen-clojure-2.8.1/test/leiningen/test/new.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/new.clj 2019-02-11 00:27:53.000000000 +0000 @@ -7,7 +7,7 @@ (deftest test-new-with-just-project-name (leiningen.new/new nil "test-new-proj") (is (= #{"README.md" "project.clj" "resources" "src" "core.clj" "test" - "doc" "intro.md" "test_new_proj" "core_test.clj" ".gitignore" + "doc" "intro.md" "test_new_proj" "core_test.clj" ".gitignore" ".hgignore" "LICENSE" "CHANGELOG.md"} (set (map (memfn getName) (rest (file-seq (file "test-new-proj"))))))) (delete-file-recursively (file "test-new-proj") :silently)) @@ -39,7 +39,8 @@ (deftest test-new-with-plugin-template (leiningen.new/new nil "plugin" "test-new-plugin") - (is (= #{"README.md" "project.clj" "src" "leiningen" "test_new_plugin.clj" ".gitignore" + (is (= #{"README.md" "project.clj" "src" "leiningen" + "test_new_plugin.clj" ".gitignore" "LICENSE" ".hgignore" "CHANGELOG.md"} (set (map (memfn getName) (rest (file-seq (file "test-new-plugin"))))))) (delete-file-recursively (file "test-new-plugin") :silently)) @@ -78,7 +79,7 @@ (deftest test-new-with-clojure-project-name (is (re-find - #"clojure can't be used as a project name" + #"clojure.*can't be used as project name" (with-redefs [leiningen.new/resolve-remote-template (constantly false)] (abort-msg leiningen.new/new nil "clojure"))))) @@ -130,6 +131,7 @@ (is (= #{"README.md" "project.clj" "src" "core.clj" "test" "resources" "doc" "intro.md" "test_new_proj" "core_test.clj" ".gitignore" "LICENSE" ".hgignore" "CHANGELOG.md"} - (set (map (memfn getName) (rest (file-seq (file new-pwd "test-new-proj"))))))) + (set (map (memfn getName) + (rest (file-seq (file new-pwd "test-new-proj"))))))) (System/setProperty "leiningen.original.pwd" original-pwd) (delete-file-recursively (file new-pwd) :silently))) diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/pom.clj leiningen-clojure-2.9.0/test/leiningen/test/pom.clj --- leiningen-clojure-2.8.1/test/leiningen/test/pom.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/pom.clj 2019-02-11 00:27:53.000000000 +0000 @@ -5,7 +5,8 @@ [leiningen.core.user :as user] [leiningen.test.helper :only [sample-project sample-profile-meta-project - managed-deps-project managed-deps-snapshot-project] + managed-deps-project managed-deps-snapshot-project + with-pom-plugins-project] :as lthelper]) (:require [clojure.data.xml :as xml] [leiningen.core.project :as project] @@ -65,7 +66,7 @@ (is (= "the git head" (first-in xml [:project :scm :tag])))))) (deftest test-pom-scm-git - (with-redefs [pom/parse-github-url (constantly ["techno" "lein"]) + (with-redefs [pom/read-git-origin (constantly "git@github.com:techno/lein.git") pom/read-git-head (constantly "the git head")] (let [project (with-profile-merged sample-project ^:leaky {:scm {:name "git" @@ -97,6 +98,36 @@ (is (= "https://github.com/this-is-not/ignored" (first-in xml [:project :scm :url]))) (is (= "the git head" (first-in xml [:project :scm :tag])))))) +(deftest test-pom-scm-git-with-https-url + (with-redefs [pom/read-git-origin (constantly "https://github.com/techno/lein.git") + pom/read-git-head (constantly "the git head")] + (let [project (with-profile-merged sample-project + ^:leaky {:scm {:name "git" + :dir "." ;; so resolve-git-dir looks for lein project .git dir, not the sample + :connection ":connection is not ignored in :scm :git" + :url "https://github.com/this-is-not/ignored"}}) + pom (make-pom project) + xml (xml/parse-str pom)] + (is (= ":connection is not ignored in :scm :git" (first-in xml [:project :scm :connection]))) + (is (= "scm:git:ssh://git@github.com/techno/lein.git" (first-in xml [:project :scm :developerConnection]))) + (is (= "https://github.com/this-is-not/ignored" (first-in xml [:project :scm :url]))) + (is (= "the git head" (first-in xml [:project :scm :tag])))))) + +(deftest test-pom-scm-git-with-non-git-url + (with-redefs [pom/read-git-origin (constantly "https://github.com/techno/lein") + pom/read-git-head (constantly "the git head")] + (let [project (with-profile-merged sample-project + ^:leaky {:scm {:name "git" + :dir "." ;; so resolve-git-dir looks for lein project .git dir, not the sample + :connection ":connection is not ignored in :scm :git" + :url "https://github.com/this-is-not/ignored"}}) + pom (make-pom project) + xml (xml/parse-str pom)] + (is (= ":connection is not ignored in :scm :git" (first-in xml [:project :scm :connection]))) + (is (= "scm:git:ssh://git@github.com/techno/lein.git" (first-in xml [:project :scm :developerConnection]))) + (is (= "https://github.com/this-is-not/ignored" (first-in xml [:project :scm :url]))) + (is (= "the git head" (first-in xml [:project :scm :tag])))))) + (deftest test-pom-default-values (let [xml (xml/parse-str (make-pom sample-project))] (is (= "nomnomnom" (first-in xml [:project :groupId])) @@ -367,19 +398,19 @@ (testing "leaky explicit profile" (let [p (make-pom (with-profile-merged sample-project ^:leaky - {:dependencies [['org.clojure/tools.nrepl "0.2.2"]]})) + {:dependencies [['nrepl/nrepl "0.4.5"]]})) deps (deep-content (xml/parse-str p) [:project :dependencies]) nrepls (filter #(re-find #"nrepl" (pr-str %)) deps) versions (map #(deep-content % [:dependency :version]) nrepls)] - (is (= [["0.2.2"]] versions)))) + (is (= [["0.4.5"]] versions)))) (testing "pom-scope" (let [p (make-pom (with-profile-merged sample-project ^{:pom-scope :test} - {:dependencies [['org.clojure/tools.nrepl "0.2.2"]]})) + {:dependencies [['nrepl/nrepl "0.4.5"]]})) deps (deep-content (xml/parse-str p) [:project :dependencies]) nrepls (filter #(re-find #"nrepl" (pr-str %)) deps) versions (map #(deep-content % [:dependency :version]) nrepls)] - (is (= [["0.2.2"]] versions))))) + (is (= [["0.4.5"]] versions))))) (deftest test-leaky-profile (let [p (make-pom sample-profile-meta-project) @@ -435,3 +466,50 @@ (is (= [nil nil nil nil nil "sources" "sources" nil nil] (map #(first-in % [:dependency :classifier]) (deep-content xml [:project :dependencyManagement :dependencies])))))))) + +(deftest test-pom-plugins + (let [xml (xml/parse-str (make-pom with-pom-plugins-project)) + plugins (deep-content xml [:project :build :plugins]) + get-plugin (fn [re] + (first (filter #(re-find re (pr-str %)) plugins))) + simple-plugin (get-plugin #"simple-plugin") + plugin-with-vec (get-plugin #"with-vec") + plugin-with-map (get-plugin #"with-map") + plugin-with-list (get-plugin #"with-list")] + (testing "two-parameter version adds maven plugin" + (is (= simple-plugin + (xml/sexp-as-element + [:plugin + [:groupId "two.parameter"] + [:artifactId "simple-plugin"] + [:version "1.0.0"]])))) + (testing "vector as third parameter is interpreted as a mapping" + (is (= plugin-with-vec + (xml/sexp-as-element + [:plugin + [:groupId "three.parameter"] + [:artifactId "with-vec"] + [:version "1.0.1"] + [:a 3]])))) + (testing "hashmap as third parameter is converted to tags" + (is (= plugin-with-map + (xml/sexp-as-element + [:plugin + [:groupId "three.parameter"] + [:artifactId "with-map"] + [:version "1.0.2"] + [:a 1] + [:b 2] + [:c 3]])))) + (testing "list as third parameter keeps structure" + (is (= plugin-with-list + (xml/sexp-as-element + [:plugin + [:groupId "three.parameter"] + [:artifactId "with-list"] + [:version "1.0.3"] + [:root + [:a 1] + [:b + [:c 2] + [:d 3]]]])))))) diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/repl.clj leiningen-clojure-2.9.0/test/leiningen/test/repl.clj --- leiningen-clojure-2.8.1/test/leiningen/test/repl.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/repl.clj 2019-02-11 00:27:53.000000000 +0000 @@ -143,8 +143,8 @@ [:port 3 :attach "xy"] {:attach "xy"}))) (deftest test-init-ns - (let [main {:main 'main} + (let [main {:main 'some.ns/main} repl-opts (merge main {:repl-options {:init-ns 'init-ns}})] (are [in exp] (= exp (init-ns in)) - main 'main + main 'some.ns repl-opts 'init-ns))) diff -Nru leiningen-clojure-2.8.1/test/leiningen/test/uberjar.clj leiningen-clojure-2.9.0/test/leiningen/test/uberjar.clj --- leiningen-clojure-2.8.1/test/leiningen/test/uberjar.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test/leiningen/test/uberjar.clj 2019-02-11 00:27:53.000000000 +0000 @@ -41,7 +41,9 @@ (with-open [zf (ZipFile. uberjar-file)] (is (= '{nomnomnom/identity clojure.core/identity mf/i nomnomnom/override - mf/s method.fn/static} + mf/s method.fn/static + ordered/set flatland.ordered.set/into-ordered-set + ordered/map flatland.ordered.map/ordered-map} (->> (.getEntry zf "data_readers.clj") (.getInputStream zf) slurp read-string))))))) diff -Nru leiningen-clojure-2.8.1/test_projects/bad-require/.gitignore leiningen-clojure-2.9.0/test_projects/bad-require/.gitignore --- leiningen-clojure-2.8.1/test_projects/bad-require/.gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/bad-require/.gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -2,6 +2,7 @@ /lib /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/test_projects/file-not-found-thrower/.gitignore leiningen-clojure-2.9.0/test_projects/file-not-found-thrower/.gitignore --- leiningen-clojure-2.8.1/test_projects/file-not-found-thrower/.gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/file-not-found-thrower/.gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,7 @@ /target /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/test_projects/java-main/.gitignore leiningen-clojure-2.9.0/test_projects/java-main/.gitignore --- leiningen-clojure-2.8.1/test_projects/java-main/.gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/java-main/.gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -1,6 +1,7 @@ /target /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/test_projects/more-gen-classes/.gitignore leiningen-clojure-2.9.0/test_projects/more-gen-classes/.gitignore --- leiningen-clojure-2.8.1/test_projects/more-gen-classes/.gitignore 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/more-gen-classes/.gitignore 2019-02-11 00:27:53.000000000 +0000 @@ -2,6 +2,7 @@ /lib /classes /checkouts +profiles.clj pom.xml pom.xml.asc *.jar diff -Nru leiningen-clojure-2.8.1/test_projects/sample-ordered-aot/project.clj leiningen-clojure-2.9.0/test_projects/sample-ordered-aot/project.clj --- leiningen-clojure-2.8.1/test_projects/sample-ordered-aot/project.clj 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/sample-ordered-aot/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -0,0 +1,7 @@ +(defproject sample-ordered-aot "0.1.0-SNAPSHOT" + :description "This project is to drive testing of ordered aot compilation." + :url "http://example.com/FIXME" + :license {:name "Eclipse Public License" + :url "http://www.eclipse.org/legal/epl-v10.html"} + :dependencies [[org.clojure/clojure "1.8.0"]] + :aot :all) diff -Nru leiningen-clojure-2.8.1/test_projects/sample-ordered-aot/src/sample_ordered_aot/baz.clj leiningen-clojure-2.9.0/test_projects/sample-ordered-aot/src/sample_ordered_aot/baz.clj --- leiningen-clojure-2.8.1/test_projects/sample-ordered-aot/src/sample_ordered_aot/baz.clj 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/sample-ordered-aot/src/sample_ordered_aot/baz.clj 2019-02-11 00:27:53.000000000 +0000 @@ -0,0 +1,6 @@ +(ns sample-ordered-aot.baz) + +(defn baz + "I don't do a whole lot." + [x] + (println x "Hello, World!")) diff -Nru leiningen-clojure-2.8.1/test_projects/sample-ordered-aot/src/sample_ordered_aot/foo.clj leiningen-clojure-2.9.0/test_projects/sample-ordered-aot/src/sample_ordered_aot/foo.clj --- leiningen-clojure-2.8.1/test_projects/sample-ordered-aot/src/sample_ordered_aot/foo.clj 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/sample-ordered-aot/src/sample_ordered_aot/foo.clj 2019-02-11 00:27:53.000000000 +0000 @@ -0,0 +1,6 @@ +(ns sample-ordered-aot.foo) + +(defn foo + "I don't do a whole lot." + [x] + (println x "Hello, World!")) diff -Nru leiningen-clojure-2.8.1/test_projects/uberjar-merging/project.clj leiningen-clojure-2.9.0/test_projects/uberjar-merging/project.clj --- leiningen-clojure-2.8.1/test_projects/uberjar-merging/project.clj 2017-10-27 21:35:27.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/uberjar-merging/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -6,7 +6,8 @@ (defproject nomnomnom "0.5.0-SNAPSHOT" :dependencies [[org.clojure/clojure "1.8.0"] [janino "2.5.15"] - [org.platypope/method-fn "0.1.0"]] + [org.platypope/method-fn "0.1.0"] + [porcupine "0.0.4"]] :uberjar-exclusions [#"DUMMY"] :uberjar-merge-with {#"\.properties$" [slurp str spit]} :test-selectors {:default (fn [m] (not (:integration m))) diff -Nru leiningen-clojure-2.8.1/test_projects/with-pom-plugins/project.clj leiningen-clojure-2.9.0/test_projects/with-pom-plugins/project.clj --- leiningen-clojure-2.8.1/test_projects/with-pom-plugins/project.clj 1970-01-01 00:00:00.000000000 +0000 +++ leiningen-clojure-2.9.0/test_projects/with-pom-plugins/project.clj 2019-02-11 00:27:53.000000000 +0000 @@ -0,0 +1,14 @@ +(defproject project-with-pom-plugins "0.1.0-SNAPSHOT" + :pom-plugins [[two.parameter/simple-plugin "1.0.0"] + [three.parameter/with-vec "1.0.1" + [:a 1 :a 2 :a 3]] + [three.parameter/with-map "1.0.2" + {:a 1 + :b 2 + :c 3}] + [three.parameter/with-list "1.0.3" + (:root + [:a 1] + [:b + [:c 2] + [:d 3]])]])