2
0
mirror of https://github.com/boostorg/process.git synced 2026-01-20 04:42:24 +00:00

Compare commits

...

8 Commits

Author SHA1 Message Date
Klemens Morgenstern
ef33259c24 added CLOSE_RANGE_UNSHARE defined for syscall of close_range. 2024-07-20 07:25:13 +08:00
Ruben Perez
042091042a missing linux-headers 2024-07-19 17:12:35 +02:00
Ruben Perez
5aa276431d Empty-Commit 2024-07-19 17:09:30 +02:00
Ruben Perez
953f80ea50 Alpine-Linux CI 2024-07-19 17:07:42 +02:00
Klemens Morgenstern
67a2f97633 fixes include of gnu/libc-version.h
closes #386
2024-07-19 09:17:06 +08:00
Klemens Morgenstern
8b3e90234b b2 link fixes. 2024-07-12 09:03:08 +08:00
Klemens Morgenstern
8044857bb9 c++14 constexpr fixes for environment_win. 2024-07-12 09:03:08 +08:00
zhixingchen
414d0d6b84 FIX: fix the function call with error code 2024-07-04 19:17:17 +08:00
11 changed files with 67 additions and 19 deletions

View File

@@ -141,6 +141,43 @@ jobs:
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release
alpine-linux:
runs-on: ubuntu-latest
container:
image: alpine:3.20.1
steps:
- name: Install packages
run: apk add g++ git python3 linux-headers
- uses: actions/checkout@v4
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
./bootstrap.sh
./b2 -d0 headers
- name: Run tests
run: |
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=gcc cxxstd=23 variant=debug,release
windows:
strategy:
fail-fast: false

View File

@@ -57,7 +57,7 @@ else()
endif()
if (WIN32)
target_link_libraries(boost_process PUBLIC ntdll)
target_link_libraries(boost_process PUBLIC ntdll shell32 Advapi32 user32)
endif()
if(BUILD_SHARED_LIBS)

View File

@@ -40,11 +40,23 @@ alias process_sources
shell.cpp
;
if [ os.name ] = NT
{
lib shell32 ;
lib Advapi32 ;
lib Ntdll ;
lib user32 ;
}
lib boost_process
: process_sources
: requirements <define>BOOST_PROCESS_SOURCE=1
<link>shared:<define>BOOST_PROCESS_DYN_LINK=1
<boost.process.fs>boost:<library>/boost//filesystem
<target-os>windows:<library>shell32
<target-os>windows:<library>user32
<target-os>windows:<library>Ntdll
<target-os>windows:<library>Advapi32
: usage-requirements
<link>shared:<define>BOOST_PROCESS_DYN_LINK=1
<boost.process.fs>boost:<library>/boost//filesystem

View File

