From mail at timmydouglas.com Sat Jan 4 13:07:41 2025 From: mail at timmydouglas.com (Timmy Douglas) Date: Sat, 04 Jan 2025 10:07:41 -0800 Subject: patches for running on my machine Message-ID: <87ttaev4eq.fsf@timmydouglas.com> I created two PRs on codeberg that enable me to run it on my guix machine: https://codeberg.org/guile-emacs/guile-emacs/pulls/6 https://codeberg.org/guile-emacs/guile-emacs/pulls/7 I don't run an x server so the pgtk version lets me run it natively under the sway compositor. along with that, I'm using this my-guile-emacs.scm that I slightly modified from what Robin gave me (--with-pgtk): ;; To build & run Guile-Emacs after downloading (replace ;; ~/guix/my-guile-emacs.scm as needed): ;; # Choose your revision: older is stabler, this is what I used for emacsconf ;; git checkout r119-a2c33430-20130106-26.0.50-TSHEDO ;; # "-D" because we will build Guile-Emacs directly ;; guix shell --pure -Df ~/guix/my-guile-emacs.scm ;; autoreconf -vif && \ ;; ./configure --without-modules --without-threads --without-json --without-native-compilation --with-x-toolkit=no --with-pgtk --without-tree-sitter CFLAGS="-Og -ggdb3" && make -j8 ;; EMACSLOADPATH=$PWD/lisp ./src/temacs -Q (use-modules (guix) (gnu) (guix git-download)) (use-package-modules guile emacs autotools flex texinfo gettext bdw-gc ;; Debugging tools: gdb, rr, bear gdb debug build-tools version-control) ;; REVISION must be incremented for updates to take effect (define-public my-guile-for-guile-emacs (let ((commit "ece0f4e7823f055a0a08a8b83e1ec4f078877723") (revision "11")) (package (inherit guile-next) (name "my-guile-for-guile-emacs") (version (git-version "3.0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://git.savannah.gnu.org/git/guile.git") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0gvarij14ky1yan25pxx4k6hsbwqmnpl3cs129ygh31mlgds47zb")))) (outputs '("out" "debug")) (arguments (substitute-keyword-arguments (package-arguments guile-next) ((#:strip-binaries? _ #~'()) #~#f) ((#:configure-flags flags #~'()) #~(list "--disable-jit" "CFLAGS=-Og -ggdb3" "--enable-mini-gmp" "--disable-static")) ((#:phases phases) #~(modify-phases #$phases (replace 'bootstrap (lambda _ ;; Disable broken tests. ;; TODO: Fix them! (substitute* "test-suite/tests/gc.test" (("\\(pass-if \"after-gc-hook gets called\"" m) (string-append "#;" m))) (substitute* "test-suite/tests/version.test" (("\\(pass-if \"version reporting works\"" m) (string-append "#;" m))) ;; Warning: Unwind-only `out-of-memory' exception; skipping pre-unwind handler. ;; FAIL: test-out-of-memory (substitute* "test-suite/standalone/Makefile.am" (("(check_SCRIPTS|TESTS) \\+= test-out-of-memory") "")) (patch-shebang "build-aux/git-version-gen") (invoke "sh" "autogen.sh") #t)) (delete 'check))))) (native-inputs (modify-inputs (package-native-inputs guile-next) (prepend autoconf automake libtool flex texinfo gettext-minimal)))))) (define-public my-guile-emacs (let ((commit "bbd8214f73b4253fefdd933a4e91ec0ad7a71f70") (revision "9")) (package (inherit emacs) (name "guile-emacs") (version "30.0.50-0") (source (origin (method git-fetch) (uri (git-reference (url "https://codeberg.org/lyrra/guilemacs.git") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "09kk42zj8qmx9d9rdxy42hah5kyi4sk22ng746phf0fijic3r9p7")))) (native-inputs (modify-inputs (package-native-inputs emacs) (prepend autoconf automake my-guile-for-guile-emacs ;; Debugging tools gdb rr bear git (list my-guile-for-guile-emacs "debug")))) (arguments (substitute-keyword-arguments ;; Build fails if we allow parallel build. ;; Tests may not pass. `(#:parallel-build? #t #:tests? #f #:strip-binaries? #f ,@(package-arguments emacs)) ((#:make-flags flags #~'()) #~(list "V=1")) ((#:configure-flags flags #~'()) #~(list "--without-modules" "--without-threads" "--with-jpeg=no" "--without-native-compilation" "--without-json" "--with-x-toolkit" "--without-tree-sitter" "CFLAGS=-Og -ggdb3")) ((#:phases phases) #~(modify-phases #$phases (delete 'patch-compilation-driver) (delete 'set-libgccjit-path) (delete 'validate-comp-integrity) ;;(delete 'patch-program-file-names) (add-after 'unpack 'autogen (lambda _ (invoke "autoregen" "-vif"))) ;; (add-before 'build 'ja-dic-cnv-lexbind ;; (lambda _ ;; (substitute* "lisp/international/ja-dic-cnv.el" ;; (("to Emacs Lisp") ;; "to Emacs Lisp -*- lexical-binding: t -*-")) ;; #t)) ;; Build sometimes fails: deps/dispnew.d: No such file or directory ;; (add-before 'configure 'setenv ;; (lambda _ ;; (setenv "CFLAGS" "-O0 -g"))) (add-before 'build 'touch-finder-inf (lambda _ (invoke "touch" "lisp/finder-inf.el"))) (add-before 'build 'make-deps-dir (lambda _ (invoke "mkdir" "-p" "src/deps"))) (replace "build" (lambda _ (system* "make" "-j8") #t)) (delete 'restore-emacs-pdmp) (delete 'strip-double-wrap) (delete 'build-trampolines) (delete 'install-site-start)))))))) my-guile-emacs