From 6492c8576e0393f7ee548cd938e84c80e8d37127 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Tue, 9 Sep 2014 10:44:56 +0300 Subject: [PATCH] Make the "Mac-like" or "canonical" app bundle structure always used on OS X In other words, only executable files go in the MacOS folder. Dynamic libraries and bundled frameworks (i.e., LibreOfficePython), and nothing else, go in the Frameworks folder, and all other files go in the Resources folder. Especially, note that Java class files and rc (.ini) files also go in Resources. Such an app bundle structure is what Apple strongly suggests one should use, and it has been hinted that future versions of code signing and/or Gatekeeper will require such a structure. There is still some ugliness thanks to traces of the historical separation of URE from "the office". Like there are two separate "unorc" files, one for URE, one for the LibreOffice application. IMHO, this should be cleaned up, but is probably controversial. (Eek! I now see there are actually *three* unorc files in the app bundle. Not intentional. Need to fix that later.) Change-Id: Idcf235038deb5b8e1d061734993e9f31869b7606 --- config_host.mk.in | 1 - config_host/config_features.h.in | 11 ---- configure.ac | 29 +--------- connectivity/Package_postgresql-sdbc.mk | 2 +- .../drivers/postgresql/pq_connection.cxx | 3 + cppuhelper/source/paths.cxx | 2 +- external/python3/GeneratedPackage_python3.mk | 2 +- instsetoo_native/CustomTarget_setup.mk | 12 ++-- .../star/lib/util/NativeLibraryLoader.java | 4 +- jvmfwk/Package_jreproperties.mk | 2 +- jvmfwk/plugins/sunmajor/pluginlib/util.cxx | 12 +++- jvmfwk/source/fwkutil.hxx | 2 +- pyuno/CustomTarget_python_shell.mk | 2 +- pyuno/source/module/pyuno_module.cxx | 2 +- pyuno/source/module/pyuno_runtime.cxx | 2 +- sal/rtl/bootstrap.cxx | 2 +- scp2/InstallModule_base.mk | 1 - scp2/InstallModule_calc.mk | 1 - scp2/InstallModule_draw.mk | 1 - scp2/InstallModule_graphicfilter.mk | 1 - scp2/InstallModule_impress.mk | 1 - scp2/InstallModule_math.mk | 1 - scp2/InstallModule_ooo.mk | 1 - scp2/InstallModule_python.mk | 1 - scp2/InstallModule_ure.mk | 1 - scp2/InstallModule_writer.mk | 1 - scp2/inc/macros.inc | 4 +- scp2/source/base/postgresqlsdbc.scp | 2 +- scp2/source/ooo/common_brand.scp | 56 +++---------------- scp2/source/ooo/directory_ooo.scp | 18 +++--- scp2/source/ooo/file_ooo.scp | 2 +- scp2/source/ooo/ure.scp | 37 ++++-------- scp2/source/python/file_python.scp | 2 +- scp2/source/python/profileitem_python.scp | 12 +--- setup_native/source/mac/CodesignRules.plist | 2 - solenv/bin/macosx-change-install-names.pl | 14 ++--- .../misc/extendapplicationenvironment.cxx | 2 +- ure/Package_install.mk | 4 +- 38 files changed, 72 insertions(+), 183 deletions(-) diff --git a/config_host.mk.in b/config_host.mk.in index 22c8da549107..1d8efeb7258b 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -150,7 +150,6 @@ export ENABLE_LOCKDOWN=@ENABLE_LOCKDOWN@ export ENABLE_LPSOLVE=@ENABLE_LPSOLVE@ export ENABLE_LTO=@ENABLE_LTO@ export ENABLE_LWP=@ENABLE_LWP@ -export ENABLE_MACOSX_MACLIKE_APP_STRUCTURE=@ENABLE_MACOSX_MACLIKE_APP_STRUCTURE@ export ENABLE_MACOSX_SANDBOX=@ENABLE_MACOSX_SANDBOX@ export ENABLE_MEDIAWIKI=@ENABLE_MEDIAWIKI@ export ENABLE_MARIADBC=@ENABLE_MARIADBC@ diff --git a/config_host/config_features.h.in b/config_host/config_features.h.in index f87ee277ebf1..04dc7ba520f8 100644 --- a/config_host/config_features.h.in +++ b/config_host/config_features.h.in @@ -107,17 +107,6 @@ #define HAVE_FEATURE_MACOSX_SANDBOX 0 -/* MACOSX_MACLIKE_APP_STRUCTURE - LibreOffice.app substructure style - * - * Whether the structure of the LibreOffice.app bundle is more - * "Mac-like" and what it has been previously, for instance with all - * dylibs in the "Frameworks" folder and all non-code data in a the - * "Resources" folder. For now coupled to HAVE_FEATURE_MACOSX_SANDBOX - * in configure.ac. - */ - -#define HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE 0 - /* READONLY_INSTALLSET - whether to treat the installation as read-only * * Prevents attempts by LibreOffice to write into its installation. That means diff --git a/configure.ac b/configure.ac index a814b6a44332..2fc22bc2c436 100644 --- a/configure.ac +++ b/configure.ac @@ -1361,13 +1361,6 @@ AC_ARG_ENABLE(macosx-sandbox, adherence to App Store rules.]), ,) -AC_ARG_ENABLE(canonical-installation-tree-structure, - AS_HELP_STRING([--enable-canonical-installation-tree-structure], - [Make the installation tree structure be more canonical for - the platform. Implemented only for OS X. Experimental.]), -,) - - AC_ARG_WITH(macosx-bundle-identifier, AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice], [Define the OS X bundle identifier. Default is the somewhat weird @@ -3208,7 +3201,7 @@ dnl =================================================================== dnl Structure of install set dnl =================================================================== -if test $_os = Darwin -a "$enable_canonical_installation_tree_structure" = yes; then +if test $_os = Darwin; then LIBO_BIN_FOLDER=MacOS LIBO_ETC_FOLDER=Resources LIBO_LIBEXEC_FOLDER=MacOS @@ -3225,25 +3218,6 @@ if test $_os = Darwin -a "$enable_canonical_installation_tree_structure" = yes; LIBO_URE_LIB_FOLDER=Frameworks LIBO_URE_SHARE_FOLDER=Resources/ure/share LIBO_URE_SHARE_JAVA_FOLDER=Resources/java - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE=TRUE - AC_DEFINE(HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE) -elif test $_os = Darwin; then - LIBO_BIN_FOLDER=MacOS - LIBO_ETC_FOLDER=MacOS - LIBO_LIBEXEC_FOLDER=MacOS - LIBO_LIB_FOLDER=MacOS - LIBO_LIB_PYUNO_FOLDER=MacOS - LIBO_SHARE_FOLDER=share - LIBO_SHARE_HELP_FOLDER=help - LIBO_SHARE_JAVA_FOLDER=MacOS/classes - LIBO_SHARE_PRESETS_FOLDER=presets - LIBO_SHARE_RESOURCE_FOLDER=MacOS/resource - LIBO_SHARE_SHELL_FOLDER=MacOS/shell - LIBO_URE_BIN_FOLDER=ure-link/bin - LIBO_URE_ETC_FOLDER=ure-link/lib - LIBO_URE_LIB_FOLDER=ure-link/lib - LIBO_URE_SHARE_FOLDER=ure-link/share - LIBO_URE_SHARE_JAVA_FOLDER=ure-link/share/java elif test $_os = WINNT; then LIBO_BIN_FOLDER=program LIBO_ETC_FOLDER=program @@ -3311,7 +3285,6 @@ AC_SUBST(LIBO_URE_ETC_FOLDER) AC_SUBST(LIBO_URE_LIB_FOLDER) AC_SUBST(LIBO_URE_SHARE_FOLDER) AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER) -AC_SUBST(ENABLE_MACOSX_MACLIKE_APP_STRUCTURE) dnl =================================================================== dnl Windows specific tests and stuff diff --git a/connectivity/Package_postgresql-sdbc.mk b/connectivity/Package_postgresql-sdbc.mk index 2820fc429bca..20ade31b5a88 100644 --- a/connectivity/Package_postgresql-sdbc.mk +++ b/connectivity/Package_postgresql-sdbc.mk @@ -9,6 +9,6 @@ $(eval $(call gb_Package_Package,connectivity_postgresql-sdbc,$(SRCDIR)/connectivity/source/drivers/postgresql)) -$(eval $(call gb_Package_add_file,connectivity_postgresql-sdbc,$(LIBO_BIN_FOLDER)/postgresql-sdbc.ini,postgresql-sdbc.ini)) +$(eval $(call gb_Package_add_file,connectivity_postgresql-sdbc,$(LIBO_ETC_FOLDER)/postgresql-sdbc.ini,postgresql-sdbc.ini)) # vim: set noet sw=4 ts=4: diff --git a/connectivity/source/drivers/postgresql/pq_connection.cxx b/connectivity/source/drivers/postgresql/pq_connection.cxx index f54b6f9bbfaa..5e241268efc1 100644 --- a/connectivity/source/drivers/postgresql/pq_connection.cxx +++ b/connectivity/source/drivers/postgresql/pq_connection.cxx @@ -149,6 +149,9 @@ static sal_Int32 readLogLevelFromConfiguration() osl_getModuleURLFromAddress( (void*) readLogLevelFromConfiguration, (rtl_uString **) &fileName ); fileName = fileName.copy( fileName.lastIndexOf( '/' )+1 ); +#ifdef MACOSX + fileName += "../Resources/"; +#endif fileName += "postgresql-sdbc.ini"; rtl::Bootstrap bootstrapHandle( fileName ); diff --git a/cppuhelper/source/paths.cxx b/cppuhelper/source/paths.cxx index 1f15f51e6612..e8aa042218aa 100644 --- a/cppuhelper/source/paths.cxx +++ b/cppuhelper/source/paths.cxx @@ -71,7 +71,7 @@ rtl::OUString cppu::getUnoIniUri() { rtl::OUString uri("file:///assets/program"); #else rtl::OUString uri(get_this_libpath()); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX // We keep both the LO and URE dylibs direcly in "Frameworks" // (that is, LIBO_LIB_FOLDER) and rc files in "Resources" // (LIBO_ETC_FOLDER). Except for unorc, of which there are two, diff --git a/external/python3/GeneratedPackage_python3.mk b/external/python3/GeneratedPackage_python3.mk index 8ca47a919b7d..ffde38be586c 100644 --- a/external/python3/GeneratedPackage_python3.mk +++ b/external/python3/GeneratedPackage_python3.mk @@ -13,6 +13,6 @@ $(eval $(call gb_GeneratedPackage_use_unpacked,python3,python3)) $(eval $(call gb_GeneratedPackage_use_external_project,python3,python3)) -$(eval $(call gb_GeneratedPackage_add_dir,python3,$(INSTROOT)/$(if $(ENABLE_MACOSX_MACLIKE_APP_STRUCTURE),Frameworks,$(LIBO_BIN_FOLDER))/LibreOfficePython.framework,LibreOfficePython.framework)) +$(eval $(call gb_GeneratedPackage_add_dir,python3,$(INSTROOT)/Frameworks/LibreOfficePython.framework,LibreOfficePython.framework)) # vim: set noet sw=4 ts=4: diff --git a/instsetoo_native/CustomTarget_setup.mk b/instsetoo_native/CustomTarget_setup.mk index 48c264bd2ee6..cd8fd6512900 100644 --- a/instsetoo_native/CustomTarget_setup.mk +++ b/instsetoo_native/CustomTarget_setup.mk @@ -88,21 +88,17 @@ $(call gb_CustomTarget_get_workdir,instsetoo_native/setup)/$(call gb_Helper_get_ printf '[Bootstrap]\n' && \ $(if $(SYSTEM_PYTHON),, \ printf 'PYUNO_LOADER_PYTHONHOME=%s\n' \ - $(if $(ENABLE_MACOSX_MACLIKE_APP_STRUCTURE), \ - '$$ORIGIN/../Frameworks/LibreOfficePython.framework', \ $(if $(filter MACOSX,$(OS)), \ - '$$ORIGIN/LibreOfficePython.framework', \ - '$$ORIGIN/python-core-$(PYTHON_VERSION)')) &&) \ + '$$ORIGIN/../Frameworks/LibreOfficePython.framework', \ + '$$ORIGIN/python-core-$(PYTHON_VERSION)') &&) \ printf 'PYUNO_LOADER_PYTHONPATH=%s$$ORIGIN\n' \ $(if $(SYSTEM_PYTHON), \ '', \ - $(if $(ENABLE_MACOSX_MACLIKE_APP_STRUCTURE), \ - '$(foreach dir,/ /lib-dynload /lib-tk /site-packages,$(patsubst %/,%,$$ORIGIN/../Frameworks/LibreOfficePython.framework/Versions/Current/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)$(dir))) ', \ $(if $(filter MACOSX,$(OS)), \ - '$(foreach dir,/ /lib-dynload /lib-tk /site-packages,$(patsubst %/,%,$$ORIGIN/LibreOfficePython.framework/Versions/Current/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)$(dir))) ', \ + '$(foreach dir,/ /lib-dynload /lib-tk /site-packages,$(patsubst %/,%,$$ORIGIN/../Frameworks/LibreOfficePython.framework/Versions/Current/lib/python$(PYTHON_VERSION_MAJOR).$(PYTHON_VERSION_MINOR)$(dir))) ', \ $(if $(filter WNTMSC,$(OS)$(COM)), \ '$(foreach dir,/ /site-packages,$(patsubst %/,%,$$ORIGIN/python-core-$(PYTHON_VERSION)/lib$(dir))) ', \ - '$(foreach dir,/ /lib-dynload /lib-tk /site-packages,$(patsubst %/,%,$$ORIGIN/python-core-$(PYTHON_VERSION)/lib$(dir))) ')))) \ + '$(foreach dir,/ /lib-dynload /lib-tk /site-packages,$(patsubst %/,%,$$ORIGIN/python-core-$(PYTHON_VERSION)/lib$(dir))) '))) \ ) > $@ $(call gb_CustomTarget_get_workdir,instsetoo_native/setup)/$(call gb_Helper_get_rcfile,redirect) : diff --git a/jurt/com/sun/star/lib/util/NativeLibraryLoader.java b/jurt/com/sun/star/lib/util/NativeLibraryLoader.java index 50b1f0559291..099cf69d1881 100644 --- a/jurt/com/sun/star/lib/util/NativeLibraryLoader.java +++ b/jurt/com/sun/star/lib/util/NativeLibraryLoader.java @@ -106,8 +106,8 @@ public final class NativeLibraryLoader { if (path.exists()) { return path; } - // In case of ENABLE_MACOSX_MACLIKE_APP_STRUCTURE, - // dir is now the Resources dir, we want to look in Frameworks + // On OS X, dir is now the Resources dir, + // we want to look in Frameworks if (System.getProperty("os.name").startsWith("Mac") && dir.getName().equals("Resources")) { dir = dir.getParentFile(); diff --git a/jvmfwk/Package_jreproperties.mk b/jvmfwk/Package_jreproperties.mk index ce113ebe4dd5..cd12402c6045 100644 --- a/jvmfwk/Package_jreproperties.mk +++ b/jvmfwk/Package_jreproperties.mk @@ -9,6 +9,6 @@ $(eval $(call gb_Package_Package,jvmfwk_jreproperties,$(call gb_CustomTarget_get_workdir,jvmfwk/jreproperties))) -$(eval $(call gb_Package_add_file,jvmfwk_jreproperties,$(LIBO_URE_LIB_FOLDER)/JREProperties.class,JREProperties.class)) +$(eval $(call gb_Package_add_file,jvmfwk_jreproperties,$(if $(filter MACOSX,$(OS)),$(LIBO_URE_SHARE_JAVA_FOLDER),$(LIBO_URE_LIB_FOLDER))/JREProperties.class,JREProperties.class)) # vim:set noet sw=4 ts=4: diff --git a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx index ccf29fc95eea..4e46a67ad0d0 100644 --- a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx +++ b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx @@ -160,7 +160,7 @@ namespace static OUString sIni; OUStringBuffer buf( 255); buf.append( getLibraryLocation()); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX buf.appendAscii( "/../" LIBO_ETC_FOLDER ); #endif buf.appendAscii( SAL_CONFIGFILE("/sunjavaplugin") ); @@ -385,7 +385,8 @@ bool getJavaProps(const OUString & exePath, OUString usStartDir; //We need to set the CLASSPATH in case the office is started from //a different directory. The JREProperties.class is expected to reside - //next to the plugin. + //next to the plugin, except on OS X where it is in ../Resources/java relative + //to the plugin. OUString sThisLib; if (osl_getModuleURLFromAddress((void *) (sal_IntPtr)& getJavaProps, & sThisLib.pData) == sal_False) @@ -396,6 +397,13 @@ bool getJavaProps(const OUString & exePath, != osl_File_E_None) return false; +#ifdef MACOSX + if (sClassPath.endsWith("/")) + sClassPath += "../Resources/java/"; + else + sClassPath += "/../Resources/java"; +#endif + //check if we shall examine a Java for accessibility support //If the bootstrap variable is "1" then we pass the argument //"noaccessibility" to JREProperties.class. This will prevent diff --git a/jvmfwk/source/fwkutil.hxx b/jvmfwk/source/fwkutil.hxx index 8bd3466c65d3..9bef1f2f6605 100644 --- a/jvmfwk/source/fwkutil.hxx +++ b/jvmfwk/source/fwkutil.hxx @@ -50,7 +50,7 @@ struct Bootstrap : const rtl::Bootstrap * operator () () { OUStringBuffer buf(256); buf.append(getLibraryLocation()); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX // For some reason the jvmfwk3rc file is traditionally in // "ure/lib", i.e. in LIBO_URE_ETC_FOLDER buf.appendAscii( "/../" LIBO_URE_ETC_FOLDER ); diff --git a/pyuno/CustomTarget_python_shell.mk b/pyuno/CustomTarget_python_shell.mk index 6e53993c5438..4cf7f8b6067e 100644 --- a/pyuno/CustomTarget_python_shell.mk +++ b/pyuno/CustomTarget_python_shell.mk @@ -30,7 +30,7 @@ $(call gb_CustomTarget_get_workdir,pyuno/python_shell)/os.sh : \ $(SRCDIR)/pyuno/zipcore/$(if $(filter MACOSX,$(OS)),mac,nonmac).sh $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),SED,1) sed -e "s/%%PYVERSION%%/$(pyuno_PYTHON_SHELL_VERSION)/g" \ - -e "s,%%PYTHON_FRAMEWORK_RELATIVE_PATH%%,$(if $(ENABLE_MACOSX_MACLIKE_APP_STRUCTURE),../Frameworks/),g" \ + -e "s,%%PYTHON_FRAMEWORK_RELATIVE_PATH%%,$(if $(filter MACOSX,$(OS)),../Frameworks/),g" \ $< > $@ # vim: set noet sw=4 ts=4: diff --git a/pyuno/source/module/pyuno_module.cxx b/pyuno/source/module/pyuno_module.cxx index 23800ee0c3be..00e60d9586c1 100644 --- a/pyuno/source/module/pyuno_module.cxx +++ b/pyuno/source/module/pyuno_module.cxx @@ -264,7 +264,7 @@ static PyObject* getComponentContext( OUStringBuffer iniFileName; iniFileName.append( path ); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX iniFileName.appendAscii( "/../" LIBO_ETC_FOLDER ); #endif iniFileName.appendAscii( "/" ); diff --git a/pyuno/source/module/pyuno_runtime.cxx b/pyuno/source/module/pyuno_runtime.cxx index 9023d3958af3..bda00dedae6a 100644 --- a/pyuno/source/module/pyuno_runtime.cxx +++ b/pyuno/source/module/pyuno_runtime.cxx @@ -187,7 +187,7 @@ static void readLoggingConfig( sal_Int32 *pLevel, FILE **ppFile ) reinterpret_cast< oslGenericFunction >(readLoggingConfig), (rtl_uString **) &fileName ); fileName = fileName.copy( fileName.lastIndexOf( '/' )+1 ); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX fileName += "../" LIBO_ETC_FOLDER "/"; #endif fileName += SAL_CONFIGFILE("pyuno" ); diff --git a/sal/rtl/bootstrap.cxx b/sal/rtl/bootstrap.cxx index 2e9933280dfe..5719ae4301ec 100644 --- a/sal/rtl/bootstrap.cxx +++ b/sal/rtl/bootstrap.cxx @@ -275,7 +275,7 @@ static OUString & getIniFileName_Impl() // append config file suffix fileName += OUString(SAL_CONFIGFILE("")); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX // We keep only executables in the MacOS folder, and all // rc files in LIBO_ETC_FOLDER (typically "Resources"). sal_Int32 p = fileName.lastIndexOf( "/MacOS/" ); diff --git a/scp2/InstallModule_base.mk b/scp2/InstallModule_base.mk index 84942d7990b2..805241012474 100644 --- a/scp2/InstallModule_base.mk +++ b/scp2/InstallModule_base.mk @@ -15,7 +15,6 @@ $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/base,\ )) $(eval $(call gb_InstallModule_define_if_set,scp2/base,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ ENABLE_FIREBIRD_SDBC \ SYSTEM_FIREBIRD \ diff --git a/scp2/InstallModule_calc.mk b/scp2/InstallModule_calc.mk index a4d558329e67..1aff01cbc127 100644 --- a/scp2/InstallModule_calc.mk +++ b/scp2/InstallModule_calc.mk @@ -12,7 +12,6 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/calc)) $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/calc,calc)) $(eval $(call gb_InstallModule_define_if_set,scp2/calc,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_draw.mk b/scp2/InstallModule_draw.mk index 84359c99dc8c..0ec9c4f61d01 100644 --- a/scp2/InstallModule_draw.mk +++ b/scp2/InstallModule_draw.mk @@ -10,7 +10,6 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/draw)) $(eval $(call gb_InstallModule_define_if_set,scp2/draw,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_graphicfilter.mk b/scp2/InstallModule_graphicfilter.mk index 219a0c9e27f7..05e86c843c18 100644 --- a/scp2/InstallModule_graphicfilter.mk +++ b/scp2/InstallModule_graphicfilter.mk @@ -12,7 +12,6 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/graphicfilter)) $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/graphicfilter,graphicfilter)) $(eval $(call gb_InstallModule_define_if_set,scp2/graphicfilter,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_impress.mk b/scp2/InstallModule_impress.mk index cb88b935e1f3..95b4965a73cb 100644 --- a/scp2/InstallModule_impress.mk +++ b/scp2/InstallModule_impress.mk @@ -15,7 +15,6 @@ $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/impress,\ )) $(eval $(call gb_InstallModule_define_if_set,scp2/impress,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_math.mk b/scp2/InstallModule_math.mk index 5c9d214bbd60..e498f9325e48 100644 --- a/scp2/InstallModule_math.mk +++ b/scp2/InstallModule_math.mk @@ -12,7 +12,6 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/math)) $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/math,math)) $(eval $(call gb_InstallModule_define_if_set,scp2/math,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk index ebfe131e0f7a..70234f6d7acd 100644 --- a/scp2/InstallModule_ooo.mk +++ b/scp2/InstallModule_ooo.mk @@ -19,7 +19,6 @@ $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/ooo,\ $(eval $(call gb_InstallModule_define_if_set,scp2/ooo,\ ENABLE_GTK \ ENABLE_KDE \ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ ENABLE_NPAPI_FROM_BROWSER \ ENABLE_NPAPI_INTO_BROWSER \ diff --git a/scp2/InstallModule_python.mk b/scp2/InstallModule_python.mk index a8137db694b3..68d23cf0f648 100644 --- a/scp2/InstallModule_python.mk +++ b/scp2/InstallModule_python.mk @@ -31,7 +31,6 @@ endif else $(eval $(call gb_InstallModule_define_if_set,scp2/python,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_ure.mk b/scp2/InstallModule_ure.mk index 6bba3b279136..4f498bdf5fe1 100644 --- a/scp2/InstallModule_ure.mk +++ b/scp2/InstallModule_ure.mk @@ -12,7 +12,6 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/ure)) $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/ure,ure)) $(eval $(call gb_InstallModule_define_if_set,scp2/ure,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/InstallModule_writer.mk b/scp2/InstallModule_writer.mk index 26b94af649a8..69ccf5e52c88 100644 --- a/scp2/InstallModule_writer.mk +++ b/scp2/InstallModule_writer.mk @@ -12,7 +12,6 @@ $(eval $(call gb_InstallModule_InstallModule,scp2/writer)) $(eval $(call gb_InstallModule_use_auto_install_libs,scp2/writer,writer)) $(eval $(call gb_InstallModule_define_if_set,scp2/writer,\ - ENABLE_MACOSX_MACLIKE_APP_STRUCTURE \ ENABLE_MACOSX_SANDBOX \ )) diff --git a/scp2/inc/macros.inc b/scp2/inc/macros.inc index dd9b4b3c08e5..a2a2f3ea6984 100644 --- a/scp2/inc/macros.inc +++ b/scp2/inc/macros.inc @@ -75,7 +75,7 @@ #define SPECIAL_COMPONENT_LIB_NAME(name) STRING(CONCAT2(name,.dll)) #endif -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX #define GID_BRAND_DIR_ETC gid_Brand_Dir_Share #define GID_DIR_PY gid_Brand_Dir_Share #define GID_DIR_URE gid_Dir_Bundle_Contents @@ -102,7 +102,7 @@ #define SCP2_OOO_BIN_DIR gid_Brand_Dir_Program -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX #define SCP2_OOO_LIB_DIR gid_Dir_Frameworks #else #define SCP2_OOO_LIB_DIR SCP2_OOO_BIN_DIR diff --git a/scp2/source/base/postgresqlsdbc.scp b/scp2/source/base/postgresqlsdbc.scp index ba6d094080d4..eabd96552480 100644 --- a/scp2/source/base/postgresqlsdbc.scp +++ b/scp2/source/base/postgresqlsdbc.scp @@ -28,7 +28,7 @@ End File gid_File_PostgresqlSdbc_Ini TXT_FILE_BODY; - Dir = gid_Brand_Dir_Program; + Dir = GID_BRAND_DIR_ETC; Name = "postgresql-sdbc.ini"; Styles = (PACKED); End diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp index 935238ec7df5..1e7f14aaf562 100644 --- a/scp2/source/ooo/common_brand.scp +++ b/scp2/source/ooo/common_brand.scp @@ -90,10 +90,6 @@ Module gid_Module_Root_Brand git_License_Odt, gid_Credits_Odt, gid_Apache_Notice); -#if defined MACOSX && !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE - Unixlinks = (gid_Brand_Unixlink_Program, - gid_Brand_Unixlink_Unopkg); -#endif End // Language specific brand module @@ -125,7 +121,7 @@ Directory gid_Brand_Dir_Program End Directory gid_Brand_Dir_Program_Shell -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share; #else ParentID = gid_Brand_Dir_Program; @@ -134,10 +130,8 @@ Directory gid_Brand_Dir_Program_Shell End Directory gid_Brand_Dir_Readme -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - ParentID = gid_Dir_Bundle_Contents; #else ParentID = gid_Dir_Brand_Root; #endif @@ -446,7 +440,7 @@ Directory gid_Brand_Dir_Share_Labels DosName = "labels"; End -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Directory gid_Brand_Dir_Share_Ure ParentID = gid_Brand_Dir_Share; @@ -472,26 +466,12 @@ Directory gid_Brand_Dir_Share_Xdg End #endif -// UnixLinks - -#if defined MACOSX && !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE -Unixlink gid_Brand_Unixlink_Program - BIN_FILE_BODY; - Dir = gid_Dir_Bundle_Contents; - Name = "program"; - Target = "MacOS"; - Styles = (); -End -#endif - // Files File gid_Brand_File_Html_Thirdpartylicensereadme Name = "LICENSE.html"; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Dir = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - Dir = gid_Dir_Bundle_Contents; #else Dir = gid_Dir_Brand_Root; #endif @@ -560,7 +540,7 @@ File gid_Brand_File_Desktophelper_Txt End #endif -#if !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if !defined MACOSX File gid_Brand_File_Bin_Unoinfo BIN_FILE_BODY; Dir = gid_Brand_Dir_Program; @@ -596,16 +576,6 @@ File gid_Brand_File_Script_Unopkg End #endif -#if defined MACOSX && !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE -Unixlink gid_Brand_Unixlink_Unopkg - BIN_FILE_BODY; - Dir = gid_Brand_Dir_Program; - Name = "unopkg"; - Target = "unopkg.bin"; - Styles = (); -End -#endif - File gid_Brand_File_Bin_Unopkg BIN_FILE_BODY; Dir = gid_Brand_Dir_Program; @@ -1386,10 +1356,8 @@ End File gid_License_Txt TXT_FILE_BODY; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Dir = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - Dir = gid_Dir_Bundle_Contents; #else Dir = gid_Dir_Brand_Root; #endif @@ -1404,10 +1372,8 @@ End File gid_License_Odt BIN_FILE_BODY; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Dir = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - Dir = gid_Dir_Bundle_Contents; #else Dir = gid_Dir_Brand_Root; #endif @@ -1417,10 +1383,8 @@ End File gid_Credits_Odt BIN_FILE_BODY; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Dir = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - Dir = gid_Dir_Bundle_Contents; #else Dir = gid_Dir_Brand_Root; #endif @@ -1430,10 +1394,8 @@ End File gid_Apache_Notice BIN_FILE_BODY; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Dir = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - Dir = gid_Dir_Bundle_Contents; #else Dir = gid_Dir_Brand_Root; #endif diff --git a/scp2/source/ooo/directory_ooo.scp b/scp2/source/ooo/directory_ooo.scp index 322f28209ebe..110f67f75ecd 100644 --- a/scp2/source/ooo/directory_ooo.scp +++ b/scp2/source/ooo/directory_ooo.scp @@ -81,7 +81,7 @@ End Directory gid_Dir_Wizards Styles = (CREATE); -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share; #else ParentID = gid_Brand_Dir_Program; @@ -96,7 +96,7 @@ Directory gid_Dir_Wizards_Ui End Directory gid_Dir_Resource -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share; #else ParentID = gid_Brand_Dir_Program; @@ -105,7 +105,7 @@ Directory gid_Dir_Resource End Directory gid_Dir_Classes -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share; DosName = "java"; #else @@ -124,10 +124,8 @@ End #endif Directory gid_Dir_User -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - ParentID = gid_Dir_Bundle_Contents; #else ParentID = gid_Dir_Brand_Root; #endif @@ -368,10 +366,8 @@ Directory gid_Dir_Share_Fingerprint End Directory gid_Dir_Help -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Dir_Bundle_Contents_Resources; -#elif defined MACOSX - ParentID = gid_Dir_Bundle_Contents; #else ParentID = gid_Dir_Brand_Root; #endif @@ -609,7 +605,7 @@ Directory gid_Dir_Template_Common_Presnt End Directory gid_Brand_Dir_Program_Services -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share; #else ParentID = gid_Brand_Dir_Program; @@ -618,7 +614,7 @@ Directory gid_Brand_Dir_Program_Services End Directory gid_Brand_Dir_Program_Types -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share; #else ParentID = gid_Brand_Dir_Program; diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp index dec94112204f..23be13ca65c7 100644 --- a/scp2/source/ooo/file_ooo.scp +++ b/scp2/source/ooo/file_ooo.scp @@ -146,7 +146,7 @@ File gid_File_Bin_UIPreviewer #endif End -#if defined UNX && !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined UNX && !defined MACOSX File gid_File_Script_Gengal BIN_FILE_BODY; diff --git a/scp2/source/ooo/ure.scp b/scp2/source/ooo/ure.scp index ae538f342ed0..cb143ae92276 100644 --- a/scp2/source/ooo/ure.scp +++ b/scp2/source/ooo/ure.scp @@ -36,23 +36,10 @@ Directory gid_Dir_Common_Ure End #endif -#if defined MACOSX -#if !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE -Directory gid_Dir_UreLink - ParentID = gid_Dir_Bundle_Contents; - DosName = "ure-link"; -End -#endif -#endif - -#if !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if !defined MACOSX Directory gid_Dir_Ure_Bin -#if defined MACOSX - ParentID = gid_Dir_UreLink; -#else ParentID = gid_Dir_Common_Ure; -#endif DosName = "bin"; End @@ -85,11 +72,11 @@ Directory gid_Dir_Ure_Java End #endif -#endif // !ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#endif // !MACOSX #if !defined WNT Directory gid_Dir_Ure_Share_Misc -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX ParentID = gid_Brand_Dir_Share_Ure_Share; #else ParentID = gid_Dir_Ure_Share; @@ -161,18 +148,18 @@ End // We set up the URE unorc/uno.ini in scp2 because then it is easy to // get the platform differences into it compared to constructing it in -// Makefiles etc. With ENABLE_MACOSX_MACLIKE_APP_STRUCTURE it goes into -// .app/Contents/Resources/ure/unorc, on Unix into .../ure/lib/unorc -// and on Windows into .../ure/bin/unorc. The latter two locations -// are factored out as SCP2_URE_DL_DIR. +// Makefiles etc. On OS X it goes into .app/Contents/Resources/ure/unorc, +// on other Unix into .../ure/lib/unorc and on Windows into +// .../ure/bin/unorc. The latter two locations are factored out as +// SCP2_URE_DL_DIR. // FIXME: remove this completely? // currently getting 'destination' at file not unique error on WNT -// but needs handling of ENABLE_MACOSX_MACLIKE_APP_STRUCTURE then... +// but needs handling of MACOSX then... #ifndef WNT Profile gid_Profile_Dl_Uno_Ini ModuleID = gid_Module_Root_Ure_Hidden; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Dir = gid_Brand_Dir_Share_Ure; #else Dir = SCP2_URE_DL_DIR; @@ -185,7 +172,7 @@ ProfileItem gid_Profileitem_Dl_Uno_Ure_Internal_Lib_Dir ProfileID = gid_Profile_Dl_Uno_Ini; Section = "Bootstrap"; Key = "URE_INTERNAL_LIB_DIR"; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Value = "${ORIGIN}/../../Frameworks"; #else Value = "${ORIGIN}"; @@ -197,7 +184,7 @@ ProfileItem gid_Profileitem_Dl_Uno_Ure_Internal_Java_Dir ProfileID = gid_Profile_Dl_Uno_Ini; Section = "Bootstrap"; Key = "URE_INTERNAL_JAVA_DIR"; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Value = "${ORIGIN}/../java"; #elif defined WNT Value = "${ORIGIN}/../java"; @@ -219,7 +206,7 @@ ProfileItem gid_Profileitem_Dl_Uno_Uno_Types ProfileID = gid_Profile_Dl_Uno_Ini; Section = "Bootstrap"; Key = "UNO_TYPES"; -#if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if defined MACOSX Value = "${ORIGIN}/types.rdb ${URE_MORE_TYPES}"; #elif defined WNT Value = "${ORIGIN}/../misc/types.rdb ${URE_MORE_TYPES}"; diff --git a/scp2/source/python/file_python.scp b/scp2/source/python/file_python.scp index 32b0d3624feb..247748a83f25 100644 --- a/scp2/source/python/file_python.scp +++ b/scp2/source/python/file_python.scp @@ -43,7 +43,7 @@ End #ifndef SYSTEM_PYTHON -#if !defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE +#if !defined MACOSX File gid_File_Py_Bin_Python BIN_FILE_BODY; #ifdef WNT diff --git a/scp2/source/python/profileitem_python.scp b/scp2/source/python/profileitem_python.scp index 64158fe34d88..29d33e8c43e7 100644 --- a/scp2/source/python/profileitem_python.scp +++ b/scp2/source/python/profileitem_python.scp @@ -38,10 +38,8 @@ ProfileItem gid_Profileitem_Pythonloader_Pythonhome Section = "Bootstrap"; Order = 1; Key = "PYUNO_LOADER_PYTHONHOME"; - #if defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE + #if defined MACOSX Value = "$ORIGIN/../Frameworks/LibreOfficePython.framework"; - #elif defined MACOSX - Value = "$ORIGIN/LibreOfficePython.framework"; #else Value = CONCAT2($ORIGIN/python-core-,PYVERSION); #endif @@ -56,14 +54,8 @@ ProfileItem gid_Profileitem_Pythonloader_Pythonpath Key = "PYUNO_LOADER_PYTHONPATH"; #if defined SYSTEM_PYTHON Value = "$ORIGIN"; - #elif defined ENABLE_MACOSX_MACLIKE_APP_STRUCTURE - #define FRAMEWORKLIB CONCAT2($ORIGIN/../Frameworks/LibreOfficePython.framework/Versions/Current/lib/python,PYMAJMIN) - Value = CONCAT4(FRAMEWORKLIB FRAMEWORKLIB, - /lib-dynload FRAMEWORKLIB, - /lib-tk FRAMEWORKLIB, - /site-packages $ORIGIN); #elif defined MACOSX - #define FRAMEWORKLIB CONCAT2($ORIGIN/LibreOfficePython.framework/Versions/Current/lib/python,PYMAJMIN) + #define FRAMEWORKLIB CONCAT2($ORIGIN/../Frameworks/LibreOfficePython.framework/Versions/Current/lib/python,PYMAJMIN) Value = CONCAT4(FRAMEWORKLIB FRAMEWORKLIB, /lib-dynload FRAMEWORKLIB, /lib-tk FRAMEWORKLIB, diff --git a/setup_native/source/mac/CodesignRules.plist b/setup_native/source/mac/CodesignRules.plist index e638f9298631..41b2321ccf0f 100644 --- a/setup_native/source/mac/CodesignRules.plist +++ b/setup_native/source/mac/CodesignRules.plist @@ -8,8 +8,6 @@ ^MacOS/pythonloader.unorc$ - ^MacOS/postgresql-sdbc.ini$ - ^MacOS/(senddoc|python|gengal|unoinfo)$ .*\.(png|svg|py|res|rdb)$ diff --git a/solenv/bin/macosx-change-install-names.pl b/solenv/bin/macosx-change-install-names.pl index 10f230b79821..c2dc41625188 100644 --- a/solenv/bin/macosx-change-install-names.pl +++ b/solenv/bin/macosx-change-install-names.pl @@ -38,8 +38,6 @@ # That latter case is useful for libraries from external modules, where the # external build process locates them in some sub-directory. -my $OLD = $ENV{ENABLE_MACOSX_MACLIKE_APP_STRUCTURE} ne 'TRUE'; - sub action($$$) { # The @__VIA_LIBRARY_PATH__ thing has no magic meaning anywhere @@ -48,17 +46,17 @@ sub action($$$) # by the dynamic linker already in DYLD_LIBRARY_PATH. my %action = - ('app/UREBIN/URELIB' => ($OLD ? '@executable_path/../lib' : '@executable_path/../Frameworks'), - 'app/OOO/URELIB' => ($OLD ? '@executable_path/../ure-link/lib' : '@executable_path/../Frameworks'), - 'app/OOO/OOO' => ($OLD ? '@executable_path' : '@executable_path/../Frameworks'), - 'app/SDKBIN/URELIB' => ($OLD ? '@executable_path/../../ure-link/lib' : '@executable_path/../Frameworks'), + ('app/UREBIN/URELIB' => '@executable_path/../Frameworks', + 'app/OOO/URELIB' => '@executable_path/../Frameworks', + 'app/OOO/OOO' => '@executable_path/../Frameworks', + 'app/SDKBIN/URELIB' => '@executable_path/../Frameworks', 'app/NONE/URELIB' => '@__VIA_LIBRARY_PATH__', 'app/NONE/OOO' => '@__VIA_LIBRARY_PATH__', 'app/NONE/NONE' => '@__VIA_LIBRARY_PATH__', 'shl/URELIB/URELIB' => '@loader_path', - 'shl/OOO/URELIB' => ($OLD ? '@loader_path/../ure-link/lib' : '@loader_path'), + 'shl/OOO/URELIB' => '@loader_path', 'shl/OOO/OOO' => '@loader_path', - 'shl/OXT/URELIB' => ($OLD ? '@executable_path/urelibs' : '@executable_path/../Frameworks'), + 'shl/OXT/URELIB' => '@executable_path/../Frameworks', 'shl/NONE/URELIB' => '@__VIA_LIBRARY_PATH__', 'shl/NONE/OOO' => '@__VIA_LIBRARY_PATH__', 'shl/NONE/NONE' => '@loader_path'); diff --git a/tools/source/misc/extendapplicationenvironment.cxx b/tools/source/misc/extendapplicationenvironment.cxx index f125388a9030..a2ae45720ed1 100644 --- a/tools/source/misc/extendapplicationenvironment.cxx +++ b/tools/source/misc/extendapplicationenvironment.cxx @@ -73,7 +73,7 @@ void extendApplicationEnvironment() { uri = uri.copy(0, lastDirSeperatorPos + 1); } env.append(rtl::Bootstrap::encode(uri)); -#if HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE +#ifdef MACOSX env.append("../" LIBO_SHARE_FOLDER "/"); #endif env.append(SAL_CONFIGFILE("fundamental")); diff --git a/ure/Package_install.mk b/ure/Package_install.mk index a5460c9c4b31..9834c632d29d 100644 --- a/ure/Package_install.mk +++ b/ure/Package_install.mk @@ -15,9 +15,7 @@ $(eval $(call gb_Package_add_symbolic_link,ure_install,$(LIBO_URE_BIN_FOLDER)/un endif ifeq (MACOSX,$(OS)) -ifeq ($(ENABLE_MACOSX_MACLIKE_APP_STRUCTURE),) -$(eval $(call gb_Package_add_symbolic_link,ure_install,MacOS/urelibs,../ure-link/lib)) -endif +# nothing else ifeq (WNT,$(OS)) $(eval $(call gb_Package_add_file,ure_install,ure-link,ure-link)) else