@@ -57,7 +57,7 @@ struct key_char_traits
return to_lower(c1) < to_lower(c2);
}
BOOST_CONSTEXPR static
BOOST_CXX14_CONSTEXPR static
int compare(const char_type* s1, const char_type* s2, size_t n) BOOST_NOEXCEPT
{
auto itrs = std::mismatch(s1, s1 + n, s2, &eq);
@@ -69,17 +69,17 @@ struct key_char_traits
return (c1 < c2 ) ? -1 : 1;
}
BOOST_CONSTEXPR static size_t length(const char* s) BOOST_NOEXCEPT { return std::strlen(s); }
BOOST_CONSTEXPR static size_t length(const wchar_t* s) BOOST_NOEXCEPT { return std::wcslen(s); }
static size_t length(const char* s) BOOST_NOEXCEPT { return std::strlen(s); }
static size_t length(const wchar_t* s) BOOST_NOEXCEPT { return std::wcslen(s); }
BOOST_CONSTEXPR static
BOOST_CXX14_CONSTEXPR static
const char_type* find(const char_type* s, size_t n, const char_type& a) BOOST_NOEXCEPT
{
const char_type u = to_lower(a);
return std::find_if(s, s + n, [u](char_type c){return to_lower(c) == u;});
}
BOOST_CONSTEXPR static
BOOST_CXX14_CONSTEXPR static
char_type* move(char_type* s1, const char_type* s2, size_t n) BOOST_NOEXCEPT
{
if (s1 < s2)
@@ -94,7 +94,7 @@ struct key_char_traits
return std::copy(s2, s2 + n, s1);
}
BOOST_CONSTEXPR static
BOOST_CXX14_CONSTEXPR static
char_type* assign(char_type* s, size_t n, char_type a) BOOST_NOEXCEPT
{
std::fill(s, s + n, a);

View File

@@ -329,7 +329,7 @@ struct default_launcher
Args && args,
Inits && ... inits ) -> basic_process<typename ExecutionContext::executor_type>
{
return (*this)(context.get_executor(), executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
return (*this)(context.get_executor(), ec, executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
}
template<typename Executor, typename Args, typename ... Inits>

View File

@@ -44,7 +44,7 @@ struct fork_and_forget_launcher : default_launcher
Args && args,
Inits && ... inits ) -> basic_process<typename ExecutionContext::executor_type>
{
return (*this)(context.get_executor(), executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
return (*this)(context.get_executor(), ec, executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
}
template<typename Executor, typename Args, typename ... Inits>

View File

@@ -49,7 +49,7 @@ struct pdfork_launcher : default_launcher
Args && args,
Inits && ... inits ) -> basic_process<typename ExecutionContext::executor_type>
{
return (*this)(context.get_executor(), executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
return (*this)(context.get_executor(), ec, executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
}
template<typename Executor, typename Args, typename ... Inits>

View File

@@ -46,7 +46,7 @@ struct vfork_launcher : default_launcher
Args && args,
Inits && ... inits ) -> basic_process<typename ExecutionContext::executor_type>
{
return (*this)(context.get_executor(), executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
return (*this)(context.get_executor(), ec, executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
}
template<typename Executor, typename Args, typename ... Inits>

View File

@@ -52,7 +52,7 @@ struct as_user_launcher : default_launcher
Args && args,
Inits && ... inits ) -> basic_process<typename ExecutionContext::executor_type>
{
return (*this)(context.get_executor(), executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
return (*this)(context.get_executor(), ec, executable, std::forward<Args>(args), std::forward<Inits>(inits)...);
}
template<typename Executor, typename Args, typename ... Inits>
@@ -133,4 +133,4 @@ struct as_user_launcher : default_launcher
}
BOOST_PROCESS_V2_END_NAMESPACE
#endif // BOOST_PROCESS_V2_WINDOWS_AS_USER_LAUNCHER_HPP
#endif // BOOST_PROCESS_V2_WINDOWS_AS_USER_LAUNCHER_HPP

View File

@@ -47,7 +47,7 @@ int fdwalk(int (*func)(void *, int), void *cd);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0) // kernel has close_range
#include <gnu/libc-version.h>
// version is included by stdlib.h #include <gnu/libc-version.h>
#if (__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 34) // glibc is compiled with close_range support
// https://man7.org/linux/man-pages/man2/close_range.2.html
@@ -60,6 +60,10 @@ int fdwalk(int (*func)(void *, int), void *cd);
#if defined(SYS_close_range)
#define BOOST_PROCESS_V2_HAS_CLOSE_RANGE 1
#if !defined(CLOSE_RANGE_UNSHARE)
#define CLOSE_RANGE_UNSHARE 2
#endif
int close_range(unsigned int first, unsigned int last, int flags)
{
return ::syscall(SYS_close_range, first, last, flags);

View File

@@ -43,15 +43,10 @@ exe target : target.cpp :
<target-os>windows:<source>Ntdll
;
lib test_impl : test_impl.cpp filesystem /boost//process :
<define>BOOST_PROCESS_V2_SEPARATE_COMPILATION=1
<define>BOOST_TEST_IGNORE_SIGCHLD=1
<link>static
<target-os>windows:<source>shell32
<target-os>windows:<source>user32
<target-os>windows:<source>Ntdll
<target-os>windows:<source>Advapi32
;
test-suite standalone :