Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Build Docker Image

on:
push:
branches: [ master ] # можно заменить на нужные ветки
pull_request:
branches: [ master ] # опционально

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Change to build directory and build Docker image
run: |
cd build
docker build -t neptune-builder .

- name: Optional - Show built images
run: docker images | grep neptune-builder
3 changes: 3 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
#!/bin/bash

# Default architecture and build type

ARCH=i386
DEFAULT_PLATFORM=pc99
BUILD_TYPE=Debug
Expand Down
68 changes: 68 additions & 0 deletions build/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
FROM ubuntu:latest

# Аргументы сборки с значениями по умолчанию
ARG ARCH=amd64
ARG BUILD_TYPE=release

# Предотвращаем интерактивные запросы при установке пакетов
ENV DEBIAN_FRONTEND=noninteractive

# Устанавливаем необходимые пакеты
RUN apt-get update && apt-get install -y \
mingw-w64 \
mingw-w64-tools \
python3 \
python3-pip \
python3-venv \
git \
bash \
cpio \
wget \
curl \
# Инструменты сборки
cmake \
ninja-build \
build-essential \
gcc \
g++ \
make \
pkg-config \
# LLVM/Clang (нужен для seL4)
clang \
llvm \
lld \
# Дополнительные утилиты
libxml2-utils \
&& rm -rf /var/lib/apt/lists/*

# Настройка Python
RUN ln -s /usr/bin/python3 /usr/bin/python

# Устанавливаем Python-пакеты
RUN pip3 install --no-cache-dir \
--break-system-packages \
jinja2 \
future \
ply \
setuptools \
six \
lxml

WORKDIR /workspace

# Клонируем репозиторий
RUN git clone https://github.com/Endlad2/NeptuneOS.git

WORKDIR /workspace/NeptuneOS

# Инициализируем сабмодули
RUN git submodule update --init --recursive

# Делаем build.sh исполняемым
RUN bash build.sh [${ARCH}] [${BUILD_TYPE}]
RUN mkiso.sh [${ARCH}] [${BUILD_TYPE}]

# Запускаем сборку с переданными аргументами


CMD ["/bin/bash"]
6 changes: 3 additions & 3 deletions private/rtl/inc/services.h
Original file line number Diff line number Diff line change
Expand Up @@ -441,9 +441,6 @@ typedef struct _IO_PNP_CONTROL_QUERY_IDS_DATA {
IN OUT CHAR DeviceInstance[]; /* Output buffer follows device instance */
} IO_PNP_CONTROL_QUERY_IDS_DATA, *PIO_PNP_CONTROL_QUERY_IDS_DATA;

/*
* Server-side data structure for PLUGPLAY_EVENT_BLOCK
*/
typedef struct _IO_PNP_EVENT_BLOCK {
GUID EventGuid;
PLUGPLAY_EVENT_CATEGORY EventCategory;
Expand All @@ -454,12 +451,15 @@ typedef struct _IO_PNP_EVENT_BLOCK {
CHAR SymbolicLinkName[];
} DeviceClass;
struct {
ULONG Dummy; // Добавлено фиктивное поле
CHAR DeviceIds[];
} TargetDevice;
struct {
ULONG Dummy; // Добавлено фиктивное поле
CHAR DeviceId[];
} InstallDevice;
struct {
ULONG Dummy; // Добавлено фиктивное поле
CHAR DeviceIds[];
} CustomNotification; /* Used for IoReportTargetDeviceChange */
struct {
Expand Down
21 changes: 21 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

# Neptune OS: a Windows NT personality for the seL4 microkernel

Neptune OS is a Windows NT personality for the seL4 microkernel. It implements what
Expand Down Expand Up @@ -118,6 +119,26 @@ server. The `build.sh` script will generate the `compile_commands.json` file for
`clangd`. You will need to install [jq](https://jqlang.github.io/jq/) for this
purpose.

### Docker Build

For a containerized build environment, it is recommended to use Docker. First, navigate to the build directory and build the Docker image:

```bash
cd build
docker build -t neptune-builder .
```

To build with specific architecture and build type parameters:

```bash
docker build \
--build-arg ARCH=arm64 \
--build-arg BUILD_TYPE=debug \
-t neptune-builder .
```

### Local Build

Clone the project first (make sure you use `git clone --recurse-submodules` since
we include the seL4 kernel as a submodule) and then run
```
Expand Down