Use EXTENSION_PATH to specify subdirectory in add_extension_from_source

This commit is contained in:
Shivam Mathur 2021-04-19 17:03:57 +05:30
parent 909090903e
commit fe944a16b5
No known key found for this signature in database
GPG Key ID: 3E13E4C8591ACC2A
10 changed files with 25 additions and 28 deletions

View File

@ -154,7 +154,7 @@ describe('Extension tests', () => {
'linux' 'linux'
); );
expect(linux).toContain( expect(linux).toContain(
'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver . master extension' 'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'
); );
}); });
@ -252,7 +252,7 @@ describe('Extension tests', () => {
'darwin' 'darwin'
); );
expect(darwin).toContain( expect(darwin).toContain(
'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver . master extension' 'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'
); );
}); });
}); });

View File

@ -267,7 +267,7 @@ describe('Utils tests', () => {
'extension' 'extension'
) )
).toContain( ).toContain(
'\nadd_extension_from_source ext https://github.com org-name repo-name . release extension' '\nadd_extension_from_source ext https://github.com org-name repo-name release extension'
); );
expect( expect(
await utils.parseExtensionSource( await utils.parseExtensionSource(
@ -275,15 +275,15 @@ describe('Utils tests', () => {
'extension' 'extension'
) )
).toContain( ).toContain(
'\nadd_extension_from_source ext https://sub.domain.tld org repo . release extension' '\nadd_extension_from_source ext https://sub.domain.tld org repo release extension'
); );
expect( expect(
await utils.parseExtensionSource( await utils.parseExtensionSource(
'ext-https://sub.domain.XN--tld/org/repo/sub/dir@release', 'ext-https://sub.domain.XN--tld/org/repo@release',
'extension' 'extension'
) )
).toContain( ).toContain(
'\nadd_extension_from_source ext https://sub.domain.XN--tld org repo sub/dir release extension' '\nadd_extension_from_source ext https://sub.domain.XN--tld org repo release extension'
); );
}); });
}); });

9
dist/index.js vendored
View File

@ -2978,13 +2978,10 @@ exports.customPackage = customPackage;
* @param extension * @param extension
*/ */
async function parseExtensionSource(extension, prefix) { async function parseExtensionSource(extension, prefix) {
var _a, _b; // Groups: extension, domain url, org, repo, release
// Groups: extension, domain url, org, repo, subdirectory, release const regex = /(\w+)-(.+:\/\/.+(?:[.:].+)+(?:\/))?([\w.-]+)\/([\w.-]+)@(.+)/;
// https://regex101.com/r/P3rJiy/1
const regex = /(\w+)-(.+:\/\/.+(?:[.:][^/]+)+)?(?:\/)?([^/]+)\/([^/]+)(?:\/)?(.+)*@(.+)/;
const matches = regex.exec(extension); const matches = regex.exec(extension);
matches[2] = (_a = matches[2]) !== null && _a !== void 0 ? _a : 'https://github.com'; matches[2] = matches[2] ? matches[2].slice(0, -1) : 'https://github.com';
matches[5] = (_b = matches[5]) !== null && _b !== void 0 ? _b : '.';
return await joins('\nadd_extension_from_source', ...matches.splice(1, matches.length), prefix); return await joins('\nadd_extension_from_source', ...matches.splice(1, matches.length), prefix);
} }
exports.parseExtensionSource = parseExtensionSource; exports.parseExtensionSource = parseExtensionSource;

View File

@ -43,7 +43,7 @@ add_cubrid_helper() {
patch_phpize patch_phpize
read -r "${ext}_PREFIX_CONFIGURE_OPTS" <<< "CFLAGS=-Wno-implicit-function-declaration" read -r "${ext}_PREFIX_CONFIGURE_OPTS" <<< "CFLAGS=-Wno-implicit-function-declaration"
read -r "${ext}_CONFIGURE_OPTS" <<< "--with-php-config=$(command -v php-config)" read -r "${ext}_CONFIGURE_OPTS" <<< "--with-php-config=$(command -v php-config)"
add_extension_from_source "$ext" https://github.com CUBRID "$cubrid_repo" . "$cubrid_branch" extension add_extension_from_source "$ext" https://github.com CUBRID "$cubrid_repo" "$cubrid_branch" extension
restore_phpize restore_phpize
fi fi
} }

View File

