diff --git a/docs/SUPPORTED_MYSQL_DOWNLOADS.md b/docs/SUPPORTED_MYSQL_DOWNLOADS.md index fcc38d0..d789eeb 100644 --- a/docs/SUPPORTED_MYSQL_DOWNLOADS.md +++ b/docs/SUPPORTED_MYSQL_DOWNLOADS.md @@ -20,11 +20,11 @@ *Architectures used can be overridden by the ```arch``` option provided your OS and system supports running applications that use those architectures.* -Linux, Windows, macOS x64: MySQL v5.7.19 - v9.2.0 +Linux, Windows, macOS x64: MySQL v5.7.19 - v9.3.0 -Linux ARM64: MySQL v8.0.31 - v9.2.0 +Linux ARM64: MySQL v8.0.31 - v9.3.0 -macOS ARM64: MySQL v8.0.26 - v9.2.0 +macOS ARM64: MySQL v8.0.26 - v9.3.0 Windows ARM64: N/A - Read about the ```arch``` option to run this package on your system @@ -46,7 +46,7 @@ macOS: | v8.0.28 - v8.0.31 | macOS 11 (Big Sur) | | v8.0.32 - v8.0.34 | macOS 12 (Monterey) | | v8.0.35 - v8.0.39 OR v8.1.0 - v8.4.2 OR v9.0.1 | macOS 13 (Ventura) | -| v8.0.40 - v8.0.41 OR v8.4.3 - v8.4.4 OR v9.1.0 - v9.2.0 | macOS 14 (Sonoma) | +| v8.0.40 - v8.0.42 OR v8.4.3 - v8.4.5 OR v9.1.0 - v9.3.0 | macOS 14 (Sonoma) | ## Operating System Maximum Version Requirements @@ -86,4 +86,4 @@ Ubuntu Linux: Fedora Linux: ```libaio1``` package and ```tar``` package -*Document last updated in v1.9.0* \ No newline at end of file +*Document last updated in v1.10.0* \ No newline at end of file diff --git a/src/constants.ts b/src/constants.ts index a8734b1..286ad60 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,5 +1,4 @@ import { InternalServerOptions, OptionTypeChecks } from "../types"; -import { randomUUID } from "crypto"; import {normalize as normalizePath} from 'path' import { tmpdir } from "os"; import { valid as validSemver, coerce as coerceSemver } from "semver"; @@ -124,25 +123,25 @@ export const DOWNLOADABLE_MYSQL_VERSIONS = [ '8.0.0', '8.0.1', '8.0.2', '8.0.3', '8.0.4', - '8.0.11', '8.0.12', '8.0.13', '8.0.14', '8.0.15', '8.0.16', '8.0.17', '8.0.18', '8.0.19', '8.0.20', '8.0.21', '8.0.22', '8.0.23', '8.0.24', '8.0.25', '8.0.26', '8.0.27', '8.0.28', '8.0.30', '8.0.31', '8.0.32', '8.0.33', '8.0.34', '8.0.35', '8.0.36', '8.0.37', '8.0.39', '8.0.40', '8.0.41', + '8.0.11', '8.0.12', '8.0.13', '8.0.14', '8.0.15', '8.0.16', '8.0.17', '8.0.18', '8.0.19', '8.0.20', '8.0.21', '8.0.22', '8.0.23', '8.0.24', '8.0.25', '8.0.26', '8.0.27', '8.0.28', '8.0.30', '8.0.31', '8.0.32', '8.0.33', '8.0.34', '8.0.35', '8.0.36', '8.0.37', '8.0.39', '8.0.40', '8.0.41', '8.0.42', '8.1.0', '8.2.0', '8.3.0', - '8.4.0', '8.4.2', '8.4.3', '8.4.4', + '8.4.0', '8.4.2', '8.4.3', '8.4.4', '8.4.5', - '9.0.1', '9.1.0', '9.2.0' + '9.0.1', '9.1.0', '9.2.0', '9.3.0' ] as const; export const MYSQL_ARCH_SUPPORT = { darwin: { - arm64: '8.0.26 - 9.2.0', - x64: '5.7.19 - 9.2.0' + arm64: '8.0.26 - 9.3.0', + x64: '5.7.19 - 9.3.0' }, linux: { - arm64: '8.0.31 - 9.2.0', - x64: '5.7.19 - 9.2.0' + arm64: '8.0.31 - 9.3.0', + x64: '5.7.19 - 9.3.0' }, win32: { - x64: '5.7.19 - 9.2.0' + x64: '5.7.19 - 9.3.0' } } as const; export const MYSQL_MIN_OS_SUPPORT = { @@ -162,7 +161,7 @@ export const MYSQL_MIN_OS_SUPPORT = { '8.0.28 - 8.0.31': '20.0.0', '8.0.32 - 8.0.34': '21.0.0', '8.0.35 - 8.0.39 || 8.1.0 - 8.4.2 || 9.0.1': '22.0.0', - '8.0.40 - 8.0.41 || 8.4.3 - 8.4.4 || 9.1.0 - 9.2.0': '23.0.0' + '8.0.40 - 8.0.42 || 8.4.3 - 8.4.5 || 9.1.0 - 9.3.0': '23.0.0' } } as const; export const DMR_MYSQL_VERSIONS = '8.0.0 - 8.0.2'; @@ -177,26 +176,37 @@ export const MYSQL_MACOS_VERSIONS_IN_FILENAME = { '8.0.30 - 8.0.31': 'macos12', '8.0.32 - 8.0.35 || 8.1.0 - 8.2.0': 'macos13', '8.0.36 - 8.0.40 || 8.3.0 - 8.4.3 || 9.0.1 - 9.1.0': 'macos14', - '8.0.41 || 8.4.4 || 9.2.0': 'macos15' + '8.0.41 - 8.0.42 || 8.4.4 - 8.4.5 || 9.2.0 - 9.3.0': 'macos15' } as const; export const MYSQL_LINUX_GLIBC_VERSIONS = { - '5.7.19 - 8.0.20': '2.12', - '8.0.21 - 9.2.0': '2.17' + //8.0.42, 8.4.5, and 9.3.0 with glibc 2.28 does NOT have a minimal install version for x64 but it DOES have arm64 support. + //8.0.42, 8.4.5, and 9.3.0 with glibc 2.17 DOES have a minimal install version for x64 but does NOT have arm64 support. + //The new versions having these differences between the glibc versions has led to the glibc versions being different depending on CPU architecture for this package. + //Neither glibc versions for the above MySQL versions have an arm64 minimal install. + x64: { + '5.7.19 - 8.0.20': '2.12', + '8.0.21 - 9.3.0': '2.17' + }, + arm64: { + '5.7.19 - 8.0.20': '2.12', + '8.0.21 - 8.0.41 || 8.1.0 - 8.4.4 || 9.0.1 - 9.2.0': '2.17', + '8.0.42 || 8.4.5 || 9.3.0': '2.28' + } } as const; export const MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE = { '5.7.19 - 8.0.15': 'no', '8.0.16 - 8.0.20': 'no-glibc-tag', - '8.0.21 - 9.2.0': 'glibc-tag' + '8.0.21 - 9.3.0': 'glibc-tag' } as const; -export const MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE_ARM64 = '>=8.0.33' +export const MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE_ARM64 = '8.0.33 - 8.0.41 || 8.1.0 - 8.4.4 || 9.0.1 - 9.2.0' //Not available for < 8.0.33 and 8.0.42, 8.4.5, and 9.3.0 export const MYSQL_LINUX_FILE_EXTENSIONS = { x64: { '5.7.19 - 8.0.11': 'gz', - '8.0.12 - 9.2.0': 'xz' + '8.0.12 - 9.3.0': 'xz' }, arm64: { '8.0.31 - 8.0.32': 'gz', - '8.0.33 - 9.2.0': 'xz' + '8.0.33 - 9.3.0': 'xz' } } as const; export const MYSQL_LINUX_MINIMAL_REBUILD_VERSIONS = '8.0.26'; \ No newline at end of file diff --git a/src/libraries/Version.ts b/src/libraries/Version.ts index 04f92be..fa5ea1d 100644 --- a/src/libraries/Version.ts +++ b/src/libraries/Version.ts @@ -89,9 +89,10 @@ export default function getBinaryURL(versionToGet: string = "x", currentArch: st const macOSVersionNameKey = MySQLmacOSVersionNameKeys.find(range => satisfies(selectedVersion, range)) fileLocation = `${major(selectedVersion)}.${minor(selectedVersion)}/mysql-${selectedVersion}${isRC ? '-rc' : isDMR ? '-dmr' : ''}-${MYSQL_MACOS_VERSIONS_IN_FILENAME[macOSVersionNameKey]}-${currentArch === 'x64' ? 'x86_64' : 'arm64'}.tar.gz` } else if (currentOS === 'linux') { - const glibcVersionKeys = Object.keys(MYSQL_LINUX_GLIBC_VERSIONS); + const glibcObject = MYSQL_LINUX_GLIBC_VERSIONS[currentArch]; + const glibcVersionKeys = Object.keys(glibcObject); const glibcVersionKey = glibcVersionKeys.find(range => satisfies(selectedVersion, range)) - const glibcVersion = MYSQL_LINUX_GLIBC_VERSIONS[glibcVersionKey]; + const glibcVersion = glibcObject[glibcVersionKey]; const minimalInstallAvailableKeys = Object.keys(MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE); const minimalInstallAvailableKey = minimalInstallAvailableKeys.find(range => satisfies(selectedVersion, range))