Skip to content

Commit

Permalink
6: etc/* up to 2.3
Browse files Browse the repository at this point in the history
Signed-off-by: Jorgen Lundman <[email protected]>

Set zp->z_blksz to ashift

Slowdowns in zfs_log_write() can happen on large
blocksize devices.

Signed-off-by: Jorgen Lundman <[email protected]>

MacOS: Build with n+1 cpus (#22)

Signed-off-by: Andrew Innes <[email protected]>

macOS: use portable paths for brewed deps (#23)

Signed-off-by: Yurii Kolesnykov <[email protected]>

Search for C++ and Obj C compilers (#21)

Signed-off-by: Andrew Innes <[email protected]>

cpuid uses a,b,c,d order.

wikipedia paragraph referred to model string, which has
a special case ordering.

This fixes a bug where old intel would incorretly
assume AES/qmul feature was available when it was not.
(And vice-verse, but this would just skip asm versions
and not panic)

Signed-off-by: Jorgen Lundman <[email protected]>

Redo cpuid feature detection

We already have a proper cpuid feature API used in
userland, but Linux took it out for KERNEL use, to
plug into the Linux API. We do not have a kernel API to
use, so we might as well use the userland one.

This makes it nice and consistent, and more easy to read.

Signed-off-by: Jorgen Lundman <[email protected]>

Use built in cpuid() where possible

Fixing a panic when running sysctl -a

Signed-off-by: Jorgen Lundman <[email protected]>

UpstreamÂ: remove sprintf usage

Signed-off-by: Jorgen Lundman <[email protected]>

Add IRC notifications

Signed-off-by: Jorgen Lundman <[email protected]>

xcode 16 compile fixes

function argument type changed, adapt ASSERTs
assembly bug in clang-16 work around

Signed-off-by: Jorgen Lundman <[email protected]>

Reduce userland CPU starvation from low-priority I/Os

Once we have successfully read from disk we may do
significant CPU-work on the data obtained, depending on
features like record sizes, checksums, encryption, or
compression.  A successful write may cause significant
CPU-work to be done for a subsequent zio.

Because our vdev_disk layer and its use of IOKit is
fundamentally asynchronous, on some media modern
linearized scrubs and resilvers may "gang up" on bursts of
interactive user I/Os.

Moreover, all zfs kernel threads are higher priority than
the vast majority of userland threads, therefore the
latter can be starved of CPU especially for a scrubbing
pool which has a vdev count conmparable to the CPU core
count and where data was wrtten using expensive checksums
like sha256.

Practically all our IOKit I/Os are asynchronous, but
significant work may be done on the taskq thread, possibly
right to the entry into the vdev_disk_io_intr() callback
function.  We dispatch "background" I/Os into a lower
thread-priority and lower thread-count taskq compared to
other types of zio.

In the callback function itself, for these low-priority
I/Os we kpreempt() before before calling
zio_delay_interrupt().  For writes, this may impose a
system-load-dependent delay on notifying upper layers of
zfs that IOKit has moved the buffer towards the physical
device, generating backpressure on subsequent writes.  For
reads, this kpreempt() gives another thread in the system
a chance to run before we do potentially heavy-CPU actions
(such as checksumming or decyrption) on the data IOKit has
obtained from the storage device.

Signed-off-by: Jorgen Lundman <[email protected]>

iconfig fixes

Signed-off-by: Jorgen Lundman <[email protected]>

abd_os changes

Signed-off-by: Jorgen Lundman <[email protected]>

New ASSERTs

Signed-off-by: Jorgen Lundman <[email protected]>

new KMEM flag

Signed-off-by: Jorgen Lundman <[email protected]>

issig() now takes no args

Signed-off-by: Jorgen Lundman <[email protected]>

sprintf is deprecated

Signed-off-by: Jorgen Lundman <[email protected]>

Add UIO_DIRECT

Signed-off-by: Jorgen Lundman <[email protected]>

Re-arrange z_blksz in zfs_znode_alloc()

Signed-off-by: Jorgen Lundman <[email protected]>

Set zp->z_blksz to ashift

Slowdowns in zfs_log_write() can happen on large
blocksize devices.

Signed-off-by: Jorgen Lundman <[email protected]>

altool is deprecated, use notarytool

Signed-off-by: Jorgen Lundman <[email protected]>

pkg-macos OS friendly name after macOS name change

Signed-off-by: Jorgen Lundman <[email protected]>

Update the pkg installer scripts

Signed-off-by: Jorgen Lundman <[email protected]>

zfs-tests: support newer macOS readOnly root

Since BigSur days, "/" on macOS is a readOnly, sealed
archive which means zfs-tests can not mount the expected
/testpool (which all scripts assume are at root). We can
work around this by leveraging /etc/synthetic.conf to
create "virtual directories". They can be mounted on, but
not modified. This way *most* pool names are accounted
for in zfs-tests (more will come).

We also have to make log_must(rm /TESTPOOL) be optional.

Signed-off-by: Jorgen Lundman <[email protected]>

Revert "Re-arrange z_blksz in zfs_znode_alloc()"

This reverts commit 106e765.
See next commit

Signed-off-by: Jorgen Lundman <[email protected]>

Change zfs_log_write() blocksize for performance

"len" can be set to zero in the WR_INDIRECT case, if zp->z_blksz
is 0. This leads to endless loop.

Signed-off-by: Jorgen Lundman <[email protected]>

Revert changes to zfs_znode_alloc for reals.

Signed-off-by: Jorgen Lundman <[email protected]>

Make sure blocksize is not 0 in zfs_log_write()

Or the while(resid) loop will run forever.

Signed-off-by: Jorgen Lundman <[email protected]>

Negative numcpus make taskq stall

Handle limited CPU VMs with 1 or 2 cores. The cpus
variable would go to -1 and taskq would stall forever.

Signed-off-by: Jorgen Lundman <[email protected]>

Handle versions without IOSleepWithLeeway()

Signed-off-by: Jorgen Lundman <[email protected]>

Allow zfs_fallthrough to be defined

Signed-off-by: Jorgen Lundman <[email protected]>

Don't use typedefs before OSVersion workaround

Signed-off-by: Jorgen Lundman <[email protected]>

Handle SF_NOUNLINK on versions without it

Signed-off-by: Jorgen Lundman <[email protected]>

Update pkg_macos.sh to handle notarytool

Signed-off-by: Jorgen Lundman <[email protected]>

Compile fixes after rebase

Signed-off-by: Jorgen Lundman <[email protected]>

Export before removing file

Due to a macOS quirk, we have to close the files
in a filebased pool during some operations, which means
the export -f task will fail to open the vdevs again, the
pool will be suspended and zpool_export_004_pos will
hang forever.

By deleting the file after export, everything works as
expected.

Signed-off-by: Jorgen Lundman <[email protected]>

Don't hold zfs_enter() in asyncput

This can deadlock during unmount, as we are
already holding WRITE lock.

Signed-off-by: Jorgen Lundman <[email protected]>

zpool freeze can hang in spa_evicting_os_wait

It appears upstream can still unmount, and export
the pool - to later re-import to unfreeze. However
on macOS, export will hang in spa_evicting_os_wait().

It is unclear why we hang, but it could be we go through
more syncs during unmount, and that spa_freeze_txg is set to
txg + TXG_SIZE

Now we clear (restoring UINT64_MAX) spa_freeze_txg in the
unmount() call, ensuring unmount and export works.

We might not have identical "zpool freeze" as upstream, but
as the zpool sources say:

 * 'freeze' is a vile debugging abomination, so we treat
 * it as such.

Signed-off-by: Jorgen Lundman <[email protected]>

Do not install .in files with Makefile

Signed-off-by: Jorgen Lundman <[email protected]>

clone file can return ENOTSUP for fallback

From Sonoma onwards, file_cmds-428 will handle ENOTSUP and
fallback to copyfile. Prior to that, we favour EAGAIN as
it will indicate to the users that it is a temporary
failure.

Signed-off-by: Jorgen Lundman <[email protected]>

sprintf has been deprecated

Signed-off-by: Jorgen Lundman <[email protected]>

Move appveyor to .github/workflows/macos-build.yml

Signed-off-by: Jorgen Lundman <[email protected]>

make install would fail to mkdir first.

Signed-off-by: Jorgen Lundman <[email protected]>

Fix .yml to start zed, and zfs-tests

Signed-off-by: Jorgen Lundman <[email protected]>

fix abd, have taskq_wait_synced() wait for threads to be created

taskq_wait_synced() did a VERIFY() on whether the taskq's
threads were the requested number, but taskq_create() can
ultimately return early because taskq_thread_create() is
allowed to return when two desired threads are created.

fix this race panic.  also, taskq_wait_synced() may fail if
if num_ecores is nonzero (on Apple Silicon), so create a
flag that lets taskq_create_common() deal with the
max_ncpus.

Make boot_ncpus a variable that's MAX(1, (int)max_ncores - num_ecores).
boot_ncpus is used in common code.

Modify the alignments and quanta/import sizes of the abd
kmem and vmem cache creations.  Make DEBUG builds work
with KMF_LITE | KMF_BUFCTL on the abd kmem caches.

Signed-off-by: Sean Doran <[email protected]>

Allow NOTARYTOOL path to be set

Apple has decided that copying notarytool from new macOS
to old macOS instead of supporting altool.
But sadly "xcrun" will not run it as expected, so
we allow NOTARYTOOL env var to be set to a path to use.

Signed-off-by: Jorgen Lundman <[email protected]>

Add copy_file_range() wrapper to fcopyfile().

Signed-off-by: Jorgen Lundman <[email protected]>

Compile fixes since last rebase

Signed-off-by: Jorgen Lundman <[email protected]>

ZIO_TYPE_IOCTL renamed to ZIO_TYPE_FLUSH

And also they renamed zfs_file_fallocate() to
zfs_file_deallocate() somewhere along the way.

Signed-off-by: Jorgen Lundman <[email protected]>

Header fix

Signed-off-by: Jorgen Lundman <[email protected]>

zfs_racct prototype change

Signed-off-by: Jorgen Lundman <[email protected]>

zfs_log_write() now takes directio boolean

Signed-off-by: Jorgen Lundman <[email protected]>

zfs_znode_os.c

also, change strcpy back to strlcpy yet again, thanks linux.

Signed-off-by: Jorgen Lundman <[email protected]>

isimd_stat_init simd_stat_fini
Signed-off-by: Jorgen Lundman <[email protected]>

Signed-off-by: Jorgen Lundman <[email protected]>

Use SUBSTFILES for .in files

Signed-off-by: Jorgen Lundman <[email protected]>

Compile fixes for O_DIRECTIO

Signed-off-by: Jorgen Lundman <[email protected]>
  • Loading branch information
lundman committed Jan 14, 2025
1 parent 52daf35 commit 5ac53c0
Show file tree
Hide file tree
Showing 88 changed files with 2,374 additions and 1,277 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/macos-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ jobs:
- name: configure
run: |
#https://stackoverflow.com/a/62591864
./configure CPPFLAGS="-I/usr/local/opt/gettext/include -I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/opt/gettext/lib/ -L/usr/local/opt/openssl/lib"
./configure CPPFLAGS="-I${HOMEBREW_PREFIX}/opt/gettext/include -I${HOMEBREW_PREFIX}/opt/openssl/include" LDFLAGS="-L${HOMEBREW_PREFIX}/opt/gettext/lib/ -L${HOMEBREW_PREFIX}/opt/openssl/lib"
- name: build
run: |
make -j 2
make -j $(($(sysctl -n hw.ncpu)+1))
#- name: install
# run: |
# sudo make install DESTDIR=///
Expand Down
89 changes: 89 additions & 0 deletions .github/workflows/macos-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
version: 1.0.{build}
branches:
only:
- /macOS_.*/
image: macOS-Catalina
build_script:
- sh: >-
curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-ssh.sh' | bash -e -
curl -sflL 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-vnc.sh' | bash -e -
HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_AUTO_UPDATE
HOMEBREW_NO_INSTALL_CLEANUP=1
export HOMEBREW_NO_INSTALL_CLEANUP
brew install gsed
echo "Running from .github/workflows/macos-build.yml"
sh autogen.sh
./configure CPPFLAGS="-I/usr/local/opt/gettext/include -I/usr/local/opt/[email protected]/include" LDFLAGS="-L/usr/local/opt/gettext/lib/ -L/usr/local/opt/[email protected]/lib" CFLAGS="-Wno-error -g -O2" --sysconfdir=/etc --localstatedir=/var --prefix=/usr/local/zfs/ --sbindir=/usr/local/zfs/bin -libexecdir=/usr/local/zfs/libexec --enable-debug SED=gsed
echo "Checking codestyle"
make cstyle || exit 1
make -j2 # V=1
sudo make -j2 V=1 install
test_script:
- sh: >-
# log stream --source --predicate 'sender == "zfs"' --style compact &
echo "Loading kernel modules..."
sudo scripts/load_macos.sh || exit 1
sleep 5
echo "Running zfs-tests..."
export SHELL=/bin/ksh
sudo /usr/local/zfs/bin/zed -fF &
sudo mkdir -p /etc/synthetic.d/
sudo touch /etc/synthetic.d/zfs-tests
scripts/zfs-tests.sh -r macOS-CI || echo "Tests not quite right"
sysctl kern.stack_depth_max
sysctl kstat > kstat.txt
7z a kext.zip /tmp/zfs.kext/
7z a zfs-tests.zip /var/tmp/test_results/current/ kstat.txt
ls -la
echo "Attempting to unload"
sudo /usr/local/zfs/bin/zpool export -fa
sudo kextunload -b org.openzfsonosx.zfs || echo "Unload failed".
artifacts:
- path: kext.zip
name: kext
- path: zfs-tests.zip
name: zfstest-log
36 changes: 36 additions & 0 deletions .github/workflows/notify-irc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

