Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:rxmd
emacs-pgtk-nativecomp
emacs-pgtk-nativecomp.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File emacs-pgtk-nativecomp.spec of Package emacs-pgtk-nativecomp
# spec file for package emacs-pgtk-native-comp # # Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define non_git_version 29.0.60 %define build_timestamp %(date +"%%Y%%m%%d") %define build_tar_ball 0 # Use mailutils %bcond_without mailutils # Do not use mmap() from glibc %bcond_with memmmap Name: emacs-pgtk-nativecomp Version: 29.0.50 Release: 0 Summary: Pure GTK Emacs with native compilation License: GPL-3.0+ URL: https://github.com/flatwhatson/emacs/tree/pgtk-nativecomp %if %{build_tar_ball} Source0: emacs-%version.tar.xz %else Source0: _service %endif Source1: emacs-rpmlintrc Patch0: emacs-28.1-native-comp-driver-options.patch # Currently disabled Patch2: emacs-24.4-glibc-adapted.patch Patch4: emacs-24.3-asian-print.patch Patch5: emacs-24.4-ps-bdf-adapted.patch Patch7: emacs-24.1-ps-mule.patch Patch8: emacs-24.4-nonvoid-adapted.patch Patch12: emacs-24.3-x11r7-adapted.patch Patch15: emacs-24.3-iconic.patch Patch16: emacs-24.4-flyspell.patch Patch22: emacs-28.1-pdump.patch Patch23: emacs-25.1-custom-fonts.patch # this patch works with both ImageMagick-6 and ImageMagick-7 for us, # but that is because we ship /usr/include/ImageMagick-7/wand compat # symlink Patch24: emacs-25.2-ImageMagick7-adapted.patch Patch25: emacs-26.1-xft4x11.patch Patch26: emacs-27.1-pdftex-adapted.patch Patch29: emacs-27.1-Xauthority4server.patch # We don't mind using autoconf/automake, because we're only producing one binary anyway BuildRequires: autoconf BuildRequires: automake BuildRequires: giflib-devel BuildRequires: cairo-devel BuildRequires: dbus-1-devel BuildRequires: fontconfig-devel BuildRequires: fonts-config BuildRequires: freetype2-devel BuildRequires: fdupes BuildRequires: gpm-devel BuildRequires: gtk3-devel # Used for installtion of info pages as well as to # detect if the page info.info is part of that package BuildRequires: info BuildRequires: krb5-devel BuildRequires: libgnutls-devel BuildRequires: libgpm2 BuildRequires: libjpeg-devel BuildRequires: libpng-devel BuildRequires: libotf-devel BuildRequires: librsvg-devel BuildRequires: libtiff-devel BuildRequires: libwebp-devel BuildRequires: libxml2-devel BuildRequires: m17n-lib-devel %if %{with mailutils} BuildRequires: mailutils BuildRequires: mailutils-devel %endif BuildRequires: makeinfo BuildRequires: ncurses-devel BuildRequires: sqlite3-devel BuildRequires: tree-sitter-devel BuildRequires: update-alternatives BuildRequires: update-desktop-files BuildRequires: xorg-x11-devel BuildRequires: libXpm-devel BuildRequires: xz # Needed for ACL support %if 0%{?suse_version} >= 1500 BuildRequires: pkgconfig(libacl) %else BuildRequires: libacl-devel %endif BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(harfbuzz) BuildRequires: pkgconfig(json) BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(jansson) BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(webkit2gtk-4.0) >= 2.12 # Lots of X dependencies, not all of them may be necessary # However, we want XWidgets and ideally Xpm support BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xaw3d) BuildRequires: pkgconfig(xcb) BuildRequires: pkgconfig(xfixes) BuildRequires: pkgconfig(xft) BuildRequires: pkgconfig(xinerama) BuildRequires: pkgconfig(xmu) BuildRequires: pkgconfig(xpm) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xshmfence) BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xxf86vm) BuildRequires: pkgconfig(zlib) # Needed for native compilation BuildRequires: gcc12-devel BuildRequires: libgccjit0-devel-gcc12 # Needed for libgccjit smoke tests BuildRequires: gcc12 BuildRequires: libgccjit0-gcc12 Requires: gcc12 %if %{with mailutils} Requires: mailutils %endif # If we split this out into separate packages for GTK, X11, nox etc., # change this to Requires(pre) and add corresponding Requires(post) entries # for the individual packages Requires: fileutils %if 0%{?suse_version} >= 1500 Requires(pre): group(games) Requires(pre): user(games) %endif Provides: nxml-mode = 20041004 Obsoletes: nxml-mode < 20041004 # This is not very elegant yet. # We should be producing an emacs package with the proper version, # and an emacs-pgtk package that requires it with only the pgtk binary Provides: emacs = %{non_git_version} Obsoletes: emacs < %{non_git_version} Obsoletes: emacs-info < %{non_git_version} # I wonder if this is really be necessary Obsoletes: emacs-x11 < %{non_git_version} Obsoletes: emacs-gtk < %{non_git_version} Obsoletes: emacs-nox < %{non_git_version} # We require native scripts Requires: emacs-eln = %{version} %description Pure GTK Emacs with native compilation. %package -n emacs-eln # Without the el.gz files a starting emacs with support of native compiled # lisp code will show an error # >> Symbol's value as variable is void: auto-save-list-file-prefix << # and exceeds the limit for open files as it opens warnings.elc several # times up to the set open file limit Requires: emacs-el = %{version} Summary: GNU Emacs-nox: Emacs Lisp native compiled binary files Group: Productivity/Text/Editorsi %define _libeln %{_prefix}/lib %package -n emacs-el Requires: emacs-pgtk-nativecomp = %{version}-%{release} Requires: emacs = %{non_git_version} Provides: emacs-devel = %{version}-%{release} Summary: Several Lisp Files for GNU Emacs Group: Development/Libraries/Other BuildArch: noarch %description -n emacs-el Lisp files bundled with Emacs. %description -n emacs-eln Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor family. GNU Emacs can currently execute Elisp code either interpreted or byte-interpreted after it has been compiled to byte-code. The native compiler employs the byte-compiler's internal representation as input and exploits libgccjit to achieve code generation using the GNU Compiler Collection (GCC) infrastructure. Generated executables are stored as binary files and can be loaded and unloaded dynamically. %package -n etags Summary: Generate Tag Files for use with Emacs Group: Development/Tools/Navigators Requires(post): coreutils update-alternatives Requires(preun): coreutils update-alternatives Provides: ctags:/usr/bin/etags %package -n emacs-info Summary: Info files for GNU Emacs Group: Documentation/Other %if 0%{?suse_version} <= 1500 Requires(post): %install_info_prereq Requires(preun):%install_info_prereq %endif BuildArch: noarch %description -n emacs-info This package contains all the Info files for GNU Emacs. These files can be read online with GNU Emacs. They describe Emacs and some of its modes. %description -n etags ETags generates tag files from source code in Pascal, Cobol, Ada, Perl, LaTeX, Scheme, Emacs Lisp/Common Lisp, Postscript, Erlang, Python, Prolog, and most assembler-like syntaxes. %package devel Summary: Development header files for Emacs PGTK BuildArch: noarch %description devel Contains header files for developing Emacs modules. %prep %if %{build_tar_ball} %setup -q %else %setup -q -n %_sourcedir/emacs-%version -T -D %endif # %%setup -q -n emacs-%%{version} %patch0 -p0 -b .nativecomp %if %{with memmmap} %patch2 -p0 -b .glibc %endif %patch4 -p0 -b .print %patch5 -p0 -b .psbdf %patch7 -p0 -b .psmu %patch8 -p0 -b .nvoid %patch12 -p0 -b .x11r7 %patch15 -p0 -b .iconic %patch16 -p0 -b .flyspell %patch22 -p0 -b .pd # %patch23 -p0 -b .custfnt %patch24 -p1 -b .imag %patch25 -p0 -b .xft # %patch26 -p0 -b .fmt # %patch29 -p0 -b .xauth ./autogen.sh %build # needed for libgccjit to work export LIBRARY_PATH=/usr/lib64:/usr/lib64/gcc/x86_64-suse-linux/11 export LDFLAGS='-Wl,-O2' # pre-compile lisp export NATIVE_FULL_AOT=1 # Compilation options for the graphical version DESKTOP="" DESKTOP="${DESKTOP} --with-xpm" DESKTOP="${DESKTOP} --with-jpeg" DESKTOP="${DESKTOP} --with-tiff" DESKTOP="${DESKTOP} --with-gif" DESKTOP="${DESKTOP} --with-png" DESKTOP="${DESKTOP} --with-rsvg" DESKTOP="${DESKTOP} --with-xft" DESKTOP="${DESKTOP} --with-sound" # GUI-specific compilation options # We compile for PGTK here # We don't produce separate executables for noX, Lucid or GTK PGTK="" PGTK="${PGTK} --with-pgtk" PGTK="${PGTK} --with-cairo" PGTK="${PGTK} --with-libotf" PGTK="${PGTK} --with-xwidgets" # Non-GUI compilation options COMP="" # Somewhat more reproducible build COMP="${COMP} --disable-build-details" COMP="${COMP} --with-native-compilation" %if %{with mailutils} COMP="${COMP} --without-pop" COMP="${COMP} --with-mailutils" %else COMP="${COMP} --with-pop" %endif COMP="${COMP} --without-hesiod" COMP="${COMP} --with-gameuser=:games" COMP="${COMP} --with-kerberos" COMP="${COMP} --with-kerberos5" COMP="${COMP} --with-dbus" # JSON is the default #COMP="${COMP} --with-json" # inotify is configured by autoconf automatically #COMP="${COMP} --with-file-notification=inotify" COMP="${COMP} --with-modules" COMP="${COMP} --enable-autodepend" if (($(getconf LONG_BIT) < 62)) then COMP="${COMP} --with-wide-int" fi # Compilation options for system directories, PREFIX="--enable-locallisppath=%{_datadir}/emacs/%{non_git_version}/site-lisp:%{_datadir}/emacs/site-lisp \ " # Place for specifying the system we're building for # TODO: commented-out version breaks testing for libgccjit # because autoconf thinks we're cross-compiling SYS="" %ifarch noarch #SYS="${SYS} --build=%{_build_cpu}-suse-%{_build_os}" %else #SYS="${SYS} --build=%%{_target_cpu}-suse-%%{_build_os}" %endif %configure ${PGTK} ${COMP} ${PREFIX} ${SYS} #%%configure --with-pgtk --with-native-compilation --with-cairo --with-libotf \ #--with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-xft \ #--with-dbus --with-sound --with-xwidgets \ #--enable-locallisppath=%{_datadir}/emacs/%{non_git_version}/site-lisp:%{_datadir}/emacs/site-lisp make %{?_smp_mflags} %install %make_install mkdir -p %{buildroot}/usr/lib/systemd/user mv %{buildroot}%{_libdir}/systemd/user/emacs.service %{buildroot}/usr/lib/systemd/user/ %fdupes %{buildroot}/%{_prefix} %files %license COPYING %{_bindir}/emacs %{_bindir}/emacs-%{non_git_version} %{_bindir}/emacsclient %{_bindir}/ebrowse /usr/lib/systemd/user/emacs.service %dir %{_datadir}/emacs %dir %{_datadir}/emacs/%{non_git_version} %dir %{_datadir}/emacs/%{non_git_version}/etc %{_datadir}/emacs/%{non_git_version}/etc/* %exclude %{_datadir}/emacs/%{non_git_version}/etc/ETAGS.* %dir %{_libexecdir}/emacs/ %dir %{_libexecdir}/emacs/%{non_git_version}/ %{_libexecdir}/emacs/%{non_git_version}/*-suse-linux-gnu/ %dir %{_datadir}/applications/ %{_datadir}/applications/emacs*.desktop %{_datadir}/icons/hicolor/*/apps/emacs.* %{_datadir}/icons/hicolor/*/mimetypes/emacs-document*.svg %{_datadir}/glib-2.0/schemas/org.gnu.emacs.defaults.gschema.xml %{_datadir}/metainfo/emacs.metainfo.xml %{_mandir}/man1/emacs.1%{ext_man} %{_mandir}/man1/emacsclient.1%{ext_man} %{_mandir}/man1/ebrowse.1%{ext_man} %dir %attr(775,games,games) %{_localstatedir}/games/emacs %attr(660,games,games) %{_localstatedir}/games/emacs/snake-scores %attr(660,games,games) %{_localstatedir}/games/emacs/tetris-scores %files -n emacs-info %defattr(-, root, root) %doc %{_infodir}/*.gz %files -n emacs-eln %defattr(-, root, root) %dir %{_libdir}/emacs %dir %{_libdir}/emacs/%{non_git_version} %dir %{_libdir}/emacs/%{non_git_version}/native-lisp/ %dir %{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/ %dir %{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/preloaded %{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/*.eln %{_libdir}/emacs/%{non_git_version}/native-lisp/%{non_git_version}-*/preloaded/*.eln %files -n emacs-el %defattr(-, root, root) %dir %{_datadir}/emacs/%{non_git_version}/lisp %dir %{_datadir}/emacs/%{non_git_version}/site-lisp %{_datadir}/emacs/%{non_git_version}/lisp/* %{_datadir}/emacs/%{non_git_version}/site-lisp/subdirs.el %{_datadir}/emacs/site-lisp/subdirs.el %files -n etags %{_bindir}/etags %{_bindir}/ctags %{_mandir}/man1/*tags.1%{ext_man} %dir %{_datadir}/emacs %dir %{_datadir}/emacs/%{non_git_version} %dir %{_datadir}/emacs/%{non_git_version}/etc %doc %{_datadir}/emacs/%{non_git_version}/etc/ETAGS.EBNF %doc %{_datadir}/emacs/%{non_git_version}/etc/ETAGS.README %files devel %{_includedir}/emacs-module.h %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor