From f0e8d853f8dbcdfece69aeb02d0b21afcd21f90e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 19 Dec 2025 16:30:52 +0000 Subject: [PATCH 1/7] Initial plan From 48d087924ecb8ecd5c9143b4b0e1e8d2b65bd6fb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 19 Dec 2025 16:36:28 +0000 Subject: [PATCH 2/7] Initialize dmdfs as DMOD filesystem module with DMFSI interface Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- CMakeLists.txt | 90 ++++++++ README.md | 201 +++++++++++++++++- build/dmdfs | Bin 0 -> 16112 bytes build/dmdfs_defs.h | 66 ++++++ build/dmdfs_header.c | 64 ++++++ build/dmf/dmdfs.dmf | Bin 0 -> 5344 bytes build/dmf/dmdfs_version.txt | 2 + build/dmf/dmfsi.dmf | Bin 0 -> 560 bytes build/dmf/dmfsi_version.txt | 2 + include/dmdfs.h | 22 ++ manifest.dmm | 5 + src/dmdfs.c | 408 ++++++++++++++++++++++++++++++++++++ 12 files changed, 859 insertions(+), 1 deletion(-) create mode 100644 CMakeLists.txt create mode 100755 build/dmdfs create mode 100644 build/dmdfs_defs.h create mode 100644 build/dmdfs_header.c create mode 100755 build/dmf/dmdfs.dmf create mode 100644 build/dmf/dmdfs_version.txt create mode 100755 build/dmf/dmfsi.dmf create mode 100644 build/dmf/dmfsi_version.txt create mode 100644 include/dmdfs.h create mode 100644 manifest.dmm create mode 100644 src/dmdfs.c diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b4606aa --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,90 @@ +# ===================================================================== +# DMOD Driver File System Module +# ===================================================================== +cmake_minimum_required(VERSION 3.18) + + +# ====================================================================== +# DMOD DFS +# ====================================================================== +# Allow version to be passed as a parameter, default to 0.1 +if(NOT DEFINED DMOD_MODULE_VERSION) + set(DMOD_MODULE_VERSION "0.1" CACHE STRING "DMOD module version") +endif() + +# ====================================================================== +# Fetch DMOD repository +# ====================================================================== +include(FetchContent) +FetchContent_Declare( + dmod + GIT_REPOSITORY https://github.com/choco-technologies/dmod.git + GIT_TAG develop +) + +# ====================================================================== +# DMOD Configuration +# ====================================================================== +set(DMOD_MODE "DMOD_MODULE" CACHE STRING "DMOD build mode") +set(DMOD_BUILD_TESTS OFF CACHE BOOL "Build tests") +set(DMOD_BUILD_EXAMPLES OFF CACHE BOOL "Build examples") +set(DMOD_BUILD_TOOLS OFF CACHE BOOL "Build tools") +set(DMOD_BUILD_TEMPLATES OFF CACHE BOOL "Build templates") + +FetchContent_MakeAvailable(dmod) + +project(dmdfs + VERSION ${DMOD_MODULE_VERSION} + DESCRIPTION "DMOD Driver File System" + LANGUAGES C CXX) + +# ====================================================================== +# Import dmod functions and macros +# ====================================================================== +set(DMOD_DIR ${dmod_SOURCE_DIR} CACHE PATH "DMOD source directory") +include(${DMOD_DIR}/paths.cmake) +dmod_setup_external_module() + +# ====================================================================== +# Fetch DMOD File System Interface +# ====================================================================== +FetchContent_Declare( + dmfsi + GIT_REPOSITORY + https://github.com/choco-technologies/dmfsi.git + GIT_TAG master +) +FetchContent_MakeAvailable(dmfsi) + +# ====================================================================== +# DMDFS Module Configuration +# ====================================================================== +# Name of the module +set(DMOD_MODULE_NAME dmdfs) + +# Version is already set above and used in project() +# No need to set it again here + +# Author (should be string) +set(DMOD_AUTHOR_NAME Patryk Kubiak) + +# Stack size for the module (should be integer) +set(DMOD_STACK_SIZE 1024) + +# +# dmod_add_library - create a library module +# it has the same signature as add_library +# and can be used in the same way after the creation +# (for example, to link libraries) +# +dmod_add_library(${DMOD_MODULE_NAME} ${DMOD_MODULE_VERSION} + # List of source files - can include C and C++ files + src/dmdfs.c +) + +target_include_directories(${DMOD_MODULE_NAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +# Link to DMFSI interface +target_link_libraries(${DMOD_MODULE_NAME} dmfsi_if) diff --git a/README.md b/README.md index 8114776..f224991 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,201 @@ # dmdfs -DMOD Driver File System + +DMOD Driver File System - A driver-based file system module for embedded systems. + +## Overview + +`dmdfs` (DMOD Driver File System) is a file system implementation that provides an interface to access files through hardware drivers or external storage. It is built on the **DMOD (Dynamic Modules)** framework and implements the **DMFSI (DMOD File System Interface)**, making it compatible with **DMVFS (DMOD Virtual File System)** and other DMOD-based applications. + +### Key Features + +- **Driver-Based**: Interfaces with hardware drivers for storage access +- **DMFSI Compatible**: Implements the standard DMOD file system interface +- **DMVFS Integration**: Can be mounted as a file system in DMVFS +- **Modular Design**: Built on DMOD framework for easy integration + +## Architecture + +DMDFS is part of a modular embedded file system architecture built on DMOD: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ Application Layer │ +│ (Your embedded application code) │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ DMVFS (Virtual File System) │ +│ • Unified file system interface │ +│ • Multiple mount points │ +│ • Path resolution │ +│ https://github.com/choco-technologies/dmvfs │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ DMFSI (DMOD File System Interface) │ +│ • Standardized POSIX-like API │ +│ • Common interface for all file systems │ +│ https://github.com/choco-technologies/dmfsi │ +└─────────────────────────────────────────────────────────────┘ + │ + ┌─────────────────┼─────────────────┐ + ▼ ▼ ▼ +┌────────────────┐ ┌─────────────┐ ┌─────────────┐ +│ DMDFS (Driver) │ │ DMFFS (Flash│ │ DMRAMFS (RAM│ +│ Driver-based │ │ Read-only │ │ Temporary │ +│ (This Project) │ │ │ │ │ +└────────────────┘ └─────────────┘ └─────────────┘ + │ │ │ + ▼ ▼ ▼ +┌────────────────┐ ┌─────────────┐ ┌─────────────┐ +│ Hardware Driver│ │ Flash Memory│ │ RAM │ +└────────────────┘ └─────────────┘ └─────────────┘ +``` + +### Component Relationships + +- **[DMOD](https://github.com/choco-technologies/dmod)**: The foundation providing dynamic module loading, inter-module communication, and resource management +- **[DMFSI](https://github.com/choco-technologies/dmfsi)**: Defines the standard file system interface that DMDFS implements +- **[DMVFS](https://github.com/choco-technologies/dmvfs)**: Virtual file system layer that can mount DMDFS at any path in a unified directory tree +- **DMDFS**: This project - implements DMFSI to provide access to driver-based storage + +## Building + +```bash +mkdir build +cd build +cmake .. -DDMOD_MODE=DMOD_MODULE +cmake --build . +``` + +## Usage + +The module can be loaded and mounted using DMVFS: + +```c +#include "dmvfs.h" + +// Initialize DMVFS +dmvfs_init(16, 32); + +// Mount the driver filesystem at /mnt +dmvfs_mount_fs("dmdfs", "/mnt", NULL); + +// Use standard file operations +void* fp; +dmvfs_fopen(&fp, "/mnt/file.txt", DMFSI_O_RDONLY, 0, 0); +// ... use file ... +dmvfs_fclose(fp); + +// Unmount when done +dmvfs_unmount_fs("/mnt"); +dmvfs_deinit(); +``` + +## API + +The module implements the full DMFSI interface: + +### File Operations +- `_fopen` - Open a file +- `_fclose` - Close a file +- `_fread` - Read from a file +- `_fwrite` - Write to a file +- `_lseek` - Seek to a position +- `_tell` - Get current position +- `_eof` - Check for end of file +- `_size` - Get file size +- `_getc` - Read a single character +- `_putc` - Write a single character +- `_sync` - Sync file +- `_fflush` - Flush buffers + +### Directory Operations +- `_mkdir` - Create a directory +- `_opendir` - Open a directory for reading +- `_readdir` - Read directory entries +- `_closedir` - Close a directory +- `_direxists` - Check if directory exists + +### File Management +- `_stat` - Get file/directory statistics +- `_unlink` - Delete a file +- `_rename` - Rename a file + +## Project Structure + +``` +dmdfs/ +├── include/ +│ └── dmdfs.h # Public header +├── src/ +│ └── dmdfs.c # Main DMDFS implementation +├── CMakeLists.txt # CMake build configuration +├── manifest.dmm # DMOD manifest file +├── README.md # This file +└── LICENSE # License file +``` + +## Development Status + +**Note**: This is an initial implementation with the basic structure in place. The actual driver integration and file operations are marked with TODO comments and need to be implemented based on specific hardware driver requirements. + +## Integration into Your Project + +### Using CMake FetchContent + +```cmake +include(FetchContent) + +# Fetch DMDFS +FetchContent_Declare( + dmdfs + GIT_REPOSITORY https://github.com/choco-technologies/dmdfs.git + GIT_TAG main +) + +# Set DMOD mode +set(DMOD_MODE "DMOD_MODULE" CACHE STRING "DMOD build mode") + +FetchContent_MakeAvailable(dmdfs) + +# Link to your target +target_link_libraries(your_target PRIVATE dmdfs) +``` + +### Manual Integration + +1. Clone the repository: `git clone https://github.com/choco-technologies/dmdfs.git` +2. Add as subdirectory: `add_subdirectory(dmdfs)` +3. Link library: `target_link_libraries(your_target dmdfs)` + +## Contributing + +Contributions are welcome! Please: +1. Fork the repository +2. Create a feature branch +3. Make your changes with tests +4. Submit a pull request + +## Related Projects + +- **[DMOD](https://github.com/choco-technologies/dmod)** - Dynamic module system +- **[DMFSI](https://github.com/choco-technologies/dmfsi)** - File system interface specification +- **[DMVFS](https://github.com/choco-technologies/dmvfs)** - Virtual file system implementation +- **[DMFFS](https://github.com/choco-technologies/dmffs)** - Flash file system implementation +- **[DMRAMFS](https://github.com/choco-technologies/dmramfs)** - RAM file system implementation + +## License + +See [LICENSE](LICENSE) file for details. + +## Author + +Patryk Kubiak + +## Support + +For questions, issues, or feature requests, please open an issue on GitHub: +https://github.com/choco-technologies/dmdfs/issues diff --git a/build/dmdfs b/build/dmdfs new file mode 100755 index 0000000000000000000000000000000000000000..dca7a34a98d3e195fb9e50971d16ecb7527c9087 GIT binary patch literal 16112 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 RjlR^ge;g0wLx#|_{~s)zEE@m- literal 0 HcmV?d00001 diff --git a/build/dmdfs_defs.h b/build/dmdfs_defs.h new file mode 100644 index 0000000..3ef3e23 --- /dev/null +++ b/build/dmdfs_defs.h @@ -0,0 +1,66 @@ +#ifndef DMOD_MOD_DEFS_H_dmdfs +#define DMOD_MOD_DEFS_H_dmdfs + +#include "dmod_defs.h" + +#ifndef dmod_dmdfs_version +# define dmod_dmdfs_version "0.1" +#endif + +#ifdef DMOD_dmdfs +# define dmod_dmdfs_api_to_mal(MODULE,NAME) \ + DMOD_API_TO_MAL(dmdfs, MODULE, NAME) +# define dmod_dmdfs_api_to_mal_ex(NAME_IN, MODULE_MAL, NAME_MAL) \ + DMOD_API_TO_MAL_EX(dmdfs, MODULE_IN, NAME_IN, MODULE_MAL, NAME_MAL) +# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ + DMOD_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_api_declaration(VERSION, RET, NAME, PARAMS) \ + DMOD_INPUT_API_DECLARATION(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ + DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ + DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) +# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ + DMOD_DIF_API_DECLARATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# ifndef DMOD_MODULE_NAME +# define DMOD_MODULE_NAME "dmdfs" +# endif +# ifndef DMOD_MODULE_VERSION +# define DMOD_MODULE_VERSION "0.1" +# endif +# define DMOD_AUTHOR_NAME "Patryk;Kubiak" +# define DMOD_STACK_SIZE 1024 +# define DMOD_PRIORITY 1 +# define DMOD_MODULE_TYPE Dmod_ModuleType_Library +# define DMOD_MANUAL_LOAD OFF +#else +# ifdef DMOD_MAL_dmdfs +# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +#else +# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +#endif +# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ + DMOD_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ + DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ + DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) +# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ + RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS; \ + _DMOD_DIF_API_REGISTRATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), NAME) \ + RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS +#endif + +#endif // DMOD_MOD_DEFS_H_dmdfs diff --git a/build/dmdfs_header.c b/build/dmdfs_header.c new file mode 100644 index 0000000..42c5984 --- /dev/null +++ b/build/dmdfs_header.c @@ -0,0 +1,64 @@ +#include "dmod.h" + +#ifndef DMOD_MODULE_NAME +# define DMOD_MODULE_NAME "" +#endif + +#ifndef DMOD_AUTHOR_NAME +# define DMOD_AUTHOR_NAME "" +#endif + +#ifndef DMOD_MODULE_VERSION +# define DMOD_MODULE_VERSION "0.0" +#endif + +#ifndef DMOD_MODULE_TYPE +# define Unknown +#endif + +#ifndef DMOD_STACK_SIZE +# define DMOD_STACK_SIZE 1024 +#endif + +#ifndef DMOD_PRIORITY +# define DMOD_PRIORITY 0 +#endif + +#ifndef DMOD_MANUAL_LOAD +# define DMOD_MANUAL_LOAD false +#endif + +extern void DMOD_WEAK_SYMBOL dmod_preinit(void); +extern int DMOD_WEAK_SYMBOL dmod_init(const Dmod_Config_t *Config); +extern int DMOD_WEAK_SYMBOL main(int argc, char** argv); +extern int DMOD_WEAK_SYMBOL dmod_deinit(void); +extern int DMOD_WEAK_SYMBOL dmod_signal( int SignalNumber ); + +extern Dmod_License_t DMOD_WEAK_SYMBOL License; +extern void* __footer_start; + +volatile const Dmod_ModuleHeader_t ModuleHeader DMOD_SECTION(".header") DMOD_USED = +{ + .Signature = DMOD_HEADER_SIGNATURE, + .HeaderSize = sizeof( Dmod_ModuleHeader_t ), + .DmodVersion = DMOD_VERSION, + .PointerSize = sizeof(void*), + .Arch = DMOD_ARCH, + .CpuName = DMOD_CPU_NAME, + .Name = "dmdfs", + .Author = "Patryk;Kubiak", + .Version = "0.1", + .Preinit.Ptr = dmod_preinit, + .Init.Ptr = dmod_init, + .Main.Ptr = main, + .Deinit.Ptr = dmod_deinit, + .Signal.Ptr = dmod_signal, + .RequiredStackSize = 1024, + .Priority = 1, + .ModuleType = Dmod_ModuleType_Library, + .License.Ptr = &License, + .Footer.Ptr = &__footer_start, + .ManualLoad = OFF, +}; + +volatile const Dmod_ModuleHeader_t* DMOD_Header DMOD_GLOBAL_POINTER = &ModuleHeader; diff --git a/build/dmf/dmdfs.dmf b/build/dmf/dmdfs.dmf new file mode 100755 index 0000000000000000000000000000000000000000..bb872208650d245a51f1c31e975779cb7002a1b1 GIT binary patch literal 5344 zcmbtYZ)jUp6n|S+`;RScXXkXR%|{2WCeF>;(KXDhCb)LBb0XBy#pI=ZH1EBbywp_a zsH_8nEe7<%m?C}|GGwJNkbW5rcGwj``>|Li`!p#VQW$Do)p*Xm=lw~Vmp0jh?&f#T zJ->6$x#ygB_q=Diy=wwII|QK`hGg5ZfnzV@M0rn04u#`IRC@zjY;^ee8;SR%z;J?1efGqcrNm@jNW-;u3HJT```opEiE7AL&|-m+SfHBK!y8r5Zlp*ucjqVHe?g z!o7rNFlg{Z3HK8Il<-;=m){_qCj28|7vcMam!9J5D;oJ2CEQH7p75)LXDa!+w+QzV zRtT?ATvCL`311^zPxyPn(F)G@E8(S`9B&YwA-sPtpC2dONqCLo`7Yt#XcXuiT4;QQ z#z&6k$G*#1?HS*tht=*svrQ}6Y}TFeUAkR8?`ZJ|?#z6+)zLD+tT|c)Tn}QpN z>g@7%dmW#{8hr`l11jGql__Ath1GnS=AFaD$SzG}5)HE(DC9=Qk=r-bF$zcL&SabX zD4Oc{gi)#;g4I`w10FJ_P6?9Y5RMV*sr7BR7X3( zs{rlx_cpB=;VM-G2LTq_pCxFWxLNLWQyZvFWSHX}#B`7oPeT@C==LD7CA1!)`*KFB z@-JYB1!gkmI6dqd*Q=hCkPc`Yud?KMGO*gm58arcRm=(DM=~#(%}+ zA0z%T&cBEF6@ar?1x9@_WI2;!{B0)xIpROa`KO`lu=7V)_WqY4b11(K6aOukg81|h z|1>}|aj`$-=Tx!%Cr$oJ;y=&%e}^uJ`|sH{f34nqv<^%1>@zK_P{=nPGY=-o!b5;& z#)i|D&^ubZf>95J`M(2giqK8s|AOU;2v{f5hZ}p7{53 z{_F56#Q4-~hrdvNSY9_mQ%TgfU<&h}sHXuMFGtpI3cVk(pX%}76rZ?h-XVI`pEio-1@h$9-~(W@WBr` z_Yq5tr?EfbnOXZe;5558w>uB?A8{Xd%l)VN`p)#7chan183{zBkTa+%nwZp_lHv@j zQBi@rR#82+$f>BBb5sN^IT{gV5hy~n!hwF5j4l?{FJw0uQR8B5alJ5GRM;>Yg{Ne@ zF);w!E?w_~n51pB-vWL{;-WZQhCNM;MDPk+s(+#yMzxal;?jrUUFmv*q82PiFPbP% zFC2~};zL{HO@VWWk1A#D6U!qc#aK+si7TetljySwun?4*5ArZqE>#b-#H1A0;^cX$ z`f)9wm6I0vO9-?g~f|G33-#XCM+$g8@x+%A%~sMxh6;ajD(i>Ut6W1c8Kn&o)8~M7{|2N2*4c^OumE9bdi-^N{3vdgL!5 zF=d~PlycifiWOrc;zej9#LBi2VY9FiVgIoaK})ldV3V{FvA$~~3$tEsC&ZZ9$ym7U zgc#0znQ>11jXNO42iPk(f1REVqNGTh(uIUYLL+v@{tK%8xn)Vr`5sJ;)ocr$Q!&&+!YhWQ_0Qq-K-9CB$(vz zz<);syk5a2NqD{IoB$Wt49?N#B__vDK!{O3cDUm1?x~lq-kV!Fv1_(}=HiZ>w?V|7 hHTW0*qHw{x07Opsjo+QB;al97^c_hbt>63b_y4k=#y-kJ!on=x%mgGr9!SYeE6&8D)y3D}MZv|_E!a~bBsDP?L#3gf z0frb@0O&qspn%3_V1dYjgps8_Aaj6neQ5m8{BplMn%{7E^x7H%r40}K7rpua|9`^+ z9?eHM4yR2(lDCA)??je|cqKEhB(*3lF*#KsH$SB`CsiRcFS8^wF(/dmdfs-v-.zip diff --git a/src/dmdfs.c b/src/dmdfs.c new file mode 100644 index 0000000..66332e2 --- /dev/null +++ b/src/dmdfs.c @@ -0,0 +1,408 @@ +/** + * @file dmdfs.c + * @brief DMOD Driver File System - Implementation + * @author Patryk Kubiak + * + * This is a driver-based file system that provides an interface to access + * files through hardware drivers or external storage. + */ + +#define DMOD_ENABLE_REGISTRATION ON +#define ENABLE_DIF_REGISTRATIONS ON +#include "dmod.h" +#include "dmdfs.h" +#include "dmfsi.h" +#include + +/** + * @brief Magic number for DMDFS context validation + */ +#define DMDFS_CONTEXT_MAGIC 0x444D4446 // 'DMDF' + +/** + * @brief File system context structure + */ +struct dmfsi_context +{ + uint32_t magic; + void* driver_context; // Driver-specific context +}; + +// ============================================================================ +// Module Interface Implementation +// ============================================================================ + +/** + * @brief Module pre-initialization (optional) + */ +void dmod_preinit(void) +{ + // Nothing to do +} + +/** + * @brief Module initialization + */ +int dmod_init(const Dmod_Config_t *Config) +{ + // Nothing to do + return 0; +} + +/** + * @brief Module deinitialization + */ +int dmod_deinit(void) +{ + // Nothing to do + return 0; +} + +// ============================================================================ +// DMFSI Interface Implementation +// ============================================================================ + +/** + * @brief Initialize the file system + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, dmfsi_context_t, _init, (const char* config) ) +{ + dmfsi_context_t ctx = Dmod_Malloc(sizeof(struct dmfsi_context)); + if (ctx == NULL) + { + DMOD_LOG_ERROR("dmdfs: Failed to allocate memory for context\n"); + return NULL; + } + + ctx->magic = DMDFS_CONTEXT_MAGIC; + ctx->driver_context = NULL; + + // TODO: Initialize driver context based on config + + return ctx; +} + +/** + * @brief Deinitialize the file system + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _deinit, (dmfsi_context_t ctx) ) +{ + if (ctx) + { + // TODO: Cleanup driver context + Dmod_Free(ctx); + } + return DMFSI_OK; +} + +/** + * @brief Validate the file system context + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _context_is_valid, (dmfsi_context_t ctx) ) +{ + return (ctx && ctx->magic == DMDFS_CONTEXT_MAGIC) ? 1 : 0; +} + +/** + * @brief Open a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _fopen, (dmfsi_context_t ctx, void** fp, const char* path, int mode, int attr) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in fopen\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file opening through driver + DMOD_LOG_ERROR("dmdfs: fopen not yet implemented\n"); + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Close a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _fclose, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in fclose\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file closing + DMOD_LOG_ERROR("dmdfs: fclose not yet implemented\n"); + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Read from a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _fread, (dmfsi_context_t ctx, void* fp, void* buffer, size_t size, size_t* read) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in fread\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file reading + if (read) *read = 0; + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Write to a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _fwrite, (dmfsi_context_t ctx, void* fp, const void* buffer, size_t size, size_t* written) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in fwrite\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file writing + if (written) *written = 0; + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Seek to a position in a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _lseek, (dmfsi_context_t ctx, void* fp, long offset, int whence) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in lseek\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file seeking + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Get current position in a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, long, _tell, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in tell\n"); + return -1; + } + + // TODO: Implement position retrieval + return -1; +} + +/** + * @brief Check if at end of file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _eof, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in eof\n"); + return 1; + } + + // TODO: Implement EOF checking + return 1; +} + +/** + * @brief Get file size + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, long, _size, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in size\n"); + return -1; + } + + // TODO: Implement size retrieval + return -1; +} + +/** + * @brief Read a single character + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _getc, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in getc\n"); + return -1; + } + + // TODO: Implement character reading + return -1; +} + +/** + * @brief Write a single character + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _putc, (dmfsi_context_t ctx, void* fp, char c) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in putc\n"); + return -1; + } + + // TODO: Implement character writing + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Flush file buffers + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _fflush, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in fflush\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement buffer flushing + return DMFSI_OK; +} + +/** + * @brief Sync file to storage + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _sync, (dmfsi_context_t ctx, void* fp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in sync\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement sync + return DMFSI_OK; +} + +/** + * @brief Open a directory + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _opendir, (dmfsi_context_t ctx, void** dp, const char* path) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in opendir\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement directory opening + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Read directory entry + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _readdir, (dmfsi_context_t ctx, void* dp, dmfsi_dir_entry_t* entry) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in readdir\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement directory reading + return DMFSI_ERR_NOT_FOUND; +} + +/** + * @brief Close a directory + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _closedir, (dmfsi_context_t ctx, void* dp) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in closedir\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement directory closing + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Create a directory + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _mkdir, (dmfsi_context_t ctx, const char* path) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in mkdir\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement directory creation + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Check if directory exists + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _direxists, (dmfsi_context_t ctx, const char* path) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in direxists\n"); + return 0; + } + + // TODO: Implement directory existence check + return 0; +} + +/** + * @brief Get file/directory statistics + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _stat, (dmfsi_context_t ctx, const char* path, dmfsi_stat_t* stat) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in stat\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement stat + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Delete a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _unlink, (dmfsi_context_t ctx, const char* path) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in unlink\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file deletion + return DMFSI_ERR_GENERAL; +} + +/** + * @brief Rename a file + */ +dmod_dmfsi_dif_api_declaration( 1.0, dmdfs, int, _rename, (dmfsi_context_t ctx, const char* oldpath, const char* newpath) ) +{ + if(dmfsi_dmdfs_context_is_valid(ctx) == 0) + { + DMOD_LOG_ERROR("dmdfs: Invalid context in rename\n"); + return DMFSI_ERR_INVALID; + } + + // TODO: Implement file renaming + return DMFSI_ERR_GENERAL; +} From f552d8ae33455431279075b76237b3a00fba9cfd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 19 Dec 2025 16:37:08 +0000 Subject: [PATCH 3/7] Update .gitignore to exclude build directory Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- .gitignore | 4 +++ build/dmdfs | Bin 16112 -> 0 bytes build/dmdfs_defs.h | 66 ------------------------------------ build/dmdfs_header.c | 64 ---------------------------------- build/dmf/dmdfs.dmf | Bin 5344 -> 0 bytes build/dmf/dmdfs_version.txt | 2 -- build/dmf/dmfsi.dmf | Bin 560 -> 0 bytes build/dmf/dmfsi_version.txt | 2 -- 8 files changed, 4 insertions(+), 134 deletions(-) delete mode 100755 build/dmdfs delete mode 100644 build/dmdfs_defs.h delete mode 100644 build/dmdfs_header.c delete mode 100755 build/dmf/dmdfs.dmf delete mode 100644 build/dmf/dmdfs_version.txt delete mode 100755 build/dmf/dmfsi.dmf delete mode 100644 build/dmf/dmfsi_version.txt diff --git a/.gitignore b/.gitignore index 1f99f9d..1a48f1a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Build directory +build/ + +# CMake files CMakeLists.txt.user CMakeCache.txt CMakeFiles diff --git a/build/dmdfs b/build/dmdfs deleted file mode 100755 index dca7a34a98d3e195fb9e50971d16ecb7527c9087..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16112 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 RjlR^ge;g0wLx#|_{~s)zEE@m- diff --git a/build/dmdfs_defs.h b/build/dmdfs_defs.h deleted file mode 100644 index 3ef3e23..0000000 --- a/build/dmdfs_defs.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef DMOD_MOD_DEFS_H_dmdfs -#define DMOD_MOD_DEFS_H_dmdfs - -#include "dmod_defs.h" - -#ifndef dmod_dmdfs_version -# define dmod_dmdfs_version "0.1" -#endif - -#ifdef DMOD_dmdfs -# define dmod_dmdfs_api_to_mal(MODULE,NAME) \ - DMOD_API_TO_MAL(dmdfs, MODULE, NAME) -# define dmod_dmdfs_api_to_mal_ex(NAME_IN, MODULE_MAL, NAME_MAL) \ - DMOD_API_TO_MAL_EX(dmdfs, MODULE_IN, NAME_IN, MODULE_MAL, NAME_MAL) -# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ - DMOD_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_api_declaration(VERSION, RET, NAME, PARAMS) \ - DMOD_INPUT_API_DECLARATION(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ - DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ - DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) -# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ - DMOD_DIF_API_DECLARATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# ifndef DMOD_MODULE_NAME -# define DMOD_MODULE_NAME "dmdfs" -# endif -# ifndef DMOD_MODULE_VERSION -# define DMOD_MODULE_VERSION "0.1" -# endif -# define DMOD_AUTHOR_NAME "Patryk;Kubiak" -# define DMOD_STACK_SIZE 1024 -# define DMOD_PRIORITY 1 -# define DMOD_MODULE_TYPE Dmod_ModuleType_Library -# define DMOD_MANUAL_LOAD OFF -#else -# ifdef DMOD_MAL_dmdfs -# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -#else -# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -#endif -# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ - DMOD_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ - DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ - DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) -# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ - RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS; \ - _DMOD_DIF_API_REGISTRATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), NAME) \ - RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS -#endif - -#endif // DMOD_MOD_DEFS_H_dmdfs diff --git a/build/dmdfs_header.c b/build/dmdfs_header.c deleted file mode 100644 index 42c5984..0000000 --- a/build/dmdfs_header.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "dmod.h" - -#ifndef DMOD_MODULE_NAME -# define DMOD_MODULE_NAME "" -#endif - -#ifndef DMOD_AUTHOR_NAME -# define DMOD_AUTHOR_NAME "" -#endif - -#ifndef DMOD_MODULE_VERSION -# define DMOD_MODULE_VERSION "0.0" -#endif - -#ifndef DMOD_MODULE_TYPE -# define Unknown -#endif - -#ifndef DMOD_STACK_SIZE -# define DMOD_STACK_SIZE 1024 -#endif - -#ifndef DMOD_PRIORITY -# define DMOD_PRIORITY 0 -#endif - -#ifndef DMOD_MANUAL_LOAD -# define DMOD_MANUAL_LOAD false -#endif - -extern void DMOD_WEAK_SYMBOL dmod_preinit(void); -extern int DMOD_WEAK_SYMBOL dmod_init(const Dmod_Config_t *Config); -extern int DMOD_WEAK_SYMBOL main(int argc, char** argv); -extern int DMOD_WEAK_SYMBOL dmod_deinit(void); -extern int DMOD_WEAK_SYMBOL dmod_signal( int SignalNumber ); - -extern Dmod_License_t DMOD_WEAK_SYMBOL License; -extern void* __footer_start; - -volatile const Dmod_ModuleHeader_t ModuleHeader DMOD_SECTION(".header") DMOD_USED = -{ - .Signature = DMOD_HEADER_SIGNATURE, - .HeaderSize = sizeof( Dmod_ModuleHeader_t ), - .DmodVersion = DMOD_VERSION, - .PointerSize = sizeof(void*), - .Arch = DMOD_ARCH, - .CpuName = DMOD_CPU_NAME, - .Name = "dmdfs", - .Author = "Patryk;Kubiak", - .Version = "0.1", - .Preinit.Ptr = dmod_preinit, - .Init.Ptr = dmod_init, - .Main.Ptr = main, - .Deinit.Ptr = dmod_deinit, - .Signal.Ptr = dmod_signal, - .RequiredStackSize = 1024, - .Priority = 1, - .ModuleType = Dmod_ModuleType_Library, - .License.Ptr = &License, - .Footer.Ptr = &__footer_start, - .ManualLoad = OFF, -}; - -volatile const Dmod_ModuleHeader_t* DMOD_Header DMOD_GLOBAL_POINTER = &ModuleHeader; diff --git a/build/dmf/dmdfs.dmf b/build/dmf/dmdfs.dmf deleted file mode 100755 index bb872208650d245a51f1c31e975779cb7002a1b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmbtYZ)jUp6n|S+`;RScXXkXR%|{2WCeF>;(KXDhCb)LBb0XBy#pI=ZH1EBbywp_a zsH_8nEe7<%m?C}|GGwJNkbW5rcGwj``>|Li`!p#VQW$Do)p*Xm=lw~Vmp0jh?&f#T zJ->6$x#ygB_q=Diy=wwII|QK`hGg5ZfnzV@M0rn04u#`IRC@zjY;^ee8;SR%z;J?1efGqcrNm@jNW-;u3HJT```opEiE7AL&|-m+SfHBK!y8r5Zlp*ucjqVHe?g z!o7rNFlg{Z3HK8Il<-;=m){_qCj28|7vcMam!9J5D;oJ2CEQH7p75)LXDa!+w+QzV zRtT?ATvCL`311^zPxyPn(F)G@E8(S`9B&YwA-sPtpC2dONqCLo`7Yt#XcXuiT4;QQ z#z&6k$G*#1?HS*tht=*svrQ}6Y}TFeUAkR8?`ZJ|?#z6+)zLD+tT|c)Tn}QpN z>g@7%dmW#{8hr`l11jGql__Ath1GnS=AFaD$SzG}5)HE(DC9=Qk=r-bF$zcL&SabX zD4Oc{gi)#;g4I`w10FJ_P6?9Y5RMV*sr7BR7X3( zs{rlx_cpB=;VM-G2LTq_pCxFWxLNLWQyZvFWSHX}#B`7oPeT@C==LD7CA1!)`*KFB z@-JYB1!gkmI6dqd*Q=hCkPc`Yud?KMGO*gm58arcRm=(DM=~#(%}+ zA0z%T&cBEF6@ar?1x9@_WI2;!{B0)xIpROa`KO`lu=7V)_WqY4b11(K6aOukg81|h z|1>}|aj`$-=Tx!%Cr$oJ;y=&%e}^uJ`|sH{f34nqv<^%1>@zK_P{=nPGY=-o!b5;& z#)i|D&^ubZf>95J`M(2giqK8s|AOU;2v{f5hZ}p7{53 z{_F56#Q4-~hrdvNSY9_mQ%TgfU<&h}sHXuMFGtpI3cVk(pX%}76rZ?h-XVI`pEio-1@h$9-~(W@WBr` z_Yq5tr?EfbnOXZe;5558w>uB?A8{Xd%l)VN`p)#7chan183{zBkTa+%nwZp_lHv@j zQBi@rR#82+$f>BBb5sN^IT{gV5hy~n!hwF5j4l?{FJw0uQR8B5alJ5GRM;>Yg{Ne@ zF);w!E?w_~n51pB-vWL{;-WZQhCNM;MDPk+s(+#yMzxal;?jrUUFmv*q82PiFPbP% zFC2~};zL{HO@VWWk1A#D6U!qc#aK+si7TetljySwun?4*5ArZqE>#b-#H1A0;^cX$ z`f)9wm6I0vO9-?g~f|G33-#XCM+$g8@x+%A%~sMxh6;ajD(i>Ut6W1c8Kn&o)8~M7{|2N2*4c^OumE9bdi-^N{3vdgL!5 zF=d~PlycifiWOrc;zej9#LBi2VY9FiVgIoaK})ldV3V{FvA$~~3$tEsC&ZZ9$ym7U zgc#0znQ>11jXNO42iPk(f1REVqNGTh(uIUYLL+v@{tK%8xn)Vr`5sJ;)ocr$Q!&&+!YhWQ_0Qq-K-9CB$(vz zz<);syk5a2NqD{IoB$Wt49?N#B__vDK!{O3cDUm1?x~lq-kV!Fv1_(}=HiZ>w?V|7 hHTW0*qHw{x07Opsjo+QB;al97^c_hbt>63b_y4k=#y-kJ!on=x%mgGr9!SYeE6&8D)y3D}MZv|_E!a~bBsDP?L#3gf z0frb@0O&qspn%3_V1dYjgps8_Aaj6neQ5m8{BplMn%{7E^x7H%r40}K7rpua|9`^+ z9?eHM4yR2(lDCA)??je|cqKEhB(*3lF*#KsH$SB`CsiRcFS8^wF( Date: Fri, 19 Dec 2025 16:39:35 +0000 Subject: [PATCH 4/7] Initialize dmdfs as DMOD filesystem module Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- _codeql_build_dir/dmdfs | Bin 0 -> 16112 bytes _codeql_build_dir/dmdfs_defs.h | 66 ++++++++++++++++++++++++ _codeql_build_dir/dmdfs_header.c | 64 +++++++++++++++++++++++ _codeql_build_dir/dmf/dmdfs.dmf | Bin 0 -> 5344 bytes _codeql_build_dir/dmf/dmdfs_version.txt | 2 + _codeql_build_dir/dmf/dmfsi.dmf | Bin 0 -> 560 bytes _codeql_build_dir/dmf/dmfsi_version.txt | 2 + _codeql_detected_source_root | 1 + 8 files changed, 135 insertions(+) create mode 100755 _codeql_build_dir/dmdfs create mode 100644 _codeql_build_dir/dmdfs_defs.h create mode 100644 _codeql_build_dir/dmdfs_header.c create mode 100755 _codeql_build_dir/dmf/dmdfs.dmf create mode 100644 _codeql_build_dir/dmf/dmdfs_version.txt create mode 100755 _codeql_build_dir/dmf/dmfsi.dmf create mode 100644 _codeql_build_dir/dmf/dmfsi_version.txt create mode 120000 _codeql_detected_source_root diff --git a/_codeql_build_dir/dmdfs b/_codeql_build_dir/dmdfs new file mode 100755 index 0000000000000000000000000000000000000000..dca7a34a98d3e195fb9e50971d16ecb7527c9087 GIT binary patch literal 16112 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 RjlR^ge;g0wLx#|_{~s)zEE@m- literal 0 HcmV?d00001 diff --git a/_codeql_build_dir/dmdfs_defs.h b/_codeql_build_dir/dmdfs_defs.h new file mode 100644 index 0000000..3ef3e23 --- /dev/null +++ b/_codeql_build_dir/dmdfs_defs.h @@ -0,0 +1,66 @@ +#ifndef DMOD_MOD_DEFS_H_dmdfs +#define DMOD_MOD_DEFS_H_dmdfs + +#include "dmod_defs.h" + +#ifndef dmod_dmdfs_version +# define dmod_dmdfs_version "0.1" +#endif + +#ifdef DMOD_dmdfs +# define dmod_dmdfs_api_to_mal(MODULE,NAME) \ + DMOD_API_TO_MAL(dmdfs, MODULE, NAME) +# define dmod_dmdfs_api_to_mal_ex(NAME_IN, MODULE_MAL, NAME_MAL) \ + DMOD_API_TO_MAL_EX(dmdfs, MODULE_IN, NAME_IN, MODULE_MAL, NAME_MAL) +# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ + DMOD_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_api_declaration(VERSION, RET, NAME, PARAMS) \ + DMOD_INPUT_API_DECLARATION(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ + DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ + DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) +# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ + DMOD_DIF_API_DECLARATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# ifndef DMOD_MODULE_NAME +# define DMOD_MODULE_NAME "dmdfs" +# endif +# ifndef DMOD_MODULE_VERSION +# define DMOD_MODULE_VERSION "0.1" +# endif +# define DMOD_AUTHOR_NAME "Patryk;Kubiak" +# define DMOD_STACK_SIZE 1024 +# define DMOD_PRIORITY 1 +# define DMOD_MODULE_TYPE Dmod_ModuleType_Library +# define DMOD_MANUAL_LOAD OFF +#else +# ifdef DMOD_MAL_dmdfs +# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +#else +# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +#endif +# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ + DMOD_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ + DMOD_GLOBAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) +# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ + DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ + DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) +# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ + RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS; \ + _DMOD_DIF_API_REGISTRATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), NAME) \ + RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS +#endif + +#endif // DMOD_MOD_DEFS_H_dmdfs diff --git a/_codeql_build_dir/dmdfs_header.c b/_codeql_build_dir/dmdfs_header.c new file mode 100644 index 0000000..42c5984 --- /dev/null +++ b/_codeql_build_dir/dmdfs_header.c @@ -0,0 +1,64 @@ +#include "dmod.h" + +#ifndef DMOD_MODULE_NAME +# define DMOD_MODULE_NAME "" +#endif + +#ifndef DMOD_AUTHOR_NAME +# define DMOD_AUTHOR_NAME "" +#endif + +#ifndef DMOD_MODULE_VERSION +# define DMOD_MODULE_VERSION "0.0" +#endif + +#ifndef DMOD_MODULE_TYPE +# define Unknown +#endif + +#ifndef DMOD_STACK_SIZE +# define DMOD_STACK_SIZE 1024 +#endif + +#ifndef DMOD_PRIORITY +# define DMOD_PRIORITY 0 +#endif + +#ifndef DMOD_MANUAL_LOAD +# define DMOD_MANUAL_LOAD false +#endif + +extern void DMOD_WEAK_SYMBOL dmod_preinit(void); +extern int DMOD_WEAK_SYMBOL dmod_init(const Dmod_Config_t *Config); +extern int DMOD_WEAK_SYMBOL main(int argc, char** argv); +extern int DMOD_WEAK_SYMBOL dmod_deinit(void); +extern int DMOD_WEAK_SYMBOL dmod_signal( int SignalNumber ); + +extern Dmod_License_t DMOD_WEAK_SYMBOL License; +extern void* __footer_start; + +volatile const Dmod_ModuleHeader_t ModuleHeader DMOD_SECTION(".header") DMOD_USED = +{ + .Signature = DMOD_HEADER_SIGNATURE, + .HeaderSize = sizeof( Dmod_ModuleHeader_t ), + .DmodVersion = DMOD_VERSION, + .PointerSize = sizeof(void*), + .Arch = DMOD_ARCH, + .CpuName = DMOD_CPU_NAME, + .Name = "dmdfs", + .Author = "Patryk;Kubiak", + .Version = "0.1", + .Preinit.Ptr = dmod_preinit, + .Init.Ptr = dmod_init, + .Main.Ptr = main, + .Deinit.Ptr = dmod_deinit, + .Signal.Ptr = dmod_signal, + .RequiredStackSize = 1024, + .Priority = 1, + .ModuleType = Dmod_ModuleType_Library, + .License.Ptr = &License, + .Footer.Ptr = &__footer_start, + .ManualLoad = OFF, +}; + +volatile const Dmod_ModuleHeader_t* DMOD_Header DMOD_GLOBAL_POINTER = &ModuleHeader; diff --git a/_codeql_build_dir/dmf/dmdfs.dmf b/_codeql_build_dir/dmf/dmdfs.dmf new file mode 100755 index 0000000000000000000000000000000000000000..bb872208650d245a51f1c31e975779cb7002a1b1 GIT binary patch literal 5344 zcmbtYZ)jUp6n|S+`;RScXXkXR%|{2WCeF>;(KXDhCb)LBb0XBy#pI=ZH1EBbywp_a zsH_8nEe7<%m?C}|GGwJNkbW5rcGwj``>|Li`!p#VQW$Do)p*Xm=lw~Vmp0jh?&f#T zJ->6$x#ygB_q=Diy=wwII|QK`hGg5ZfnzV@M0rn04u#`IRC@zjY;^ee8;SR%z;J?1efGqcrNm@jNW-;u3HJT```opEiE7AL&|-m+SfHBK!y8r5Zlp*ucjqVHe?g z!o7rNFlg{Z3HK8Il<-;=m){_qCj28|7vcMam!9J5D;oJ2CEQH7p75)LXDa!+w+QzV zRtT?ATvCL`311^zPxyPn(F)G@E8(S`9B&YwA-sPtpC2dONqCLo`7Yt#XcXuiT4;QQ z#z&6k$G*#1?HS*tht=*svrQ}6Y}TFeUAkR8?`ZJ|?#z6+)zLD+tT|c)Tn}QpN z>g@7%dmW#{8hr`l11jGql__Ath1GnS=AFaD$SzG}5)HE(DC9=Qk=r-bF$zcL&SabX zD4Oc{gi)#;g4I`w10FJ_P6?9Y5RMV*sr7BR7X3( zs{rlx_cpB=;VM-G2LTq_pCxFWxLNLWQyZvFWSHX}#B`7oPeT@C==LD7CA1!)`*KFB z@-JYB1!gkmI6dqd*Q=hCkPc`Yud?KMGO*gm58arcRm=(DM=~#(%}+ zA0z%T&cBEF6@ar?1x9@_WI2;!{B0)xIpROa`KO`lu=7V)_WqY4b11(K6aOukg81|h z|1>}|aj`$-=Tx!%Cr$oJ;y=&%e}^uJ`|sH{f34nqv<^%1>@zK_P{=nPGY=-o!b5;& z#)i|D&^ubZf>95J`M(2giqK8s|AOU;2v{f5hZ}p7{53 z{_F56#Q4-~hrdvNSY9_mQ%TgfU<&h}sHXuMFGtpI3cVk(pX%}76rZ?h-XVI`pEio-1@h$9-~(W@WBr` z_Yq5tr?EfbnOXZe;5558w>uB?A8{Xd%l)VN`p)#7chan183{zBkTa+%nwZp_lHv@j zQBi@rR#82+$f>BBb5sN^IT{gV5hy~n!hwF5j4l?{FJw0uQR8B5alJ5GRM;>Yg{Ne@ zF);w!E?w_~n51pB-vWL{;-WZQhCNM;MDPk+s(+#yMzxal;?jrUUFmv*q82PiFPbP% zFC2~};zL{HO@VWWk1A#D6U!qc#aK+si7TetljySwun?4*5ArZqE>#b-#H1A0;^cX$ z`f)9wm6I0vO9-?g~f|G33-#XCM+$g8@x+%A%~sMxh6;ajD(i>Ut6W1c8Kn&o)8~M7{|2N2*4c^OumE9bdi-^N{3vdgL!5 zF=d~PlycifiWOrc;zej9#LBi2VY9FiVgIoaK})ldV3V{FvA$~~3$tEsC&ZZ9$ym7U zgc#0znQ>11jXNO42iPk(f1REVqNGTh(uIUYLL+v@{tK%8xn)Vr`5sJ;)ocr$Q!&&+!YhWQ_0Qq-K-9CB$(vz zz<);syk5a2NqD{IoB$Wt49?N#B__vDK!{O3cDUm1?x~lq-kV!Fv1_(}=HiZ>w?V|7 hHTW0*qHw{x07Opsjo+QB;al97^c_hbt>63b_y4k=#y-kJ!on=x%mgGr9!SYeE6&8D)y3D}MZv|_E!a~bBsDP?L#3gf z0frb@0O&qspn%3_V1dYjgps8_Aaj6neQ5m8{BplMn%{7E^x7H%r40}K7rpua|9`^+ z9?eHM4yR2(lDCA)??je|cqKEhB(*3lF*#KsH$SB`CsiRcFS8^wF( Date: Fri, 19 Dec 2025 17:07:25 +0000 Subject: [PATCH 5/7] Remove binary files, update .gitignore, and add CI workflows Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- .github/workflows/ci.yml | 30 +++ .github/workflows/release.yml | 272 ++++++++++++++++++++++++ .gitignore | 33 ++- _codeql_build_dir/dmdfs | Bin 16112 -> 0 bytes _codeql_build_dir/dmdfs_defs.h | 66 ------ _codeql_build_dir/dmdfs_header.c | 64 ------ _codeql_build_dir/dmf/dmdfs.dmf | Bin 5344 -> 0 bytes _codeql_build_dir/dmf/dmdfs_version.txt | 2 - _codeql_build_dir/dmf/dmfsi.dmf | Bin 560 -> 0 bytes _codeql_build_dir/dmf/dmfsi_version.txt | 2 - _codeql_detected_source_root | 1 - 11 files changed, 315 insertions(+), 155 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml delete mode 100755 _codeql_build_dir/dmdfs delete mode 100644 _codeql_build_dir/dmdfs_defs.h delete mode 100644 _codeql_build_dir/dmdfs_header.c delete mode 100755 _codeql_build_dir/dmf/dmdfs.dmf delete mode 100644 _codeql_build_dir/dmf/dmdfs_version.txt delete mode 100755 _codeql_build_dir/dmf/dmfsi.dmf delete mode 100644 _codeql_build_dir/dmf/dmfsi_version.txt delete mode 120000 _codeql_detected_source_root diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f69a3bd --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: CI + +on: + push: + branches: [ master, develop ] + pull_request: + branches: [ master, develop, feature/**, copilot/** ] + +jobs: + build: + name: Build + runs-on: ubuntu-latest + container: + image: chocotechnologies/dmod:1.0.4 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Build dmdfs project + run: | + mkdir -p build + cd build + cmake .. -DDMOD_MODE=DMOD_MODULE + cmake --build . + + - name: Verify build artifacts + run: | + echo "Build completed successfully" + ls -lh build/dmf/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..447993a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,272 @@ +name: Release + +on: + release: + types: [created] + +jobs: + discover-architectures: + name: Discover Architectures + runs-on: ubuntu-latest + permissions: + contents: read + container: + image: chocotechnologies/dmod:1.0.4 + outputs: + architectures: ${{ steps.list-archs.outputs.architectures }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Fetch dmod to discover architectures + run: | + mkdir -p build_discovery + cd build_discovery + cmake .. -DDMOD_MODE=DMOD_MODULE + + - name: List available architectures + id: list-archs + run: | + DMOD_SRC_DIR=$(find build_discovery -path "*/_deps/dmod-src" -type d | head -1) + + # create JSON array + ARCHS=$(find ${DMOD_SRC_DIR}/configs/arch -name "tools-cfg.cmake" | \ + sed "s|${DMOD_SRC_DIR}/configs/arch/||g" | \ + sed 's|/tools-cfg.cmake||g' | \ + jq -R -s -c 'split("\n") | map(select(length > 0))') + + echo "Found architectures: $ARCHS" + echo "architectures=$ARCHS" >> $GITHUB_OUTPUT + + build-release: + name: Build Release for ${{ matrix.arch_name }} + needs: discover-architectures + runs-on: ubuntu-latest + permissions: + contents: write + strategy: + matrix: + arch_name: ${{ fromJson(needs.discover-architectures.outputs.architectures) }} + + container: + image: chocotechnologies/dmod:1.0.4 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Extract version from tag + id: get_version + run: | + # Extract version from tag (e.g., v1.2 -> 1.2) + VERSION="${{ github.event.release.tag_name }}" + VERSION="${VERSION#v}" # Remove 'v' prefix if present + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Extracted version: $VERSION" + + - name: Build dmdfs for ${{ matrix.arch_name }} + run: | + set -e + ARCH_DIR_NAME=$(echo "${{ matrix.arch_name }}" | sed 's|/|-|') + echo "ARCH_DIR_NAME=$ARCH_DIR_NAME" >> $GITHUB_ENV + echo "ARTIFACT_NAME=release-$ARCH_DIR_NAME" >> $GITHUB_ENV + mkdir -p build_$ARCH_DIR_NAME + cd build_$ARCH_DIR_NAME + + # First run cmake to fetch dependencies with version from tag + cmake .. -DDMOD_TOOLS_NAME=arch/${{ matrix.arch_name }} -DDMOD_MODULE_VERSION="${{ steps.get_version.outputs.version }}" + + # Build the modules + cmake --build . + + echo "Build completed for ${{ matrix.arch_name }}" + ls -la dmf/ + ls -la dmfc/ + + - name: Prepare release package + run: | + set -e + mkdir -p release_package + BUILD_DIR=build_$ARCH_DIR_NAME + DMF_DIR="$BUILD_DIR/dmf" + DMFC_DIR="$BUILD_DIR/dmfc" + + cp $DMF_DIR/dmdfs.dmf release_package/ + cp $DMF_DIR/dmdfs_version.txt release_package/ + cp $DMFC_DIR/dmdfs.dmfc release_package/ + # Copy .dmd file if it exists + if [ -f $DMF_DIR/dmdfs.dmd ]; then + cp $DMF_DIR/dmdfs.dmd release_package/ + fi + + # Copy documentation and license + cp README.md release_package/ + cp LICENSE release_package/ + + # Create release notes file from GitHub release + echo "${{ github.event.release.body }}" > release_package/RELEASE_NOTES.txt + + echo "Package contents:" + ls -la release_package/ + + - name: Create release archive + run: | + cd release_package + zip -r ../dmdfs-${{ github.event.release.tag_name }}-$ARCH_DIR_NAME.zip . + cd .. + echo "Created archive:" + ls -lh dmdfs-*.zip + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ env.ARTIFACT_NAME }} + path: dmdfs-${{ github.event.release.tag_name }}-*.zip + retention-days: 1 + + generate-versions-manifest: + name: Generate versions.dmm + needs: discover-architectures + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch all history to get all tags + + - name: Generate versions.dmm + run: | + set -e + echo "# List of available versions for dmdfs modules" > versions.dmm + echo "# Generated automatically by CI" >> versions.dmm + echo "" >> versions.dmm + + # Get all version tags (starting with 'v') and extract version numbers + VERSIONS=$(git tag -l 'v*' | sed 's/^v//' | sort -V | tr '\n' ' ' | sed 's/ $//') + + # Remove vlatest from the list if present + VERSIONS=$(echo $VERSIONS | sed 's/\blatest\b//g' | xargs) + + if [ -z "$VERSIONS" ]; then + echo "Warning: No version tags found" + VERSIONS="${{ github.event.release.tag_name }}" + VERSIONS="${VERSIONS#v}" + fi + + echo "Found versions: $VERSIONS" + + # Add $version-available directive for dmdfs module + echo "\$version-available dmdfs $VERSIONS" >> versions.dmm + + echo "Generated versions.dmm:" + cat versions.dmm + + - name: Upload versions.dmm as artifact + uses: actions/upload-artifact@v4 + with: + name: versions-manifest + path: versions.dmm + retention-days: 1 + + upload-release-assets: + name: Upload Release Assets + needs: [build-release, generate-versions-manifest] + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Display artifact structure + run: | + echo "Downloaded artifacts:" + ls -lR artifacts/ + + - name: Upload release assets to versioned tag + shell: bash + env: + GH_TOKEN: ${{ github.token }} + run: | + set -e + # Upload all release archives to the GitHub release + shopt -s nullglob + zip_files=(artifacts/release-*/*.zip) + + if [ ${#zip_files[@]} -eq 0 ]; then + echo "Error: No artifacts found to upload" + exit 1 + fi + + for zip_file in "${zip_files[@]}"; do + echo "Uploading $zip_file to ${{ github.event.release.tag_name }}..." + gh release upload ${{ github.event.release.tag_name }} \ + "$zip_file" \ + --repo ${{ github.repository }} \ + --clobber + done + + # Upload versions.dmm to the versioned release + if [ -f artifacts/versions-manifest/versions.dmm ]; then + echo "Uploading versions.dmm to ${{ github.event.release.tag_name }}..." + gh release upload ${{ github.event.release.tag_name }} \ + artifacts/versions-manifest/versions.dmm \ + --repo ${{ github.repository }} \ + --clobber + fi + + echo "Successfully uploaded ${#zip_files[@]} artifact(s) to ${{ github.event.release.tag_name }}" + + - name: Create or update latest release + shell: bash + env: + GH_TOKEN: ${{ github.token }} + run: | + set -e + + # Check if vlatest release exists + if gh release view vlatest --repo ${{ github.repository }} >/dev/null 2>&1; then + echo "Release vlatest exists, deleting it..." + gh release delete vlatest --repo ${{ github.repository }} --yes + fi + + # Create new vlatest release + echo "Creating vlatest release..." + gh release create vlatest \ + --repo ${{ github.repository }} \ + --title "Latest Release (based on ${{ github.event.release.tag_name }})" \ + --notes "This release always points to the latest stable version. Currently based on ${{ github.event.release.tag_name }}." + + - name: Upload release assets to latest tag + shell: bash + env: + GH_TOKEN: ${{ github.token }} + run: | + set -e + shopt -s nullglob + zip_files=(artifacts/release-*/*.zip) + + for zip_file in "${zip_files[@]}"; do + echo "Uploading $zip_file to vlatest..." + gh release upload vlatest \ + "$zip_file" \ + --repo ${{ github.repository }} \ + --clobber + done + + # Upload versions.dmm to the latest release + if [ -f artifacts/versions-manifest/versions.dmm ]; then + echo "Uploading versions.dmm to vlatest..." + gh release upload vlatest \ + artifacts/versions-manifest/versions.dmm \ + --repo ${{ github.repository }} \ + --clobber + fi + + echo "Successfully uploaded ${#zip_files[@]} artifact(s) to vlatest" diff --git a/.gitignore b/.gitignore index 1a48f1a..788d9b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,16 @@ -# Build directory +# Build directories build/ +build_*/ +_codeql_build_dir/ +_codeql_detected_source_root +*.dmf +*.dmfc -# CMake files -CMakeLists.txt.user -CMakeCache.txt -CMakeFiles -CMakeScripts -Testing -Makefile -cmake_install.cmake -install_manifest.txt -compile_commands.json -CTestTestfile.cmake -_deps -CMakeUserPresets.json +# IDE +.vscode/ +.idea/ -# CLion -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#cmake-build-* +# Temporary files +*.tmp +*.swp +*~ diff --git a/_codeql_build_dir/dmdfs b/_codeql_build_dir/dmdfs deleted file mode 100755 index dca7a34a98d3e195fb9e50971d16ecb7527c9087..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16112 zcmeHOeT-Dq6~8PZ2*sU6QLM^N#U{|oxWkt#1enT-OX}(h)nL#J!_J%C3G?O58{BQG zT_dJ!E9o}&4`W+PlbT{$$u=ep|5!F+3f83VKTS6EBQ#AcL~XXQttf4`=iK|dZ{E9a z-kaSe>0fh`**oX!cg{Wc-23jk1K+;;-kmM;<_XSFVrPOr?`^- z-YQl}-78rXsma~nG>-1I9{X58pW$UnTg!ES6ZpD!+p&eVQ`RAW5tkm}|I?21a_m+W z+p%lCeL|6xMYMqYX>qe}W}umYW(JxWXl9_9fo2Ap8E9spnSo{oni*(j;Bqq1b$?IS z6a&x;@*?U6J2xdaZJ0Y^I-kx|Ld<(pc6sRFmakV2WK#$0=yk;69`61niY%em!eN6J zS11X;=j(TU=IHlsB^6?HvHCWN_w5eQ{{%g8m69)OQ+)|^2j~dsUeIHlG-@T#y`aAj zdTODPzXEy`^jn}iKz{&wLSCi_F(3CICD1EDM?l{RdWG z>kmmst4KV8>i*t>5kg|cMM}-?I>m)CJ#l!v+II313zd^$#_m44b%>@eK0dvC7mJQ= z{S(N|M1J_T#&mTwmZ6YGsqW+ z42tg|=p0fe3qkf185W-_Y1=tiHR$D?WOjI54ty(+ZdSl2sERptS2M6HwF%Ml%(%U9 z*BMT+kS;ybnUM48o+P)wv;T4YEr7pQh(%-H27fOSIX8bxRZ+;0?7Lip+*5OU7G64) z(>H19@gUb2PKSAHRIIYs^{k7|J)VpIcEI)+#nL>PmfUdzWz5Lw)?;kTo*&D)4`#@NWbDvopjGuK${gBXH5FT)at-23h|e z7pQx){xv>r2-BYR^~q<>5C(uhNi3S=Eb!kXvX-I-_`Fm+_|MhwyMaHb@UH@X_OkHT z*YH;Ze}%$-nI4UtpQ~nqUvGbyyy&E60ia(a7S}(ZPY~%m9OZsf@A=64sm{MIKb4x3 zb68b-m6Hp!F>w65h@5-=uc_gm1pdWOR z{gHZ;sx$Z+(1AJiqVm-MjDK{b&^2U4=ub zTs9r;D;8{P(2iyc(M+*q73i!LYA2PVg`yoDvdAi5%2|1fAkvG)jr%(CJj77@dVc$I z#fr5!+%6-P>N{qq)Mo9sY^5md+1ou{&f1OQtuxMC#j+00!JlpAa(o1y?f9%>hRtSe zSIK^pMmKxAe#`Egi(RQYH@i$GSFH>*sGB1C{vlY97kkG~r;iX2s+a?WoCs4y z@xjzdv#A2PoIX>=bqKjG4^stVR9}D;wH+Yk6%!y*i!eaQD?32Mn?-<#_n!a}ZD|1# z-XsG=a^DS*W#nESB;=e0$z-~Ngq%)O=FF3N;wH0|qLTd*^UE<)zjAnQ>Ib_`g32k$NR-)kMR zaxQsWmlW?TTh`r!etwT!haL$RIW>A6k^f|e4oTvk`yLc@fE{NZu9u{ouYj0l`4emB zzqj=0x);u!dS}}eC-;p#Ij`jn63I42fB93Q1KxfDiqdz!cUnYuaX-dAlJ4F2ef<5N z9XmEhS3h{5TCl6p`1;uTSjXB;RY|UUa@~el$A&dv6KF^y*EF6M8HZafLc}r}jlS1= z0KzXx{l8DU<6+Tl^kIE{FZVDrscoZA8{v<$BWjGxZ6AGDU*C7qd#h~y^q2LchW>Yn z&-(fvQsci!{D^4x-G?3r4nfJL{hlF;arAxTUL_Wj;Ol!$jsFqxBOE7ipe{a>d<3bP z)Gs0y>mM=hac>~L%nzPlJWg(30bk#bKBU-U3-LJ*qttWL@jpy-gsN-55l4J1UHknQI1|Qrm(a$+^{m%DV8nIA=Xj!q-;Gk=UvG&3 z{vP6Uoci|x9ZyE;&-c}NRr3AuJVkttCt}3^Q>owLtIt=UpD^^_4$yyB^8Mrb7&s9l z4@+qimiZ?+x93zRqTuV_0}g<{4*UuH?xFLrgZMly-jliMc~22PB3AnLnS;Um`7iAcY+d6@hz;{{44(ohT_u6-K^w=j=vPtJ999eTt&fRu5NN63%U+CCyT`1jQjO?z+N9B zRvF6MsRPv8Wz`SpZ)#r>F;#&ghW$;%c(I6BxyaGP+)0s3i;?27&PEFH`UBHn$Twy9$0bwe7%L>zx zbseVQZ1G`Ayf1~x)wUd_p|+ba4PL%VUcWSJa;LUMjDFLxV*Q0`tW>6)mhB-I>p(S| zORvqQMNDm4BGy;T^Y1=5YF<`%BU$s&53dh3EW7~d^R*U4^%wN3sCV0I{VCX&aIVy5 zU~5u*)v(`>bL)Qm`=qF&slLeH@m#zO^qpPMF;=!=*bl>=@08rl^uL*eY`+dl`u^ew zCx%){b`HSm9nVZRsldtvYT zZ;leloWHLb_M@;LouU7fVSg6(XJ=^tlwmKf#(-DOZ2Uhn>^ouK3HwI#ciONo!M-#@ z|9>&;kHh{r?C)$ae^=6aB?xEzornGT8QQNg>{quchpXFF&+FUW%=zyz><3^!0Q*Mk zr(oD0gZ(ksZ*e=P@23Cf4EuAiKL`6p_5Z42zXBWFil}njX#W3b*!RM|cZT+#8umwE ze+2e=Uslo7_AQ=sZr9U;$36d}upf;|vFK8r^ViJZ9k8b`WYhl+crvQ!A>+ZO?UhuB z?IhFb5O2uzNs%3;@4s7`(*w9j1z{w&YNcE zVc(${=+D71KVRKV+q-)`cDG*S%Zlp61=uY_vW*`93MljARmTpN?7DAL)a^zAXun#w RjlR^ge;g0wLx#|_{~s)zEE@m- diff --git a/_codeql_build_dir/dmdfs_defs.h b/_codeql_build_dir/dmdfs_defs.h deleted file mode 100644 index 3ef3e23..0000000 --- a/_codeql_build_dir/dmdfs_defs.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef DMOD_MOD_DEFS_H_dmdfs -#define DMOD_MOD_DEFS_H_dmdfs - -#include "dmod_defs.h" - -#ifndef dmod_dmdfs_version -# define dmod_dmdfs_version "0.1" -#endif - -#ifdef DMOD_dmdfs -# define dmod_dmdfs_api_to_mal(MODULE,NAME) \ - DMOD_API_TO_MAL(dmdfs, MODULE, NAME) -# define dmod_dmdfs_api_to_mal_ex(NAME_IN, MODULE_MAL, NAME_MAL) \ - DMOD_API_TO_MAL_EX(dmdfs, MODULE_IN, NAME_IN, MODULE_MAL, NAME_MAL) -# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ - DMOD_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_api_declaration(VERSION, RET, NAME, PARAMS) \ - DMOD_INPUT_API_DECLARATION(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ - DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ - DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) -# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ - DMOD_DIF_API_DECLARATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# ifndef DMOD_MODULE_NAME -# define DMOD_MODULE_NAME "dmdfs" -# endif -# ifndef DMOD_MODULE_VERSION -# define DMOD_MODULE_VERSION "0.1" -# endif -# define DMOD_AUTHOR_NAME "Patryk;Kubiak" -# define DMOD_STACK_SIZE 1024 -# define DMOD_PRIORITY 1 -# define DMOD_MODULE_TYPE Dmod_ModuleType_Library -# define DMOD_MANUAL_LOAD OFF -#else -# ifdef DMOD_MAL_dmdfs -# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_MAL_INPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -#else -# define dmod_dmdfs_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_MAL_OUTPUT_API(dmdfs , DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_mal(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_MAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -#endif -# define dmod_dmdfs_api(VERSION, RET, NAME, PARAMS) \ - DMOD_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_global_api(VERSION, RET, NAME, PARAMS) \ - DMOD_GLOBAL_OUTPUT_API(dmdfs, DMOD_MAKE_VERSION(VERSION,0.1), RET, NAME, PARAMS) -# define dmod_dmdfs_dif(VERSION, RET, NAME, PARAMS) \ - DMOD_DIF_FUNCTION_TYPE_DECLARATION(dmdfs, VERSION, RET, NAME, PARAMS);\ - DMOD_DIF_SIGNATURE_REGISTRATION(dmdfs, NAME, DMOD_MAKE_VERSION(VERSION,0.1)) -# define dmod_dmdfs_dif_api_declaration(VERSION, IMPL_MODULE, RET, NAME, PARAMS) \ - RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS; \ - _DMOD_DIF_API_REGISTRATION(dmdfs, IMPL_MODULE, DMOD_MAKE_VERSION(VERSION,0.1), NAME) \ - RET DMOD_MAKE_DIF_API_FUNCTION_NAME(dmdfs, IMPL_MODULE, NAME) PARAMS -#endif - -#endif // DMOD_MOD_DEFS_H_dmdfs diff --git a/_codeql_build_dir/dmdfs_header.c b/_codeql_build_dir/dmdfs_header.c deleted file mode 100644 index 42c5984..0000000 --- a/_codeql_build_dir/dmdfs_header.c +++ /dev/null @@ -1,64 +0,0 @@ -#include "dmod.h" - -#ifndef DMOD_MODULE_NAME -# define DMOD_MODULE_NAME "" -#endif - -#ifndef DMOD_AUTHOR_NAME -# define DMOD_AUTHOR_NAME "" -#endif - -#ifndef DMOD_MODULE_VERSION -# define DMOD_MODULE_VERSION "0.0" -#endif - -#ifndef DMOD_MODULE_TYPE -# define Unknown -#endif - -#ifndef DMOD_STACK_SIZE -# define DMOD_STACK_SIZE 1024 -#endif - -#ifndef DMOD_PRIORITY -# define DMOD_PRIORITY 0 -#endif - -#ifndef DMOD_MANUAL_LOAD -# define DMOD_MANUAL_LOAD false -#endif - -extern void DMOD_WEAK_SYMBOL dmod_preinit(void); -extern int DMOD_WEAK_SYMBOL dmod_init(const Dmod_Config_t *Config); -extern int DMOD_WEAK_SYMBOL main(int argc, char** argv); -extern int DMOD_WEAK_SYMBOL dmod_deinit(void); -extern int DMOD_WEAK_SYMBOL dmod_signal( int SignalNumber ); - -extern Dmod_License_t DMOD_WEAK_SYMBOL License; -extern void* __footer_start; - -volatile const Dmod_ModuleHeader_t ModuleHeader DMOD_SECTION(".header") DMOD_USED = -{ - .Signature = DMOD_HEADER_SIGNATURE, - .HeaderSize = sizeof( Dmod_ModuleHeader_t ), - .DmodVersion = DMOD_VERSION, - .PointerSize = sizeof(void*), - .Arch = DMOD_ARCH, - .CpuName = DMOD_CPU_NAME, - .Name = "dmdfs", - .Author = "Patryk;Kubiak", - .Version = "0.1", - .Preinit.Ptr = dmod_preinit, - .Init.Ptr = dmod_init, - .Main.Ptr = main, - .Deinit.Ptr = dmod_deinit, - .Signal.Ptr = dmod_signal, - .RequiredStackSize = 1024, - .Priority = 1, - .ModuleType = Dmod_ModuleType_Library, - .License.Ptr = &License, - .Footer.Ptr = &__footer_start, - .ManualLoad = OFF, -}; - -volatile const Dmod_ModuleHeader_t* DMOD_Header DMOD_GLOBAL_POINTER = &ModuleHeader; diff --git a/_codeql_build_dir/dmf/dmdfs.dmf b/_codeql_build_dir/dmf/dmdfs.dmf deleted file mode 100755 index bb872208650d245a51f1c31e975779cb7002a1b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmbtYZ)jUp6n|S+`;RScXXkXR%|{2WCeF>;(KXDhCb)LBb0XBy#pI=ZH1EBbywp_a zsH_8nEe7<%m?C}|GGwJNkbW5rcGwj``>|Li`!p#VQW$Do)p*Xm=lw~Vmp0jh?&f#T zJ->6$x#ygB_q=Diy=wwII|QK`hGg5ZfnzV@M0rn04u#`IRC@zjY;^ee8;SR%z;J?1efGqcrNm@jNW-;u3HJT```opEiE7AL&|-m+SfHBK!y8r5Zlp*ucjqVHe?g z!o7rNFlg{Z3HK8Il<-;=m){_qCj28|7vcMam!9J5D;oJ2CEQH7p75)LXDa!+w+QzV zRtT?ATvCL`311^zPxyPn(F)G@E8(S`9B&YwA-sPtpC2dONqCLo`7Yt#XcXuiT4;QQ z#z&6k$G*#1?HS*tht=*svrQ}6Y}TFeUAkR8?`ZJ|?#z6+)zLD+tT|c)Tn}QpN z>g@7%dmW#{8hr`l11jGql__Ath1GnS=AFaD$SzG}5)HE(DC9=Qk=r-bF$zcL&SabX zD4Oc{gi)#;g4I`w10FJ_P6?9Y5RMV*sr7BR7X3( zs{rlx_cpB=;VM-G2LTq_pCxFWxLNLWQyZvFWSHX}#B`7oPeT@C==LD7CA1!)`*KFB z@-JYB1!gkmI6dqd*Q=hCkPc`Yud?KMGO*gm58arcRm=(DM=~#(%}+ zA0z%T&cBEF6@ar?1x9@_WI2;!{B0)xIpROa`KO`lu=7V)_WqY4b11(K6aOukg81|h z|1>}|aj`$-=Tx!%Cr$oJ;y=&%e}^uJ`|sH{f34nqv<^%1>@zK_P{=nPGY=-o!b5;& z#)i|D&^ubZf>95J`M(2giqK8s|AOU;2v{f5hZ}p7{53 z{_F56#Q4-~hrdvNSY9_mQ%TgfU<&h}sHXuMFGtpI3cVk(pX%}76rZ?h-XVI`pEio-1@h$9-~(W@WBr` z_Yq5tr?EfbnOXZe;5558w>uB?A8{Xd%l)VN`p)#7chan183{zBkTa+%nwZp_lHv@j zQBi@rR#82+$f>BBb5sN^IT{gV5hy~n!hwF5j4l?{FJw0uQR8B5alJ5GRM;>Yg{Ne@ zF);w!E?w_~n51pB-vWL{;-WZQhCNM;MDPk+s(+#yMzxal;?jrUUFmv*q82PiFPbP% zFC2~};zL{HO@VWWk1A#D6U!qc#aK+si7TetljySwun?4*5ArZqE>#b-#H1A0;^cX$ z`f)9wm6I0vO9-?g~f|G33-#XCM+$g8@x+%A%~sMxh6;ajD(i>Ut6W1c8Kn&o)8~M7{|2N2*4c^OumE9bdi-^N{3vdgL!5 zF=d~PlycifiWOrc;zej9#LBi2VY9FiVgIoaK})ldV3V{FvA$~~3$tEsC&ZZ9$ym7U zgc#0znQ>11jXNO42iPk(f1REVqNGTh(uIUYLL+v@{tK%8xn)Vr`5sJ;)ocr$Q!&&+!YhWQ_0Qq-K-9CB$(vz zz<);syk5a2NqD{IoB$Wt49?N#B__vDK!{O3cDUm1?x~lq-kV!Fv1_(}=HiZ>w?V|7 hHTW0*qHw{x07Opsjo+QB;al97^c_hbt>63b_y4k=#y-kJ!on=x%mgGr9!SYeE6&8D)y3D}MZv|_E!a~bBsDP?L#3gf z0frb@0O&qspn%3_V1dYjgps8_Aaj6neQ5m8{BplMn%{7E^x7H%r40}K7rpua|9`^+ z9?eHM4yR2(lDCA)??je|cqKEhB(*3lF*#KsH$SB`CsiRcFS8^wF( Date: Fri, 19 Dec 2025 17:09:26 +0000 Subject: [PATCH 6/7] Fix CI workflow permissions to limit GITHUB_TOKEN access Co-authored-by: JohnAmadis <17320783+JohnAmadis@users.noreply.github.com> --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f69a3bd..ad4e1d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,8 @@ jobs: build: name: Build runs-on: ubuntu-latest + permissions: + contents: read container: image: chocotechnologies/dmod:1.0.4 From ffd9e493f89d097095606b837bdf4926742f00e1 Mon Sep 17 00:00:00 2001 From: Patryk Kubiak Date: Fri, 19 Dec 2025 18:26:23 +0100 Subject: [PATCH 7/7] Update CI workflow to include 'main' branch in push and pull request triggers --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad4e1d2..c869ebc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,9 +2,9 @@ name: CI on: push: - branches: [ master, develop ] + branches: [ master, main, develop ] pull_request: - branches: [ master, develop, feature/**, copilot/** ] + branches: [ master, main, develop, feature/**, copilot/** ] jobs: build: