diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d0cba6..562f1e8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -183,8 +183,4 @@ jobs: - name: Test PECL package build run: | python3 dev-scripts/prepare_pecl_release.py --name aws-crt --user aws-crt --version 1.0.0 - tar -zxf *.tgz - cd awscrt-1.0.0 - phpize - ./configure - make + sudo pecl install awscrt-1.0.0.tgz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..ccf4c98 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ + +name: Release PECL Preparation + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + package: + name: Prepare package + runs-on: ubuntu-latest + + steps: + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.0' + + - name: Checkout Source + uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: recursive + + - name: Prepare Package Script + id: prepare-package + # Update the version in code and generate the package. + run: | + version_with_v=$(git describe --tags --abbrev=0) + VERSION=$(echo ${version_with_v} | cut -f2 -dv) + echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT + python3 dev-scripts/prepare_pecl_release.py --name aws-crt --user aws-crt --email aws-sdk-common-runtime@amazon.com --version ${VERSION} + + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: pecl_package_${{ steps.prepare-package.outputs.VERSION }} + path: awscrt-${{ steps.prepare-package.outputs.VERSION }}.tgz diff --git a/.gitignore b/.gitignore index 1eefe24..ed2e677 100644 --- a/.gitignore +++ b/.gitignore @@ -179,6 +179,7 @@ fabric.properties .deps .libs/ build/ +cmake_build/ configure.in configure.ac configure.bat diff --git a/Makefile.frag b/Makefile.frag index a1414a7..4eb26f5 100644 --- a/Makefile.frag +++ b/Makefile.frag @@ -1,5 +1,6 @@ -INT_DIR=build/install +INT_DIR=$(builddir)/build/install +CMAKE_BUILD_DIR=$(builddir)/cmake_build GENERATE_STUBS=$(shell expr `php --version | head -1 | cut -f 2 -d' '` \>= 7.1) CMAKE = cmake3 @@ -18,6 +19,8 @@ ifneq (OFF,$(USE_OPENSSL)) endif CMAKE_CONFIGURE = $(CMAKE) \ + -DCMAKE_SOURCE_DIR=$(srcdir) \ + -DCMAKE_BINARY_DIR=$(CMAKE_BUILD_DIR) \ -DCMAKE_INSTALL_PREFIX=$(INT_DIR) \ -DBUILD_TESTING=OFF \ -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) \ @@ -31,34 +34,36 @@ all: extension .PHONY: all extension # configure for static aws-crt-ffi.a -build/aws-crt-ffi-static/CMakeCache.txt: - $(CMAKE_CONFIGURE) -Hcrt/aws-crt-ffi -Bbuild/aws-crt-ffi-static -DBUILD_SHARED_LIBS=OFF +$(CMAKE_BUILD_DIR)/aws-crt-ffi-static/CMakeCache.txt: + $(CMAKE_CONFIGURE) -H$(srcdir)/crt/aws-crt-ffi -B$(CMAKE_BUILD_DIR)/aws-crt-ffi-static -DBUILD_SHARED_LIBS=OFF # build static libaws-crt-ffi.a -build/aws-crt-ffi-static/libaws-crt-ffi.a: build/aws-crt-ffi-static/CMakeCache.txt - $(CMAKE_BUILD) build/aws-crt-ffi-static $(CMAKE_TARGET) +$(CMAKE_BUILD_DIR)/aws-crt-ffi-static/libaws-crt-ffi.a: $(CMAKE_BUILD_DIR)/aws-crt-ffi-static/CMakeCache.txt + $(CMAKE_BUILD) $(CMAKE_BUILD_DIR)/aws-crt-ffi-static $(CMAKE_TARGET) # PHP extension target -extension: ext/awscrt.lo +extension: $(builddir)/ext/awscrt.lo # Force the crt object target to depend on the CRT static library -ext/awscrt.lo: ext/awscrt.c +$(builddir)/ext/awscrt.lo: $(builddir)/ext/awscrt.c -ext/awscrt.c: build/aws-crt-ffi-static/libaws-crt-ffi.a ext/api.h ext/awscrt_arginfo.h +$(builddir)/ext/awscrt.c: $(CMAKE_BUILD_DIR)/aws-crt-ffi-static/libaws-crt-ffi.a $(builddir)/ext/api.h $(builddir)/ext/awscrt_arginfo.h -ext/awscrt_arginfo.h: awscrt.stub.php gen_stub.php +$(builddir)/ext/awscrt_arginfo.h: $(srcdir)/ext/awscrt.stub.php $(srcdir)/gen_stub.php ifeq ($(GENERATE_STUBS),1) - # install awscrt.stub.php to ext/ - cp -v awscrt.stub.php ext/awscrt.stub.php # generate awscrt_arginfo.h - php gen_stub.php --minimal-arginfo ext/awscrt.stub.php + mkdir -p $(builddir)/ext && php $(srcdir)/gen_stub.php --minimal-arginfo $(srcdir)/ext/awscrt.stub.php endif # transform/install api.h from FFI lib -ext/api.h : crt/aws-crt-ffi/src/api.h - php gen_api.php crt/aws-crt-ffi/src/api.h > ext/api.h +$(srcdir)/ext/api.h: $(srcdir)/crt/aws-crt-ffi/src/api.h + php $(srcdir)/gen_api.php $(srcdir)/crt/aws-crt-ffi/src/api.h > $(srcdir)/ext/api.h -ext/php_aws_crt.h: ext/awscrt_arginfo.h ext/api.h +# install api.h to ext/ as well +$(builddir)/ext/api.h : $(srcdir)/ext/api.h + mkdir -p $(builddir)/ext + +$(builddir)/ext/php_aws_crt.h: $(srcdir)/ext/awscrt_arginfo.h $(srcdir)/ext/api.h vendor/bin/phpunit: composer update diff --git a/composer.json b/composer.json index 387721e..13e7ac6 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." }, "scripts": { - "test": "./dev-scripts/run_tests", + "test": "./dev-scripts/run_tests.sh", "test-extension": "@test", "test-win": ".\\dev-scripts\\run_tests.bat" }, diff --git a/dev-scripts/cleanup_build.py b/dev-scripts/cleanup_build.py index cc10372..cfff8b1 100644 --- a/dev-scripts/cleanup_build.py +++ b/dev-scripts/cleanup_build.py @@ -10,6 +10,7 @@ '.deps', '.libs', 'build', + 'cmake_build', 'include', 'modules', 'vendor', @@ -38,9 +39,8 @@ 'mkinstalldirs', 'run-tests.php', 'awscrt.la', - 'awscrt.dep', + 'ext/awscrt.dep', 'composer.lock', - 'ext/awscrt.stub.php', 'acinclude.m4', 'aclocal.m4', '**/*.lo', diff --git a/dev-scripts/prepare_pecl_package_xml.py b/dev-scripts/prepare_pecl_package_xml.py index 3acbf58..4a7f873 100644 --- a/dev-scripts/prepare_pecl_package_xml.py +++ b/dev-scripts/prepare_pecl_package_xml.py @@ -37,13 +37,10 @@ special_docs = "(LICENSE.*|NOTICE|changelog.txt|CHANGELOG|THIRD-PARTY|README.*|readme|METADATA|CONTRIBUTORS|UPDATING|doc.config|THIRD-PARTY-LICENSES.txt)" special_tests = "(ci-test.sh|format-check.sh|run_tests.*|sanitizer-blacklist.txt|run-clang-tidy.sh|benchmark-build-run.sh|break-tests.sh|generate-coverage.sh|test.xml)" -special_src = "(gen_api.php|gen_stub.php|CMakeLists.txt|post.sh|postun.sh|Makefile.*|build-buildspec.sh|build-deps.sh|objects.txt|go.*|BUILD.*|DEPS|install_and_run.sh|codemod.sh|requirements.txt)" +special_src = "(gen_api.php|gen_stub.php|CMakeLists.txt|post.sh|postun.sh|Makefile.*|build-buildspec.sh|build-deps.sh|objects.txt|go.*|BUILD.*|DEPS|install_and_run.sh|codemod.sh|requirements.txt|awscrt.stub.php)" skip_files = "(package.xml.*|prepare_release.sh|codereview.settings|.*\\.o|.*\\.a|.*\\.obj|.*\\.lib|break-tests-android.sh|whitespace.txt|prepare_package_xml.sh|crypto_test_data.cc|.*\\.pdf|.*\\.svg|.*\\.docx|cbmc-proof.txt|codecov.*|litani.*|.*\\.toml|module\\.modulemap|cleanup.sh|^\..*)" - -special_scripts = "(awscrt.stub.php)" - -skip_directories = "(tests|test|AWSCRTAndroidTestRunner|docker-images|codebuild|fuzz|third_party|docs|generated-src|aws-lc|aws-crt-sys|ecdsa-fuzz-corpus|bin|examples|compliance|verification|^\..*)" +skip_directories = "(tests|test|AWSCRTAndroidTestRunner|docker-images|codebuild|fuzz|third_party|docs|generated-src|aws-lc|aws-crt-sys|ecdsa-fuzz-corpus|bin|examples|compliance|verification|dev-scripts|^\..*)" output_file_name = os.path.join(work_dir, 'package.xml') @@ -54,9 +51,7 @@ def process_file(file_name, f): return f.write(f'log_level = 0; } +#define CRT_VERSION "1.0.4" + zend_module_entry awscrt_module_entry = { STANDARD_MODULE_HEADER, "awscrt", @@ -272,7 +274,7 @@ zend_module_entry awscrt_module_entry = { NULL, /* RINIT */ NULL, /* RSHUTDOWN */ NULL, /* MINFO */ - NO_VERSION_YET, + CRT_VERSION, PHP_MODULE_GLOBALS(awscrt), PHP_GINIT(awscrt), NULL, /* GSHUTDOWN */