internal/helper: relocate from helper
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Hakurei (push) Successful in 43s
Test / Hpkg (push) Successful in 41s
Test / Hakurei (race detector) (push) Successful in 43s
Test / Sandbox (push) Successful in 1m40s
Test / Sandbox (race detector) (push) Successful in 2m25s
Test / Flake checks (push) Successful in 1m33s
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Hakurei (push) Successful in 43s
Test / Hpkg (push) Successful in 41s
Test / Hakurei (race detector) (push) Successful in 43s
Test / Sandbox (push) Successful in 1m40s
Test / Sandbox (race detector) (push) Successful in 2m25s
Test / Flake checks (push) Successful in 1m33s
This package is ugly and is pending removal only kept alive by xdg-dbus-proxy. Its exported symbols are made available until v0.4.0 where it will be removed for #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
b5630f6883
commit
d2417f957c
73
helper/deprecated.go
Normal file
73
helper/deprecated.go
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
// Package helper exposes the internal/helper package.
|
||||||
|
//
|
||||||
|
// Deprecated: This package will be removed in 0.4.
|
||||||
|
package helper
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"time"
|
||||||
|
_ "unsafe" // for go:linkname
|
||||||
|
|
||||||
|
"hakurei.app/container"
|
||||||
|
"hakurei.app/container/check"
|
||||||
|
"hakurei.app/internal/helper"
|
||||||
|
"hakurei.app/message"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:linkname WaitDelay hakurei.app/internal/helper.WaitDelay
|
||||||
|
var WaitDelay time.Duration
|
||||||
|
|
||||||
|
const (
|
||||||
|
// HakureiHelper is set to 1 when args fd is enabled and 0 otherwise.
|
||||||
|
HakureiHelper = helper.HakureiHelper
|
||||||
|
// HakureiStatus is set to 1 when stat fd is enabled and 0 otherwise.
|
||||||
|
HakureiStatus = helper.HakureiStatus
|
||||||
|
)
|
||||||
|
|
||||||
|
type Helper = helper.Helper
|
||||||
|
|
||||||
|
// NewCheckedArgs returns a checked null-terminated argument writer for a copy of args.
|
||||||
|
//
|
||||||
|
//go:linkname NewCheckedArgs hakurei.app/internal/helper.NewCheckedArgs
|
||||||
|
func NewCheckedArgs(args ...string) (wt io.WriterTo, err error)
|
||||||
|
|
||||||
|
// MustNewCheckedArgs returns a checked null-terminated argument writer for a copy of args.
|
||||||
|
// If s contains a NUL byte this function panics instead of returning an error.
|
||||||
|
//
|
||||||
|
//go:linkname MustNewCheckedArgs hakurei.app/internal/helper.MustNewCheckedArgs
|
||||||
|
func MustNewCheckedArgs(args ...string) io.WriterTo
|
||||||
|
|
||||||
|
// NewDirect initialises a new direct Helper instance with wt as the null-terminated argument writer.
|
||||||
|
// Function argF returns an array of arguments passed directly to the child process.
|
||||||
|
//
|
||||||
|
//go:linkname NewDirect hakurei.app/internal/helper.NewDirect
|
||||||
|
func NewDirect(
|
||||||
|
ctx context.Context,
|
||||||
|
name string,
|
||||||
|
wt io.WriterTo,
|
||||||
|
stat bool,
|
||||||
|
argF func(argsFd, statFd int) []string,
|
||||||
|
cmdF func(cmd *exec.Cmd),
|
||||||
|
extraFiles []*os.File,
|
||||||
|
) Helper
|
||||||
|
|
||||||
|
// New initialises a Helper instance with wt as the null-terminated argument writer.
|
||||||
|
//
|
||||||
|
//go:linkname New hakurei.app/internal/helper.New
|
||||||
|
func New(
|
||||||
|
ctx context.Context,
|
||||||
|
msg message.Msg,
|
||||||
|
pathname *check.Absolute, name string,
|
||||||
|
wt io.WriterTo,
|
||||||
|
stat bool,
|
||||||
|
argF func(argsFd, statFd int) []string,
|
||||||
|
cmdF func(z *container.Container),
|
||||||
|
extraFiles []*os.File,
|
||||||
|
) Helper
|
||||||
|
|
||||||
|
// InternalHelperStub is an internal function but exported because it is cross-package;
|
||||||
|
// it is part of the implementation of the helper stub.
|
||||||
|
func InternalHelperStub() { helper.InternalHelperStub() }
|
||||||
63
helper/proc/deprecated.go
Normal file
63
helper/proc/deprecated.go
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
// Deprecated: This package will be removed in 0.4.
|
||||||
|
package proc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"time"
|
||||||
|
_ "unsafe" // for go:linkname
|
||||||
|
|
||||||
|
"hakurei.app/internal/helper/proc"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:linkname FulfillmentTimeout hakurei.app/internal/helper/proc.FulfillmentTimeout
|
||||||
|
var FulfillmentTimeout time.Duration
|
||||||
|
|
||||||
|
// A File is an extra file with deferred initialisation.
|
||||||
|
type File = proc.File
|
||||||
|
|
||||||
|
// ExtraFilesPre is a linked list storing addresses of [os.File].
|
||||||
|
type ExtraFilesPre = proc.ExtraFilesPre
|
||||||
|
|
||||||
|
// Fulfill calls the [File.Fulfill] method on all files, starts cmd and blocks until all fulfillment completes.
|
||||||
|
//
|
||||||
|
//go:linkname Fulfill hakurei.app/internal/helper/proc.Fulfill
|
||||||
|
func Fulfill(ctx context.Context,
|
||||||
|
v *[]*os.File, start func() error,
|
||||||
|
files []File, extraFiles *ExtraFilesPre,
|
||||||
|
) (err error)
|
||||||
|
|
||||||
|
// InitFile initialises f as part of the slice extraFiles points to,
|
||||||
|
// and returns its final fd value.
|
||||||
|
//
|
||||||
|
//go:linkname InitFile hakurei.app/internal/helper/proc.InitFile
|
||||||
|
func InitFile(f File, extraFiles *ExtraFilesPre) (fd uintptr)
|
||||||
|
|
||||||
|
// BaseFile implements the Init method of the File interface and provides indirect access to extra file state.
|
||||||
|
type BaseFile = proc.BaseFile
|
||||||
|
|
||||||
|
//go:linkname ExtraFile hakurei.app/internal/helper/proc.ExtraFile
|
||||||
|
func ExtraFile(cmd *exec.Cmd, f *os.File) (fd uintptr)
|
||||||
|
|
||||||
|
//go:linkname ExtraFileSlice hakurei.app/internal/helper/proc.ExtraFileSlice
|
||||||
|
func ExtraFileSlice(extraFiles *[]*os.File, f *os.File) (fd uintptr)
|
||||||
|
|
||||||
|
// NewWriterTo returns a [File] that receives content from wt on fulfillment.
|
||||||
|
//
|
||||||
|
//go:linkname NewWriterTo hakurei.app/internal/helper/proc.NewWriterTo
|
||||||
|
func NewWriterTo(wt io.WriterTo) File
|
||||||
|
|
||||||
|
// NewStat returns a [File] implementing the behaviour
|
||||||
|
// of the receiving end of xdg-dbus-proxy stat fd.
|
||||||
|
//
|
||||||
|
//go:linkname NewStat hakurei.app/internal/helper/proc.NewStat
|
||||||
|
func NewStat(s *io.Closer) File
|
||||||
|
|
||||||
|
var (
|
||||||
|
//go:linkname ErrStatFault hakurei.app/internal/helper/proc.ErrStatFault
|
||||||
|
ErrStatFault error
|
||||||
|
//go:linkname ErrStatRead hakurei.app/internal/helper/proc.ErrStatRead
|
||||||
|
ErrStatRead error
|
||||||
|
)
|
||||||
@ -10,7 +10,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"hakurei.app/helper/proc"
|
"hakurei.app/internal/helper/proc"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewDirect initialises a new direct Helper instance with wt as the null-terminated argument writer.
|
// NewDirect initialises a new direct Helper instance with wt as the null-terminated argument writer.
|
||||||
@ -11,7 +11,7 @@ import (
|
|||||||
|
|
||||||
"hakurei.app/container"
|
"hakurei.app/container"
|
||||||
"hakurei.app/container/check"
|
"hakurei.app/container/check"
|
||||||
"hakurei.app/helper/proc"
|
"hakurei.app/internal/helper/proc"
|
||||||
"hakurei.app/message"
|
"hakurei.app/message"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -8,7 +8,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"hakurei.app/helper/proc"
|
"hakurei.app/internal/helper/proc"
|
||||||
)
|
)
|
||||||
|
|
||||||
var WaitDelay = 2 * time.Second
|
var WaitDelay = 2 * time.Second
|
||||||
Loading…
x
Reference in New Issue
Block a user