@@ -57,122 +57,21 @@ endif
5757
5858all : prepare-developer-machine release # # UWAGA: pełna konfiguracja + release (uruchamia release!)
5959
60- # WeasyPrint (cffi.dlopen / ctypes.util.find_library) musi znalezc
61- # libgobject-2.0 / pango / harfbuzz / fontconfig zainstalowane przez brew.
62- # Na Apple Silicon te biblioteki siedza w /opt/homebrew/lib, ktorego dyld
63- # nie konsultuje domyslnie (default search path to /usr/local/lib + /usr/lib).
64- #
65- # Probowalismy wczesniej (commit 3531fd2d4) DYLD_FALLBACK_LIBRARY_PATH —
66- # nie sprawdza sie w praktyce: macOS SIP strippuje wszystkie zmienne DYLD_*
67- # w momencie wywolania chronionej binarki (/usr/bin/*, /bin/sh, itp.), wiec
68- # w lancuchach typu make → sh → uv → python → pytest zmienna regularnie
69- # ginie po drodze. Z perspektywy pytest/uv vs. dlopen — niedeterministyczne.
70- #
71- # Wracamy do symlinkow w /usr/local/lib: filesystem-level, dyld konsultuje
72- # te sciezke z automatu, SIP nic z tym nie zrobi. Wymaga sudo *raz*
73- # przy setupie maszyny. Idempotent — recipe nie nadpisuje istniejacych
74- # symlinkow wskazujacych na te same cele.
75- #
76- # UWAGA: To runtime fix dla dlopen. Nie pomaga przy *build-time* bledach
77- # (np. wheel buduje sie z zrodla i nie znajduje cairo.h) — wtedy potrzeba
78- # PKG_CONFIG_PATH=/opt/homebrew/lib/pkgconfig + LDFLAGS=-L/opt/homebrew/lib
79- # + CPPFLAGS=-I/opt/homebrew/include.
80- prepare-developer-machine-macos : # # Zainstaluj zależności systemowe na macOS (brew + uv sync + playwright + symlinki)
81- @if ! command -v brew > /dev/null 2>&1 ; then \
82- echo " " ; \
83- echo " BŁĄD: Homebrew (brew) nie jest zainstalowany." ; \
84- echo " " ; \
85- echo " Homebrew jest wymagany do zainstalowania zależności systemowych" ; \
86- echo " (cairo, pango, gdk-pixbuf, libffi, gobject-introspection, gtk+3)." ; \
87- echo " " ; \
88- echo " Aby zainstalować Homebrew, uruchom w terminalu poniższe polecenie:" ; \
89- echo " " ; \
90- echo ' /bin/bash -c "$$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"' ; \
91- echo " " ; \
92- echo " Po zakończeniu instalacji wykonaj kroki dodające 'brew' do PATH" ; \
93- echo " wypisane przez instalator (zwykle dla Apple Silicon: dopisanie" ; \
94- echo " linii 'eval \"\$ $( /opt/homebrew/bin/brew shellenv) \" ' do ~/.zprofile)." ; \
95- echo " " ; \
96- echo " Pełna dokumentacja: https://brew.sh" ; \
97- echo " " ; \
98- echo " Po instalacji Homebrew uruchom ponownie: make prepare-developer-machine" ; \
99- echo " " ; \
100- exit 1; \
101- fi
102- brew install cairo pango gdk-pixbuf libffi gobject-introspection gtk+3 node yarn
103- npm install -g grunt-cli
104- uv sync --frozen --no-install-project --all-extras
105- @# Symlinki w /usr/local/lib — dyld konsultuje te sciezke domyslnie,
106- @# wiec niezaleznie od stanu DYLD_* (SIP) WeasyPrint znajdzie libki.
107- @if [ ! -d /usr/local/lib ]; then \
108- echo " Tworze /usr/local/lib (wymagane sudo)..." ; \
109- sudo mkdir -p /usr/local/lib; \
110- fi
111- @for pair in \
112- " /opt/homebrew/opt/glib/lib/libgobject-2.0.0.dylib:gobject-2.0" \
113- " /opt/homebrew/opt/pango/lib/libpango-1.0.dylib:pango-1.0" \
114- " /opt/homebrew/opt/harfbuzz/lib/libharfbuzz.dylib:harfbuzz" \
115- " /opt/homebrew/opt/fontconfig/lib/libfontconfig.1.dylib:fontconfig-1" \
116- " /opt/homebrew/opt/pango/lib/libpangoft2-1.0.dylib:pangoft2-1.0" ; do \
117- src=" $$ {pair%:*}" ; dst=" /usr/local/lib/$$ {pair##*:}" ; \
118- if [ -L " $$ dst" ] && [ " $$ (readlink " $$ dst" )" = " $$ src" ]; then \
119- echo " Symlink $$ dst juz wskazuje na $$ src — pomijam." ; \
120- else \
121- echo " Tworze symlink $$ dst -> $$ src (wymagane sudo)..." ; \
122- sudo ln -sf " $$ src" " $$ dst" ; \
123- fi ; \
124- done
125- @# Cleanup po poprzedniej probie z DYLD_FALLBACK_LIBRARY_PATH —
126- @# usun marker + linie export z ~/.zprofile, jesli zostaly.
127- @ZPROFILE=" $$ HOME/.zprofile" ; \
128- MARKER=' # bpp: weasyprint dlopen (Homebrew libs on Apple Silicon)' ; \
129- if [ -f " $$ ZPROFILE" ] && grep -qF " $$ MARKER" " $$ ZPROFILE" ; then \
130- cp " $$ ZPROFILE" " $$ ZPROFILE.bpp-bak" ; \
131- awk -v m=" $$ MARKER" ' BEGIN{skip=0} \
132- $$ 0==m {skip=1; next} \
133- skip> 0 {skip--; next} \
134- {print}' "$$ZPROFILE.bpp-bak" > "$$ZPROFILE"; \
135- echo " Usunieto stary wpis DYLD_FALLBACK_LIBRARY_PATH z $$ ZPROFILE (backup: $$ ZPROFILE.bpp-bak)." ; \
136- fi
137- $(MAKE ) playwright-install
138-
139- prepare-developer-machine-linux : # # Zainstaluj zależności systemowe na Linuksie (apt + uv sync + playwright)
140- sudo apt update
141- sudo apt install -y yarnpkg nodejs npm python3-dev libpq-dev \
142- libcairo2-dev libpango1.0-dev libgdk-pixbuf-xlib-2.0-dev libffi-dev \
143- libgirepository1.0-dev libgtk-3-dev
144- sudo npm install -g grunt-cli
145- uv sync --frozen --no-install-project --all-extras
146- $(MAKE ) playwright-install
147-
148- prepare-developer-machine : # # Zainstaluj zależności systemowe (auto-detekcja macOS/Linux)
149- ifeq ($(OS ) ,Darwin)
150- $(MAKE) prepare-developer-machine-macos
151- else ifeq ($(OS),Linux)
152- $(MAKE) prepare-developer-machine-linux
153- else
154- @echo "Unsupported platform: $(OS)"
155- @echo "Supported: Darwin (macOS), Linux"
156- @exit 1
157- endif
60+ # Właściwa logika (detekcja systemu i dystrybucji, pakiety, uv, Playwright)
61+ # siedzi w bin/prepare-developer-machine/.
62+ PREPARE_DEVELOPER_MACHINE := bin/prepare-developer-machine/prepare.sh
15863
159- # Pobiera przeglądarki Playwright (chromium itd.) potrzebne do testów E2E.
160- # Na Linuksie używa --with-deps, żeby playwright doinstalował systemowe
161- # biblioteki (libnss3, libatk, libgtk-3...) przez apt — to wymaga sudo
162- # i jest dokładnie tym, co opisuje README sekcja 2 ("uv run playwright
163- # install" + "sudo playwright install-deps") tylko sklejone w jednej
164- # komendzie. Na macOS install-deps to no-op (browsers są self-contained,
165- # a brew już zainstalował systemowe libki w prepare-developer-machine-macos),
166- # więc używamy gołego "playwright install".
167- #
168- # Wymaga, by uv sync --all-extras zostało wcześniej wykonane (playwright
169- # CLI siedzi w grupie dev pyproject.toml). Stąd kolejność w prepare-*.
170- playwright-install : # # Pobierz przeglądarki Playwright dla testów E2E (na Linuksie z --with-deps, sudo)
171- ifeq ($(OS ) ,Darwin)
172- uv run playwright install
173- else
174- uv run playwright install --with-deps
175- endif
64+ prepare-developer-machine-macos : # # Zainstaluj zależności systemowe na macOS (brew + uv + uv sync + playwright + symlinki)
65+ $(PREPARE_DEVELOPER_MACHINE ) macos
66+
67+ prepare-developer-machine-linux : # # Zainstaluj zależności systemowe na Linuksie (apt/dnf/pacman + uv + uv sync + playwright)
68+ $(PREPARE_DEVELOPER_MACHINE ) linux
69+
70+ prepare-developer-machine : # # Zainstaluj zależności systemowe (auto-detekcja systemu i dystrybucji)
71+ $(PREPARE_DEVELOPER_MACHINE )
72+
73+ playwright-install : # # Pobierz przeglądarki Playwright dla testów E2E (na Debianie/Ubuntu z --with-deps, sudo)
74+ $(PREPARE_DEVELOPER_MACHINE ) playwright
17675
17776prepare-claude : # # Pokaż instrukcję instalacji wtyczki claude-mem w Claude Code
17877 @echo " Setting up Claude Code with claude-mem plugin..."
0 commit comments