Index: head/net/freerdp/Makefile =================================================================== --- head/net/freerdp/Makefile (revision 538328) +++ head/net/freerdp/Makefile (revision 538329) @@ -1,175 +1,176 @@ # Created by: Alexander Logvinov # $FreeBSD$ PORTNAME= freerdp DISTVERSION= 2.1.1 PORTREVISION= 0 CATEGORIES= net comms PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ # FreeBSD doesn't have O_TMPFILE, must use shm_open w/ SHM_ANON instead. PATCHFILES= 1b5e234135b0.patch:-p1 MAINTAINER= kevans@FreeBSD.org COMMENT= Free implementation of Remote Desktop Protocol LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE BROKEN_SSL= libressl-devel BROKEN_SSL_REASON_libressl-devel= fails to compile: no member named 'alert_dispatch' in 'struct ssl3_state_st' LIB_DEPENDS= libdbus-glib-1.so:devel/dbus-glib \ libepoll-shim.so:devel/libepoll-shim \ libudev.so:devel/libudev-devd \ libuuid.so:misc/e2fsprogs-libuuid USES= alias cmake compiler:c++11-lib cpe gettext gnome localbase pathfix pkgconfig ssl USE_LDCONFIG= yes CPE_VENDOR= freerdp_project PATCHVERSION= ${PORTVERSION} MAJORVERSION= ${PORTVERSION:R:R} PLIST_SUB+= PATCHVERSION="${PATCHVERSION}" PLIST_SUB+= MAJORVERSION="${MAJORVERSION}" USE_GITHUB= yes GH_ACCOUNT= FreeRDP GH_PROJECT= ${GH_ACCOUNT} CMAKE_ARGS+= -DWITH_CHANNELS:BOOL=ON \ -DWITH_DIRECTFB:BOOL=OFF \ -DWITH_DSP_EXPERIMENTAL:BOOL=OFF \ -DWITH_DSP_FFMPEG:BOOL=OFF -DWITH_GPROF:BOOL=OFF \ -DWITH_GSTREAMER_0_10:BOOL=OFF -DWITH_IPP:BOOL=OFF \ -DWITH_JPEG:BOOL=OFF -DWITH_LIBSYSTEMD:BOOL=OFF \ -DWITH_MBEDTLS:BOOL=OFF -DWITH_OPENSLES=OFF \ -DWITH_OPENSSL:BOOL=ON -DWITH_OSS=ON \ -DWITH_PROFILER:BOOL=OFF -DWITH_SAMPLE:BOOL=OFF \ -DWITH_SANITIZE_ADDRESS:BOOL=OFF \ -DWITH_SANITIZE_MEMORY:BOOL=OFF \ -DWITH_SANITIZE_THREAD:BOOL=OFF -DWITH_SERVER:BOOL=OFF \ -DWITH_SERVER_INTERFACE:BOOL=OFF \ -DWITH_SMARTCARD_INSPECT:BOOL=OFF \ -DWITH_THIRD_PARTY:BOOL=OFF \ -DWITH_VALGRIND_MEMCHECK:BOOL=OFF -DWITH_X264:BOOL=OFF \ -DWITH_ZLIB:BOOL=ON \ -DCHANNEL_URBDRC_CLIENT:BOOL=ON \ ${CMAKE_ARGS_${ARCH}} CMAKE_ARGS_aarch64= -DWITH_NEON=ON CFLAGS_aarch64= -D__ARM_NEON__=__ARM_NEON # clang OPTIONS_DEFINE= ALSA CUPS FAAC FAAD FFMPEG GSM \ GSTREAMER ICU KERBEROS LAME MANPAGES OPENH264 \ PCSC PULSEAUDIO SOXR WAYLAND X11 OPTIONS_DEFAULT= CUPS GSTREAMER ICU KERBEROS MANPAGES WAYLAND X11 OPTIONS_SUB= yes OPTIONS_DEFINE_armv6= NEON OPTIONS_DEFINE_armv7= NEON OPTIONS_DEFINE_amd64= SSE OPTIONS_DEFINE_i386= SSE OPTIONS_DEFAULT_amd64= SSE ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib ALSA_CMAKE_BOOL= WITH_ALSA CUPS_LIB_DEPENDS= libcups.so:print/cups CUPS_CMAKE_BOOL= WITH_CUPS FAAC_LIB_DEPENDS= libfaac.so:audio/faac FAAC_CMAKE_BOOL= WITH_FAAC FAAD_LIB_DEPENDS= libfaad.so:audio/faad FAAD_CMAKE_BOOL= WITH_FAAD2 FFMPEG_LIB_DEPENDS= libavcodec.so:multimedia/ffmpeg \ libavutil.so:multimedia/ffmpeg FFMPEG_CMAKE_BOOL= WITH_FFMPEG GSM_LIB_DEPENDS= libgsm.so:audio/gsm GSM_CMAKE_BOOL= WITH_GSM GSTREAMER_CMAKE_BOOL= WITH_GSTREAMER_1_0 GSTREAMER_USES= gnome xorg GSTREAMER_USE= gnome=glib20 gstreamer1=yes xorg=x11,xext,xorgproto,xrandr GSTREAMER_LIB_DEPENDS= libgstbase-1.0.so:multimedia/gstreamer1 ICU_LIB_DEPENDS= libicuuc.so:devel/icu ICU_CMAKE_BOOL= WITH_ICU KERBEROS_CMAKE_BOOL= WITH_GSSAPI_HEIMDAL LAME_LIB_DEPENDS= libmp3lame.so:audio/lame LAME_CMAKE_BOOL= WITH_LAME MANPAGES_BUILD_DEPENDS= xmlto:textproc/xmlto MANPAGES_CMAKE_BOOL= WITH_MANPAGES MANPAGES_CMAKE_OFF= -DWITH_MANPAGES=OFF NEON_DESC= Enable Media Processing Engine instructions NEON_CMAKE_BOOL= WITH_NEON .if ! ${CFLAGS:M-march*} NEON_CFLAGS= -march=armv7-a .endif OPENH264_DESC= H.264 video codec support via OpenH264 OPENH264_LIB_DEPENDS= libopenh264.so:multimedia/openh264 OPENH264_CMAKE_BOOL= WITH_OPENH264 PCSC_DESC= Smart card support (smart card device redirection) PCSC_LIB_DEPENDS= libpcsclite.so:devel/pcsc-lite PCSC_CMAKE_BOOL= WITH_PCSC PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio PULSEAUDIO_CMAKE_BOOL= WITH_PULSE SOXR_LIB_DEPENDS= libsoxr.so:audio/libsoxr SOXR_CMAKE_BOOL= WITH_SOXR SSE_CMAKE_BOOL= WITH_SSE2 WAYLAND_DESC= Build FreeRDP Wayland client WAYLAND_BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland \ libwayland-cursor.so:graphics/wayland \ libxkbcommon.so:x11/libxkbcommon WAYLAND_CMAKE_BOOL= WITH_WAYLAND X11_DESC= Build FreeRDP X11 client X11_CMAKE_ON= -DWITH_X11:BOOL=ON -DWITH_XCURSOR:BOOL=ON \ -DWITH_XEXT:BOOL=ON -DWITH_XFIXES:BOOL=ON \ -DWITH_XI:BOOL=ON -DWITH_XINERAMA:BOOL=ON \ -DWITH_XKBFILE:BOOL=ON -DWITH_XRANDR:BOOL=ON \ -DWITH_XRENDER:BOOL=ON -DWITH_XSHM:BOOL=ON \ -DWITH_XV:BOOL=ON X11_CMAKE_OFF= -DWITH_X11:BOOL=OFF -DWITH_XKBFILE:BOOL=OFF X11_USES= xorg X11_USE= xorg=x11,xcursor,xext,xorgproto,xfixes,xi,xinerama,xkbfile,xrandr,xrender,xv post-patch: @${REINPLACE_CMD} -e '/CMAKE_INSTALL_RPATH /d' \ ${WRKSRC}/CMakeLists.txt @${REINPLACE_CMD} -e 's/Linux/Linux|FreeBSD/' \ ${WRKSRC}/winpr/CMakeLists.txt @${REINPLACE_CMD} -e 's/NetBSD__)/NetBSD__) || defined(__FreeBSD__)/' \ ${WRKSRC}/winpr/libwinpr/utils/trio/triodef.h @${RM} ${WRKSRC}/cmake/FindOpenSSL.cmake @${REINPLACE_CMD} -e 's|$${CMAKE_INSTALL_LIBDIR}/cmake|$${CMAKE_INSTALL_PREFIX}/share/cmake/Modules|' \ ${WRKSRC}/client/CMakeLists.txt \ ${WRKSRC}/winpr/CMakeLists.txt \ ${WRKSRC}/uwac/CMakeLists.txt \ ${WRKSRC}/server/CMakeLists.txt \ ${WRKSRC}/server/shadow/CMakeLists.txt \ ${WRKSRC}/libfreerdp/CMakeLists.txt @${REINPLACE_CMD} -e 's|gsm/gsm.h|gsm.h|' \ ${WRKSRC}/cmake/FindGSM.cmake \ ${WRKSRC}/libfreerdp/codec/dsp.c pre-configure: ${CP} ${FILESDIR}/mntent.h ${WRKSRC}/rdtk/include + ${CP} ${FILESDIR}/mntent_compat.c ${WRKSRC}/channels/rdpdr/client .include Index: head/net/freerdp/files/mntent_compat.c =================================================================== --- head/net/freerdp/files/mntent_compat.c (nonexistent) +++ head/net/freerdp/files/mntent_compat.c (revision 538329) @@ -0,0 +1,174 @@ +/* + * Copyright (c) 1980, 1989, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * Copyright (c) 2001 + * David Rufino + * Copyright (c) 2006 + * Stanislav Sedov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* most of this was ripped from the mount(3) source */ + +#include "config.h" +#include "mntent.h" +#include +#include +#include +#include +#include + +static int pos = -1; +static int mntsize = -1; +static struct mntent _mntent; + +struct { + int m_flag; + const char *m_option; +} mntoptions[] = { + { MNT_ASYNC, "async" }, + { MNT_NOATIME, "noatime"}, + { MNT_NOEXEC, "noexec"}, + { MNT_NOSUID, "nosuid"}, + { MNT_NOSYMFOLLOW, "nosymfollow"}, + { MNT_SYNCHRONOUS, "sync"}, + { MNT_UNION, "union"}, + { MNT_NOCLUSTERR, "noclusterr"}, + { MNT_NOCLUSTERW, "noclusterw"}, + { MNT_SUIDDIR, "suiddir"}, +#ifdef MNT_SNAPSHOT + { MNT_SNAPSHOT, "snapshot"}, +#endif +#ifdef MNT_MULTILABEL + { MNT_MULTILABEL, "multilabel"}, +#endif +#ifdef MNT_ACLS + { MNT_ACLS, "acls"}, +#endif +#ifdef MNT_NODEV + { MNT_NODEV, "nodev"}, +#endif +}; + +#define N_OPTS (sizeof(mntoptions) / sizeof(*mntoptions)) + +char * +hasmntopt (const struct mntent *mnt, const char *option) +{ + int found; + char *opt, *optbuf; + + optbuf = strdup(mnt->mnt_opts); + found = 0; + for (opt = optbuf; (opt = strtok(opt, " ")) != NULL; opt = NULL) { + if (!strcasecmp(opt, option)) { + opt = opt - optbuf + mnt->mnt_opts; + free (optbuf); + return (opt); + } + } + free (optbuf); + return (NULL); +} + +static char * +catopt (char *s0, const char *s1) +{ + size_t newlen; + char *cp; + + if (s1 == NULL || *s1 == '\0') + return s0; + + if (s0 != NULL) { + newlen = strlen(s0) + strlen(s1) + 1 + 1; + if ((cp = (char *)realloc(s0, newlen)) == NULL) + return (NULL); + + (void)strcat(cp, " "); + (void)strcat(cp, s1); + } else + cp = strdup(s1); + + return (cp); +} + + +static char * +flags2opts (int flags) +{ + char *res = NULL; + int i; + + res = catopt(res, (flags & MNT_RDONLY) ? "ro" : "rw"); + + for (i = 0; i < N_OPTS; i++) + if (flags & mntoptions[i].m_flag) + res = catopt(res, mntoptions[i].m_option); + return res; +} + +static struct mntent * +statfs_to_mntent (struct statfs *mntbuf) +{ + static char opts_buf[40], *tmp; + + _mntent.mnt_fsname = mntbuf->f_mntfromname; + _mntent.mnt_dir = mntbuf->f_mntonname; + _mntent.mnt_type = mntbuf->f_fstypename; + tmp = flags2opts (mntbuf->f_flags); + if (tmp) { + opts_buf[sizeof(opts_buf) - 1] = '\0'; + strncpy (opts_buf, tmp, sizeof(opts_buf)-1); + free (tmp); + } else { + *opts_buf = '\0'; + } + _mntent.mnt_opts = opts_buf; + _mntent.mnt_freq = _mntent.mnt_passno = 0; + return (&_mntent); +} + +struct mntent * +getmntent (FILE *fp) +{ + struct statfs *mntbuf; + + if (pos == -1 || mntsize == -1) + mntsize = getmntinfo (&mntbuf, MNT_NOWAIT); + + ++pos; + if (pos == mntsize) { + pos = mntsize = -1; + return (NULL); + } + + return (statfs_to_mntent (&mntbuf[pos])); +} Property changes on: head/net/freerdp/files/mntent_compat.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +on \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/freerdp/files/patch-channels_rdpdr_client_CMakeLists.txt =================================================================== --- head/net/freerdp/files/patch-channels_rdpdr_client_CMakeLists.txt (nonexistent) +++ head/net/freerdp/files/patch-channels_rdpdr_client_CMakeLists.txt (revision 538329) @@ -0,0 +1,10 @@ +--- channels/rdpdr/client/CMakeLists.txt.orig 2020-06-09 02:02:41 UTC ++++ channels/rdpdr/client/CMakeLists.txt +@@ -24,6 +24,7 @@ set(${MODULE_PREFIX}_SRCS + irp.h + devman.c + devman.h ++ mntent_compat.c + rdpdr_main.c + rdpdr_main.h + rdpdr_capabilities.c Property changes on: head/net/freerdp/files/patch-channels_rdpdr_client_CMakeLists.txt ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property