@ -12,7 +12,8 @@ add_firebird_helper() {
tag="$(php_src_tag)" tag="$(php_src_tag)"
export PDO_FIREBIRD_CONFIGURE_OPTS="--with-pdo-firebird=$firebird_dir" export PDO_FIREBIRD_CONFIGURE_OPTS="--with-pdo-firebird=$firebird_dir"
export PDO_FIREBIRD_LINUX_LIBS="firebird-dev" export PDO_FIREBIRD_LINUX_LIBS="firebird-dev"
add_extension_from_source pdo_firebird https://github.com php php-src ext/pdo_firebird "$tag" extension get export PDO_FIREBIRD_PATH="ext/pdo_firebird"
add_extension_from_source pdo_firebird https://github.com php php-src "$tag" extension get
} }
add_firebird() { add_firebird() {

View File

@ -2,7 +2,7 @@
add_geos_helper() { add_geos_helper() {
export GEOS_LINUX_LIBS='libgeos-dev' export GEOS_LINUX_LIBS='libgeos-dev'
export GEOS_DARWIN_LIBS='geos' export GEOS_DARWIN_LIBS='geos'
add_extension_from_source geos https://github.com libgeos php-geos . 1.0.0 extension get add_extension_from_source geos https://github.com libgeos php-geos 1.0.0 extension get
} }
# Function to add geos # Function to add geos

View File

@ -68,9 +68,9 @@ add_http_helper() {
export HTTP_LINUX_LIBS="zlib1g libbrotli-dev libcurl4-openssl-dev libevent-dev libicu-dev libidn2-dev" export HTTP_LINUX_LIBS="zlib1g libbrotli-dev libcurl4-openssl-dev libevent-dev libicu-dev libidn2-dev"
export HTTP_DARWIN_LIBS="brotli curl icu4c libevent libidn2" export HTTP_DARWIN_LIBS="brotli curl icu4c libevent libidn2"
if [[ "${version:?}" =~ ${nightly_versions:?} ]]; then if [[ "${version:?}" =~ ${nightly_versions:?} ]]; then
add_extension_from_source http https://github.com m6w6 ext-http . master extension add_extension_from_source http https://github.com m6w6 ext-http master extension
else else
add_extension_from_source pecl_http https://pecl.php.net http http . "${ext##*-}" extension pecl add_extension_from_source pecl_http https://pecl.php.net http http "${ext##*-}" extension pecl
fi fi
} }

View File

@ -37,8 +37,9 @@ add_oci_helper() {
status='Installed and enabled' status='Installed and enabled'
read -r "${ext}_LINUX_LIBS" <<< "libaio-dev" read -r "${ext}_LINUX_LIBS" <<< "libaio-dev"
read -r "${ext}_CONFIGURE_OPTS" <<< "--with-php-config=$(command -v php-config) --with-${ext/_/-}=instantclient,$oracle_client" read -r "${ext}_CONFIGURE_OPTS" <<< "--with-php-config=$(command -v php-config) --with-${ext/_/-}=instantclient,$oracle_client"
read -r "${ext}_PATH" <<< "ext/$ext"
patch_phpize patch_phpize
add_extension_from_source "$ext" https://github.com php php-src ext/"$ext" "$(php_src_tag)" extension get add_extension_from_source "$ext" https://github.com php php-src "$(php_src_tag)" extension get
restore_phpize restore_phpize
fi fi
} }

View File

@ -5,7 +5,7 @@ parse_args() {
up_ext_name=$(echo "$extension" | tr '[:lower:]' '[:upper:]') up_ext_name=$(echo "$extension" | tr '[:lower:]' '[:upper:]')
var="${extension}_${suffix}" var="${extension}_${suffix}"
up_var="${up_ext_name}_${suffix}" up_var="${up_ext_name}_${suffix}"
! [[ "$suffix" =~ .*PREFIX|LIBS.* ]] && hyp='-' ! [[ "$suffix" =~ .*PREFIX|LIBS|PATH.* ]] && hyp='-'
output=$(echo "${!var} ${!up_var}" | sed "s/, *$hyp/ $hyp/g" | sed -E "s/^,|,$//g") output=$(echo "${!var} ${!up_var}" | sed "s/, *$hyp/ $hyp/g" | sed -E "s/^,|,$//g")
echo "$output" | xargs -n 1 | sort | uniq | xargs echo "$output" | xargs -n 1 | sort | uniq | xargs
} }
@ -114,16 +114,16 @@ add_extension_from_source() {
url=$2 url=$2
org=$3 org=$3
repo=$4 repo=$4
sub_dir=$5 release=$5
release=$6 prefix=$6
prefix=$7 fetch=${7:-clone}
fetch=${8:-clone}
slug="$extension-$release" slug="$extension-$release"
source="$url/$org/$repo" source="$url/$org/$repo"
libraries="$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)" libraries="$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)"
opts="$(parse_args "$extension" CONFIGURE_OPTS)" opts="$(parse_args "$extension" CONFIGURE_OPTS)"
prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS)" prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS)"
suffix_opts="$(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)" suffix_opts="$(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)"
sub_dir="$(parse_args "$extension" PATH)"
step_log "Setup $slug" step_log "Setup $slug"
( (
add_devtools phpize >/dev/null 2>&1 add_devtools phpize >/dev/null 2>&1

View File

@ -448,12 +448,10 @@ export async function parseExtensionSource(
extension: string, extension: string,
prefix: string prefix: string
): Promise<string> { ): Promise<string> {
// Groups: extension, domain url, org, repo, subdirectory, release // Groups: extension, domain url, org, repo, release
// https://regex101.com/r/P3rJiy/1 const regex = /(\w+)-(.+:\/\/.+(?:[.:].+)+(?:\/))?([\w.-]+)\/([\w.-]+)@(.+)/;
const regex = /(\w+)-(.+:\/\/.+(?:[.:][^/]+)+)?(?:\/)?([^/]+)\/([^/]+)(?:\/)?(.+)*@(.+)/;
const matches = regex.exec(extension) as RegExpExecArray; const matches = regex.exec(extension) as RegExpExecArray;
matches[2] = matches[2] ?? 'https://github.com'; matches[2] = matches[2] ? matches[2].slice(0, -1) : 'https://github.com';
matches[5] = matches[5] ?? '.';
return await joins( return await joins(
'\nadd_extension_from_source', '\nadd_extension_from_source',
...matches.splice(1, matches.length), ...matches.splice(1, matches.length),