Commit Graph

29 Commits

Author SHA1 Message Date
Kévin Dunglas
843d199469
perf: cache computations in WithRequestDocumentRoot (#1154) 2024-11-13 07:10:53 +01:00
Kévin Dunglas
69c43ee43d
chore: use upstream e-dant/watcher headers and build system (#1119)
Some checks failed
Lint Code Base / Lint Code Base (push) Has been cancelled
Sanitizers / ${{ matrix.sanitizer }} (asan) (push) Has been cancelled
Sanitizers / ${{ matrix.sanitizer }} (msan) (push) Has been cancelled
Tests / tests (8.2) (push) Has been cancelled
Tests / tests (8.3) (push) Has been cancelled
Tests / tests (8.4) (push) Has been cancelled
2024-10-31 09:39:51 +01:00
Kévin Dunglas
56d2f99548 chore: make the watcher module internal
Some checks are pending
Lint Code Base / Lint Code Base (push) Waiting to run
Sanitizers / ${{ matrix.sanitizer }} (asan) (push) Waiting to run
Sanitizers / ${{ matrix.sanitizer }} (msan) (push) Waiting to run
Tests / tests (8.2) (push) Waiting to run
Tests / tests (8.3) (push) Waiting to run
Tests / tests (8.4) (push) Waiting to run
2024-10-07 15:37:40 +02:00
Alexander Stecher
8d9b6e755b
feat: restart workers when on source changes (#1013)
* Adds filesystem watcher with tests.

* Refactoring.

* Formatting.

* Formatting.

* Switches to absolute path in tests.

* Fixes race condition from merge conflict.

* Fixes race condition.

* Fixes tests.

* Fixes markdown lint errors.

* Switches back to absolute paths.

* Reverts back to relative file paths.

* Fixes golangci-lint issues.

* Uses github.com/dunglas/go-fswatch instead.

* Stops watcher before stopping workers.

* Updates docs.

* Avoids segfault in tests.

* Fixes watcher segmentation violations on shutdown.

* Adjusts watcher latencies and tests.

* Adds fswatch to dockerfiles

* Fixes fswatch in alpine.

* Fixes segfault (this time for real).

* Allows queueing new reload if file changes while workers are reloading.

* Makes tests more consistent.

* Prevents the watcher from getting stuck if there is an error in the worker file itself.

* Reverts changing the image.

* Puts fswatch version into docker-bake.hcl.

* Asserts instead of panicking.

* Adds notice

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update dev.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update alpine.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update alpine.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update dev-alpine.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update dev-alpine.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update dev.Dockerfile

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update docs/config.md

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Runs fswatch version.

* Removes .json.

* Replaces ms with s.

* Resets the channel after closing it.

* Update watcher_options.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update watcher_test.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Asserts no error instead.

* Fixes a race condition where events are fired after frankenphp has stopped.

* Updates docs.

* Update watcher_options_test.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Allows queuing events while watchers are reloading.

* go fmt

* Refactors stopping and draining logic.

* Allows extended watcher configuration with dirs, recursion, symlinks, case-sensitivity, latency, monitor types and regex.

* Updates docs.

* Adds TODOS.

* go fmt.

* Fixes linting errors.

* Also allows wildcards in the longform and adjusts docs.

* Adds debug log.

* Fixes the watcher short form.

* Refactors sessions and options into a struct.

* Fixes an overflow in the 'workersReadyWG' on unexpected terminations.

* Properly logs errors coming from session.Start().

* go fmt.

* Adds --nocache.

* Fixes lint issue.

* Refactors and resolves race condition on worker reload.

* Implements debouncing with a timer as suggested by @withinboredom.

* Starts watcher even if no workers are defined.

* Updates docs with file limit warning.

* Adds watch config unit tests.

* Adjusts debounce timings.

* go fmt.

* Adds fswatch to static builder (test).

* Adds a short grace period between stopping and destroying the watcher sessions.

* Adds caddy test.

* Adjusts sleep time.

* Swap to edant/watcher.

* Fixes watch options and tests.

* go fmt.

* Adds TODO.

* Installs edant/watcher in the bookworm image.

* Fixes linting.

* Refactors the watcher into its own module.

* Adjusts naming.

* ADocker image adjustments and refactoring.

* Testing installation methods.

* Installs via gcc instead.

* Fixes pointer formats.

* Fixes lint issues.

* Fixes arm alpine and updates docs.

* Clang format.

* Fixes dirs.

* Adds watcher version arg.

* Uses static lib version.

* Adds watcher to tests and sanitizers.

* Uses sudo for copying the shared lib.

* Removes unnused func.

* Refactoring.

* Update .github/workflows/sanitizers.yaml

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Adds fpic.

* Fixes linting.

* Skips tests in msan.

* Resets op_cache in every worker thread after termination

* Review fixes part 1.

* Test: installing libstc++ instead of gcc.

* Test: using msan ignorelist.

* Test: using msan ignorelist.

* Test: using msan ignorelist.

* Allows '/**/' for global recursion and '**/' for relative recursion.

* Reverts using the ignorelist.

* Calls opcache directly.

* Adds --watch to php-server command

* Properly free CStrings.

* Sorts alphabetically and uses curl instead of git.

* Labeling and formatting.

* Update .github/workflows/sanitizers.yaml

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update .github/workflows/sanitizers.yaml

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update .github/workflows/tests.yaml

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update .github/workflows/tests.yaml

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update caddy/caddy.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update docs/config.md

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update frankenphp_with_watcher_test.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update watcher/watcher.h

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update frankenphp.c

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update watcher/watcher.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update docs/config.md

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update frankenphp_with_watcher_test.go

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update testdata/files/.gitignore

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update watcher/watcher-c.h

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Update watcher/watcher.c

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>

* Fixes test and Dockerfile.

* Fixes Dockerfiles.

* Resets go versions.

* Replaces unsafe.pointer with uintptr_t

* Prevents worker channels from being destroyed on reload.

* Minimizes the public api by only passing a []string.

* Adds support for directory patterns and multiple '**' globs.

* Adjusts label.

* go fmt.

* go mod tidy.

* Fixes merge conflict.

* Refactoring and formatting.

* Cleans up unused vars and functions.

* Allows dirs with a dot.

* Makes test nicer.

* Add dir tests.

* Moves the watch directive inside the worker directive.

* Adds debug log on special events.

* Removes line about symlinks.

* Hints at multiple possible --watch flags.

* Adds ./**/*.php as default watch configuration.

* Changes error to a warning.

* Changes the default to './**/*.{php,yaml,yml,twig,env}' and supports the {bracket} pattern.

* Fixes linting.

* Fixes merge conflict and adjust values.

* Adjusts values.

---------

Co-authored-by: a.stecher <a.stecher@sportradar.com>
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2024-10-07 13:17:24 +02:00
Kévin Dunglas
6c708be99d
ci: upgrade to super-linter 6 (#952) 2024-08-04 14:05:54 +02:00
Kévin Dunglas
0751f453b9
fix: create a custom Go build when using musl to prevent a crash (#913) 2024-07-11 10:26:28 +02:00
Kévin Dunglas
0500ebc191
perf: improve PHP thread management (#898) 2024-07-09 09:39:03 +02:00
Kévin Dunglas
3dbb3fd48d
feat(static): add ftp, gettext, gmp, imagick, mbregex, parallel, protobuf, shmop, soap, ssh2, sysmsg, sysvshm, tidy, xlswriter, yaml and zstd extensions (#773) 2024-05-11 15:43:00 +02:00
Kévin Dunglas
593233db17 fix: DOMdocument not found when building embedded apps 2024-04-27 03:17:28 +02:00
Kévin Dunglas
498294a561
feat: option to use mimalloc for static builds (#666)
* feat: use mimalloc for static builds

* fix: use Tweag's approach

* fix: debug build

* chore: mark USE_MIMALLOC as experimental

* ci: build a static binary using mimalloc
2024-04-23 14:04:25 +02:00
Kévin Dunglas
85b8a8c805 fix(static): ensure that FRANKENPHP_VERSION is defined in child Docker images 2024-04-22 11:35:51 +02:00
Kévin Dunglas
e0531fa17c ci: build static binary with debug symbols 2024-03-09 00:33:11 +01:00
Kévin Dunglas
36b752d0a6
feat: compress Linux binaries with UPX (#572) 2024-02-12 10:01:27 +01:00
Kévin Dunglas
36a6daa8ba docs: use tabs instead of spaces in Dockerfiles 2024-01-29 17:17:34 +01:00
Rafael Kassner
b7c8d4cd49 Add ctype and session PHP extensions to static builder 2023-12-20 00:13:27 +01:00
Kévin Dunglas
58597bfeab ci: better tags for static-builder Docker image 2023-12-07 00:30:21 +01:00
Kévin Dunglas
dee84ed906
feat: define needed environment variables in static-builder.Dockerfile (#338) 2023-12-06 15:56:40 +01:00
Kévin Dunglas
537f899939
feat: use tar to embed apps (#333) 2023-12-03 19:17:36 +01:00
Kévin Dunglas
6509cddd2a feat: embed PHP apps into the FrankenPHP binary 2023-12-02 15:40:51 +01:00
Kévin Dunglas
c9bf9940d1
ci: add Super-Linter (#323) 2023-12-01 17:26:21 +01:00
Kévin Dunglas
de5de146c3
ci: add generic static build script (#322) 2023-11-30 08:07:39 +01:00
Natsuki Ikeguchi
b32e738d75 feat: Upgrade to PHP 8.3
Signed-off-by: Natsuki Ikeguchi <me@s6n.jp>
2023-11-29 10:40:24 +01:00
Kévin Dunglas
b56b47d187
ci: improve static build steps (#305) 2023-11-16 14:06:34 +01:00
DubbleClick
ea2c7c2895
feat: add ext-ldap and ext-sysvsem to static builder, add PHP_EXTENSION_LIBS to enhance extensions (#203)
* add ldap and sysvsem extension to static-builder

* add lib support for static-builder to enhance enabled extensions (such as libjpeg for gd)

* disable opcache-jit

* include bz2, order alphabetically

* Update static.md

---------

Co-authored-by: Kévin Dunglas <kevin@dunglas.fr>
2023-11-01 15:50:19 +01:00
DubbleClick
9bf24b7d88
fix(static): add start-group and end-group around php-config libs (#241)
don't be dependent on php not messing up when compiling the embed sapi
2023-10-05 17:53:43 +02:00
Kévin Dunglas
123d167729
ci: release infrastructure (#213)
* ci: release infrastructure

* ci: release CircleCI binary

* fix circle

* fix Circle pipeline

* improve tags and docs

* improvements
2023-09-20 14:15:41 +02:00
Kévin Dunglas
09b2282441 feat: set SAPI version 2023-09-16 13:55:41 +02:00
Kévin Dunglas
b7098f7408
feat: Apple Silicon static build and better version name (#205)
* feat: Apple Silicon static build and better version name

Build a static binary for macOS and Apple Silicon.
Also add the PHP version to the version command.

* fix CircleCI Composer cache key

* fix export

* fix and optims

* cleanup
2023-09-14 01:10:20 +02:00
Kévin Dunglas
1f3007337d
feat: create a static build of FrankenPHP (#198)
* ci: create a static build of FrankenPHP

* try to use alpine

* path mapping

* cache and fixes

* fix

* fix include path

* fix include path

* fix include path

* switch to Docker

* fix github token

* cleanup

* various improvements

* macOS instructions

* fix GHA

* docs

* feat: mac static builds

* minor fix

* fix wd

* Apple silicon build

* Revert "Apple silicon build"

This reverts commit 7a2997e092.

* add opcache

* update builder

* upgrade to PHP 8.2

* switch to upstream static-php-cli, add intl
2023-09-12 22:08:19 +02:00