Compare commits
1 Commits
main
...
fix-hardco
| Author | SHA1 | Date | |
|---|---|---|---|
| b54ce54e79 |
@@ -1,101 +0,0 @@
|
|||||||
FROM ubuntu:24.04
|
|
||||||
|
|
||||||
# Install required tools for MinGW cross-compilation, CMake, and dependencies
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
git \
|
|
||||||
make \
|
|
||||||
curl \
|
|
||||||
wget \
|
|
||||||
unzip \
|
|
||||||
cmake \
|
|
||||||
build-essential \
|
|
||||||
mingw-w64 \
|
|
||||||
g++-mingw-w64-x86-64-posix \
|
|
||||||
gcc-mingw-w64-x86-64-posix \
|
|
||||||
pkg-config \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Download and install Go 1.25.4
|
|
||||||
RUN wget https://go.dev/dl/go1.25.4.linux-amd64.tar.gz && \
|
|
||||||
tar -C /usr/local -xzf go1.25.4.linux-amd64.tar.gz && \
|
|
||||||
rm go1.25.4.linux-amd64.tar.gz
|
|
||||||
ENV PATH=$PATH:/usr/local/go/bin
|
|
||||||
|
|
||||||
# Download OpenCV 4.12.0 source
|
|
||||||
RUN wget https://github.com/opencv/opencv/archive/4.12.0.zip && \
|
|
||||||
unzip 4.12.0.zip && \
|
|
||||||
mv opencv-4.12.0 opencv && \
|
|
||||||
rm 4.12.0.zip
|
|
||||||
|
|
||||||
# Create MinGW toolchain file for CMake
|
|
||||||
RUN echo 'set(CMAKE_SYSTEM_NAME Windows)' > /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_SYSTEM_PROCESSOR AMD64)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(TOOLCHAIN x86_64-w64-mingw32)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_C_COMPILER /usr/bin/${TOOLCHAIN}-gcc-posix)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_CXX_COMPILER /usr/bin/${TOOLCHAIN}-g++-posix)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_RC_COMPILER /usr/bin/${TOOLCHAIN}-windres)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN})' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)' >> /opencv/toolchain.cmake && \
|
|
||||||
echo 'set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)' >> /opencv/toolchain.cmake
|
|
||||||
|
|
||||||
# Build and install OpenCV for Windows (static libs, minimal build to avoid dependency issues)
|
|
||||||
RUN cd /opencv && mkdir build && cd build && \
|
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr/x86_64-w64-mingw32 \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DWITH_IPP=OFF \
|
|
||||||
-DBUILD_EXAMPLES=OFF \
|
|
||||||
-DBUILD_TESTS=OFF \
|
|
||||||
-DBUILD_PERF_TESTS=OFF \
|
|
||||||
-DBUILD_opencv_apps=OFF \
|
|
||||||
-DWITH_FFMPEG=OFF \
|
|
||||||
-DWITH_OPENGL=OFF \
|
|
||||||
-DWITH_QT=OFF \
|
|
||||||
-DWITH_VTK=OFF \
|
|
||||||
-DWITH_GTK=OFF \
|
|
||||||
-DCPU_BASELINE=SSE3 \
|
|
||||||
-DWITH_TBB=OFF \
|
|
||||||
-DWITH_PROTOBUF=ON \
|
|
||||||
-DBUILD_PROTOBUF=ON \
|
|
||||||
-DPROTOBUF_UPDATE_FILES=OFF \
|
|
||||||
-DWITH_PNG=ON \
|
|
||||||
-DWITH_JPEG=ON \
|
|
||||||
-DWITH_TIFF=ON \
|
|
||||||
-DWITH_WEBP=ON \
|
|
||||||
-DWITH_OPENJPEG=ON \
|
|
||||||
-DWITH_OPENEXR=OFF \
|
|
||||||
-DBUILD_PNG=ON \
|
|
||||||
-DBUILD_JPEG=ON \
|
|
||||||
-DBUILD_TIFF=ON \
|
|
||||||
-DBUILD_WEBP=ON \
|
|
||||||
-DBUILD_OPENJPEG=ON \
|
|
||||||
-DBUILD_ZLIB=ON \
|
|
||||||
.. && \
|
|
||||||
make -j$(nproc) && \
|
|
||||||
make install
|
|
||||||
|
|
||||||
# List the actual libraries to help debug
|
|
||||||
RUN echo "Installed OpenCV libraries:" && ls -la /usr/x86_64-w64-mingw32/lib/*.a | head -30
|
|
||||||
|
|
||||||
# Set CGO environment variables with corrected library names and paths
|
|
||||||
ENV CGO_CPPFLAGS="-I/usr/x86_64-w64-mingw32/include/opencv4"
|
|
||||||
ENV CGO_CXXFLAGS="--std=c++11"
|
|
||||||
# Include both main lib directory and opencv4/3rdparty subdirectory, use correct library names and Windows system libs
|
|
||||||
ENV CGO_LDFLAGS="-L/usr/x86_64-w64-mingw32/lib -L/usr/x86_64-w64-mingw32/lib/opencv4/3rdparty -lopencv_core4120 -lopencv_imgproc4120 -lopencv_objdetect4120 -lopencv_flann4120 -lopencv_features2d4120 -lopencv_calib3d4120 -lopencv_highgui4120 -lopencv_videoio4120 -lopencv_imgcodecs4120 -lopencv_video4120 -lopencv_photo4120 -lopencv_ml4120 -lopencv_dnn4120 -lopencv_gapi4120 -lopencv_stitching4120 -llibprotobuf -llibpng -llibopenjp2 -llibwebp -llibtiff -llibjpeg-turbo -lzlib -lade -lgdi32 -lole32 -loleaut32 -luuid -lcomdlg32 -lstdc++fs -lws2_32 -static-libgcc -static-libstdc++ -static"
|
|
||||||
ENV PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/lib/pkgconfig
|
|
||||||
ENV LD_LIBRARY_PATH=/usr/x86_64-w64-mingw32/lib
|
|
||||||
|
|
||||||
# Clone the repository
|
|
||||||
RUN git clone https://git.weirdcat.su/weirdcat/auto-attendance.git /go/src/auto-attendance
|
|
||||||
|
|
||||||
# Set working directory
|
|
||||||
WORKDIR /go/src/auto-attendance
|
|
||||||
|
|
||||||
# Download Go modules
|
|
||||||
RUN go mod download
|
|
||||||
|
|
||||||
# Build the Windows executable with CGO enabled, customenv tag, and MinGW compilers
|
|
||||||
RUN GOOS=windows GOARCH=amd64 CGO_ENABLED=1 \
|
|
||||||
CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix \
|
|
||||||
go build -tags customenv -v -o bin/autoattendance.exe ./cmd/
|
|
||||||
60
README.md
60
README.md
@@ -41,7 +41,7 @@
|
|||||||
Вам потребуется поддерживаемая операционная система из списка ниже. Если галочки нет, то поддержка появится в будущем.
|
Вам потребуется поддерживаемая операционная система из списка ниже. Если галочки нет, то поддержка появится в будущем.
|
||||||
- [x] Linux (Wayland)
|
- [x] Linux (Wayland)
|
||||||
- [x] Linux (XORG)
|
- [x] Linux (XORG)
|
||||||
- [x] Windows 10/11
|
- [ ] Windows 10/11 (не тестировалось, должно билдиться)
|
||||||
- [ ] MacOS (не тестировалось, должно билдиться)
|
- [ ] MacOS (не тестировалось, должно билдиться)
|
||||||
|
|
||||||
### ⬇️ Установка
|
### ⬇️ Установка
|
||||||
@@ -50,23 +50,12 @@
|
|||||||
|
|
||||||
### ⚙️ Настройка
|
### ⚙️ Настройка
|
||||||
|
|
||||||
При первом запуске будет необходимо выполнить настройку приложения. Расположение файла конфигурации зависит от системы:
|
При первом запуске будет необходимо выполнить настройку приложения. В Linux файл конфигурации располагается здесь:
|
||||||
- В Linux:
|
`~/.config/auto-attendance/auto-attendance.toml`. Необходимо получить актуальный файл конфигурации, который будет работать с конкретным журналом посещений
|
||||||
- `~/.config/auto-attendance/auto-attendance.toml`
|
|
||||||
- В Windows:
|
|
||||||
- `C:\Users\user\AppData\Roaming\auto-attendance\auto-attendance.toml`
|
|
||||||
|
|
||||||
Необходимо получить актуальный файл конфигурации, который будет работать с конкретным журналом посещений. Ключевую роль играют следующие параметры:
|
|
||||||
```toml
|
|
||||||
qr_query_token = '' # Название query-параметра, содержащего уникальный токен ссылки
|
|
||||||
self_approve_url = '' # Полный URL ссылки QR-кода (без query-параметров)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔨 Сборка
|
## 🔨 Сборка
|
||||||
|
|
||||||
### Make (Linux, MacOS)
|
### 🧩 Зависимости
|
||||||
|
|
||||||
#### 🧩 Зависимости
|
|
||||||
|
|
||||||
- git
|
- git
|
||||||
- make
|
- make
|
||||||
@@ -74,7 +63,24 @@ self_approve_url = '' # Полный URL ссылки QR-кода (без query
|
|||||||
- opencv 4.12.0
|
- opencv 4.12.0
|
||||||
- go 1.25.4
|
- go 1.25.4
|
||||||
|
|
||||||
#### Порядок сборки
|
### Go
|
||||||
|
|
||||||
|
Используйте следующую команду в терминале:
|
||||||
|
```bash
|
||||||
|
go install git.weirdcat.su/weirdcat/auto-attendance/cmd/qrminator-cli@main
|
||||||
|
```
|
||||||
|
|
||||||
|
Далее можно запускать командой:
|
||||||
|
```bash
|
||||||
|
qrminator-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
Убедитесь, что вы добавили `~/.go/bin` в PATH. Например:
|
||||||
|
```bash
|
||||||
|
export PATH=$PATH:~/.go/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
### Make
|
||||||
|
|
||||||
Склонируйте мой репозиторий:
|
Склонируйте мой репозиторий:
|
||||||
```bash
|
```bash
|
||||||
@@ -93,30 +99,10 @@ make
|
|||||||
|
|
||||||
# make build-linux
|
# make build-linux
|
||||||
# make build-macos
|
# make build-macos
|
||||||
|
# make build-windows
|
||||||
```
|
```
|
||||||
|
|
||||||
Далее для запуска можете использовать команду `make run`.
|
Далее для запуска можете использовать команду `make run`.
|
||||||
|
|
||||||
### Dockerfile (Windows)
|
|
||||||
|
|
||||||
На данный момент единственный проверенный и самый простой способ собрать приложение под Windows - использовать [специальный Dockerfile](https://git.weirdcat.su/weirdcat/auto-attendance/raw/branch/main/Dockerfile.windows-build). На Windows для этого можно использовать WSL с Docker.
|
|
||||||
|
|
||||||
#### Порядок сборки (Bash):
|
|
||||||
```bash
|
|
||||||
# Создаем директорию и переходим в нее
|
|
||||||
mkdir build && cd build
|
|
||||||
|
|
||||||
# Получаем содержимое Dockerfile
|
|
||||||
curl "https://git.weirdcat.su/weirdcat/auto-attendance/raw/branch/main/Dockerfile.windows-build" > Dockerfile
|
|
||||||
|
|
||||||
# Выполняем сборку
|
|
||||||
docker build -t autoattendance-build-windows .
|
|
||||||
|
|
||||||
# Копируем бинарник из образа в текущую папку
|
|
||||||
docker run --rm -v $(pwd):/output autoattendance-build-windows sh -c "cp /go/src/auto-attendance/bin/autoattendance.exe /output/"
|
|
||||||
```
|
|
||||||
|
|
||||||
Готовое приложение - файл `autoattendance.exe`.
|
|
||||||
|
|
||||||
# Поддержать разработчиков
|
# Поддержать разработчиков
|
||||||

|

|
||||||
|
|||||||
@@ -75,7 +75,7 @@ func (v *linkValidatorImpl) ValidateLink(rawURL string) (token string, ok bool)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
token = parsedURL.Query().Get("token")
|
token = parsedURL.Query().Get(v.config.Communication.QrQueryToken)
|
||||||
if token == "" {
|
if token == "" {
|
||||||
v.log.Debug("URL missing token parameter", "url", rawURL)
|
v.log.Debug("URL missing token parameter", "url", rawURL)
|
||||||
return "", false
|
return "", false
|
||||||
|
|||||||
Reference in New Issue
Block a user