name: Notify IRC

on:
push:
issues:
types:
- opened
- edited
- closed
issue_comment:
pull_request:
discussion:
types:
- created
- edited
- closed
- answered
discussion_comment:
create:
delete:

jobs:
notify-irc:
runs-on: ubuntu-latest

steps:
- name: Notify IRC
uses: openzfsonwindows/notify-irc@v2
with:
channel: "#openzfs-macos"
server: "irc.libera.chat"
nickname: "zfs_consus"
mirccolor: "true"
eventpath: ${{ github.event_path }}

21 changes: 21 additions & 0 deletions cmd/zpool/os/macos/zpool_vdev_os.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,3 +199,24 @@ after_zpool_upgrade(zpool_handle_t *zhp)
{
(void) zhp;
}

int
zpool_power_current_state(zpool_handle_t *zhp, char *vdev)
{

(void) zhp;
(void) vdev;
/* Enclosure slot power not supported on macOS yet */
return (-1);
}

int
zpool_power(zpool_handle_t *zhp, char *vdev, boolean_t turn_on)
{

(void) zhp;
(void) vdev;
(void) turn_on;
/* Enclosure slot power not supported on macOS yet */
return (ENOTSUP);
}
37 changes: 4 additions & 33 deletions config/zfs-build.m4
Original file line number Diff line number Diff line change
Expand Up @@ -557,33 +557,17 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
AC_MSG_CHECKING([default package type])
case "$VENDOR" in
<<<<<<< HEAD
alpine|arch|artix|gentoo|lunar|slackware)
DEFAULT_PACKAGE=tgz ;;
debian|ubuntu)
DEFAULT_PACKAGE=deb ;;
freebsd)
DEFAULT_PACKAGE=pkg ;;
apple)
DEFAULT_PACKAGE=pkg ;;
*)
# fedora|openeuler|redhat|sles|toss
DEFAULT_PACKAGE=rpm ;;
=======
toss) DEFAULT_PACKAGE=rpm ;;
redhat) DEFAULT_PACKAGE=rpm ;;
fedora) DEFAULT_PACKAGE=rpm ;;
gentoo) DEFAULT_PACKAGE=tgz ;;
alpine) DEFAULT_PACKAGE=tgz ;;
arch) DEFAULT_PACKAGE=tgz ;;
sles) DEFAULT_PACKAGE=rpm ;;
slackware) DEFAULT_PACKAGE=tgz ;;
lunar) DEFAULT_PACKAGE=tgz ;;
ubuntu) DEFAULT_PACKAGE=deb ;;
debian) DEFAULT_PACKAGE=deb ;;
freebsd) DEFAULT_PACKAGE=pkg ;;
openeuler) DEFAULT_PACKAGE=rpm ;;
apple) DEFAULT_PACKAGE=pkg ;;
*) DEFAULT_PACKAGE=rpm ;;
>>>>>>> 5b2f117f5... 4: config/* scripts/* contrib/*
esac
AC_MSG_RESULT([$DEFAULT_PACKAGE])
AC_SUBST(DEFAULT_PACKAGE)
Expand Down Expand Up @@ -620,7 +604,6 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
AC_MSG_CHECKING([default init config directory])
case "$VENDOR" in
<<<<<<< HEAD
alpine|artix|gentoo)
initconfdir=/etc/conf.d
;;
Expand All @@ -630,24 +613,12 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
freebsd)
initconfdir=$sysconfdir/rc.conf.d
;;
apple)
initconfdir=${prefix}/etc/launchd/launchd.d/ ;;
*)
# debian|ubuntu
initconfdir=/etc/default
;;
=======
alpine) initconfdir=/etc/conf.d ;;
gentoo) initconfdir=/etc/conf.d ;;
toss) initconfdir=/etc/sysconfig ;;
redhat) initconfdir=/etc/sysconfig ;;
fedora) initconfdir=/etc/sysconfig ;;
sles) initconfdir=/etc/sysconfig ;;
openeuler) initconfdir=/etc/sysconfig ;;
ubuntu) initconfdir=/etc/default ;;
debian) initconfdir=/etc/default ;;
freebsd) initconfdir=$sysconfdir/rc.conf.d;;
apple) initconfdir=${prefix}/etc/launchd/launchd.d/ ;;
*) initconfdir=/etc/default ;;
>>>>>>> 5b2f117f5... 4: config/* scripts/* contrib/*
esac
AC_MSG_RESULT([$initconfdir])
AC_SUBST(initconfdir)
Expand Down
6 changes: 3 additions & 3 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ AM_PROG_AS
AM_PROG_CC_C_O
AX_CODE_COVERAGE
_AM_PROG_TAR(pax)
AC_PROG_CXX(clang++)
AC_PROG_OBJC(clang)
AC_PROG_OBJCXX(clang++)
AC_PROG_CXX
AC_PROG_OBJC
AC_PROG_OBJCXX

ZFS_AC_LICENSE
ZFS_AC_CONFIG
Expand Down
16 changes: 8 additions & 8 deletions contrib/macOS/pkg-scripts/postinstall_actions/kextspost
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ else
fi
fi

# kmutil onwards, kextstat prints it Executes kmutil, and no variant
# but that is to stderr, so does not get seen by "wc".
if [ $(/usr/sbin/kextstat -b org.openzfsonosx.zfs | wc -l) -gt 1 ] ; then
printf "\nUnloading zfs.kext...\n"
/sbin/kextunload -b org.openzfsonosx.zfs
Expand All @@ -31,14 +33,12 @@ printf "\nTouching %s\n" "${kernelextensionsdir}"
/usr/bin/killall -HUP kextd

# Load kext
printf "\nLoading spl.kext...\n"
/usr/bin/kextutil "${kernelextensionsdir}/zfs.kext" 2>&1 | grep -q "rejected due to system policy"
printf "\nLoading openzfs.kext...\n"
/usr/bin/kextutil "${kernelextensionsdir}/openzfs.kext" 2>&1 | grep -q "rejected due to system policy"

if [[ $? -eq 0 ]]; then
open /System/Library/PreferencePanes/Security.prefPane
else
printf "\nLoading zfs.kext...\n"
/sbin/kextload "${kernelextensionsdir}/zfs.kext"
fi
err=$?
echo "kexutil said $err"

open /System/Library/PreferencePanes/Security.prefPane

exit 0
12 changes: 6 additions & 6 deletions contrib/macOS/pkg-scripts/postinstall_actions/loadplists
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,28 @@
date '+%s' >> /tmp/o3x.log
echo $0 >> /tmp/o3x.log

launchctl list | grep org.openzfsonosx.zconfigd 1>/dev/null
launchctl list org.openzfsonosx.zconfigd 1>/dev/null
[ $? -eq 0 ] && /bin/launchctl remove org.openzfsonosx.zconfigd

/bin/launchctl load -w /Library/LaunchDaemons/org.openzfsonosx.zconfigd.plist

launchctl list | grep org.openzfsonosx.zed.service 1>/dev/null
launchctl list org.openzfsonosx.zed.service 1>/dev/null
[ $? -eq 0 ] && /bin/launchctl remove org.openzfsonosx.zed.service

launchctl list | grep org.openzfsonosx.zed 1>/dev/null
launchctl list org.openzfsonosx.zed 1>/dev/null
[ $? -eq 0 ] && /bin/launchctl remove org.openzfsonosx.zed

/bin/launchctl load -w /Library/LaunchDaemons/org.openzfsonosx.zed.plist

launchctl list | grep org.openzfsonosx.InvariantDisks 1>/dev/null
launchctl list org.openzfsonosx.InvariantDisks 1>/dev/null
[ $? -eq 0 ] && /bin/launchctl remove org.openzfsonosx.InvariantDisks

/bin/launchctl load -w /Library/LaunchDaemons/org.openzfsonosx.InvariantDisks.plist

launchctl list | grep org.openzfsonosx.zpool-autoimport 1>/dev/null
launchctl list org.openzfsonosx.zpool-autoimport 1>/dev/null
[ $? -eq 0 ] && /bin/launchctl remove org.openzfsonosx.zpool-autoimport

launchctl list | grep org.openzfsonosx.zpool-import-all 1>/dev/null
launchctl list org.openzfsonosx.zpool-import-all 1>/dev/null
[ $? -eq 0 ] && /bin/launchctl remove org.openzfsonosx.zpool-import-all

/bin/launchctl load -w /Library/LaunchDaemons/org.openzfsonosx.zpool-import-all.plist
11 changes: 8 additions & 3 deletions contrib/macOS/pkg-scripts/postinstall_actions/startzed
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
#!/bin/bash

# zed is now run by launctl, so this script should not be required.
exit 0

ZED=/usr/local/zfs/bin/zed

set +e
pgrep zed 1>/dev/null
pgrepret=$?
set -e

if [ $pgrepret -ne 0 ] ; then
echo "zed not started"
if [ -f /usr/sbin/zed ] ; then
if [ -f $ZED ] ; then
echo "Starting zed ..."
/usr/sbin/zed
$ZED
else
echo "zed binary /usr/sbin/zed not found"
echo "zed binary $ZED not found"
fi
else
echo "zed already running"
Expand Down
1 change: 1 addition & 0 deletions etc/launchd.d/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
zpool-import-all.sh
23 changes: 23 additions & 0 deletions etc/launchd.d/Makefile.am
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

noinst_launch_ddir = \
$(launchdscriptdir)/

do_subst = -$(SED) -e 's,@bindir\@,$(bindir),g' \
-e 's,@runstatedir\@,$(runstatedir),g' \
-e 's,@sbindir\@,$(sbindir),g' \
-e 's,@sysconfdir\@,$(sysconfdir),g' \
-e 's,@launchdscriptdir\@,$(launchdscriptdir),g'

CLEANFILES += %D%/zpool-import-all.sh

INSTALL_DATA_HOOKS += zpool-import-all.sh

zpool-import-all.sh: %D%/zpool-import-all.sh.in
-$(AM_V_at)$(MKDIR_P) $(DESTDIR)/$(launchdscriptdir)/
-$(AM_V_GEN)$(SED) -e 's,@bindir\@,$(bindir),g' \
-e 's,@runstatedir\@,$(runstatedir),g' \
-e 's,@sbindir\@,$(sbindir),g' \
-e 's,@sysconfdir\@,$(sysconfdir),g' \
-e 's,@launchdscriptdir\@,$(launchdscriptdir),g' \
'$<' > $(DESTDIR)/$(launchdscriptdir)/'$@'
chmod +x $(DESTDIR)/$(launchdscriptdir)/'$@'
Loading

0 comments on commit 5ac53c0

Please sign in to comment.