diff --git a/.gitignore b/.gitignore index 5556c22..8d4084e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,26 @@ -/clover2-*.tar.gz +/clover2-3.5.6-git93d24a6.tar.gz +/clover2-20180207T1846.tar.gz +/clover2-20180212T1626.tar.gz +/clover2-20180216T2328.tar.gz +/clover2-20180220T0000.tar.gz +/clover2-20180225T0100.tar.gz +/clover2-20180227T2336.tar.gz +/clover2-20180304T0007.tar.gz +/clover2-20180305T2310.tar.gz +/clover2-20180308T1828.tar.gz +/clover2-20180318T1551.tar.gz +/clover2-20180401T1347.tar.gz +/clover2-20180626T1406.tar.gz +/clover2-20180713T2226.tar.gz +/clover2-20180723T1315.tar.gz +/clover2-20180801T1559.tar.gz +/clover2-20180812T1816.tar.gz +/clover2-20180824T1042.tar.gz +/clover2-20180905T1542.tar.gz +/clover2-20181112T1512.tar.gz +/clover2-20181208T2032.tar.gz +/clover2-20181230T1556.tar.gz +/clover2-20190130T1516.tar.gz +/clover2-20190321T1620.tar.gz +/clover2-20190430T1635.tar.gz +/clover2-20191231T1510.tar.gz diff --git a/clover2-11.0.0-0001-port-to-pcre2.patch b/clover2-11.0.0-0001-port-to-pcre2.patch deleted file mode 100644 index 4fc6033..0000000 --- a/clover2-11.0.0-0001-port-to-pcre2.patch +++ /dev/null @@ -1,192 +0,0 @@ -From 4b2ce8ab238fb961c07cf6d87b771ad5eef1b141 Mon Sep 17 00:00:00 2001 -From: clover2 Fedora maintainer -Date: Fri, 16 Aug 2024 21:23:04 +0900 -Subject: [PATCH] port to pcre2 - ---- - configure | 15 ++++++++++----- - configure.in | 9 +++++++-- - src/class_system.c | 13 +++++++------ - src/common.h | 5 +++-- - src/regex.c | 16 ++++++++++------ - 5 files changed, 37 insertions(+), 21 deletions(-) - -diff --git a/configure b/configure -index b1bfbdf..f1fc2a4 100755 ---- a/configure -+++ b/configure -@@ -4419,21 +4419,26 @@ then - LIBS="$LIBS -liconv" - fi - --ac_fn_c_check_header_compile "$LINENO" "pcre.h" "ac_cv_header_pcre_h" "$ac_includes_default" -+CFLAGS_ORIG="$CFLAGS" -+CFLAGS="$CFLAGS_ORIG -DPCRE2_CODE_UNIT_WIDTH=8" -+export CFLAGS -+ac_fn_c_check_header_compile "$LINENO" "pcre2.h" "ac_cv_header_pcre_h" "$ac_includes_default" - if test "x$ac_cv_header_pcre_h" = xyes - then : - printf "%s\n" "#define HAVE_PCRE_H 1" >>confdefs.h - - fi -+CFLAGS="$CFLAGS_ORIG" -+export CFLAGS - --{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lpcre" >&5 --printf %s "checking for main in -lpcre... " >&6; } -+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lpcre2-8" >&5 -+printf %s "checking for main in -lpcre2-8... " >&6; } - if test ${ac_cv_lib_pcre_main+y} - then : - printf %s "(cached) " >&6 - else $as_nop - ac_check_lib_save_LIBS=$LIBS --LIBS="-lpcre $LIBS" -+LIBS="-lpcre2-8 $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - -@@ -4460,7 +4465,7 @@ fi - printf "%s\n" "$ac_cv_lib_pcre_main" >&6; } - if test "x$ac_cv_lib_pcre_main" = xyes - then : -- LIBS="$LIBS -lpcre"; -+ LIBS="$LIBS -lpcre2-8"; - else $as_nop - eixt - fi -diff --git a/configure.in b/configure.in -index 335c1d7..d54d2a2 100644 ---- a/configure.in -+++ b/configure.in -@@ -242,8 +242,13 @@ then - LIBS="$LIBS -liconv" - fi - --AC_CHECK_HEADER(pcre.h, [AC_DEFINE(HAVE_PCRE_H,1)], []) --AC_HAVE_LIBRARY(pcre, [ LIBS="$LIBS -lpcre"; ], [ eixt ]) -+CFLAGS_ORIG="$CFLAGS" -+CFLAGS="$CFLAGS_ORIG -DPCRE2_CODE_UNIT_WIDTH=8" -+export CFLAGS -+AC_CHECK_HEADER(pcre2.h, [AC_DEFINE(HAVE_PCRE_H,1)], []) -+CFLAGS="$CFLAGS_ORIG" -+export CFLAGS -+AC_HAVE_LIBRARY(pcre2-8, [ LIBS="$LIBS -lpcre2-8"; ], [ eixt ]) - - AC_HAVE_LIBRARY(rt, [ LIBS="$LIBS -lrt"; ], []) - -diff --git a/src/class_system.c b/src/class_system.c -index 907b41a..3fd5c33 100644 ---- a/src/class_system.c -+++ b/src/class_system.c -@@ -902,7 +902,7 @@ BOOL System_pcre_exec(CLVALUE** stack_ptr, CLVALUE* lvar, sVMInfo* info) - /// convert Clover value to C value /// - sRegexObject* regex_object_data = CLREGEX(regex->mObjectValue); - -- pcre* regex_value = regex_object_data->mRegex; -+ pcre2_code* regex_value = regex_object_data->mRegex; - - sCLObject* object_data = CLOBJECT(str->mObjectValue); - -@@ -910,13 +910,14 @@ BOOL System_pcre_exec(CLVALUE** stack_ptr, CLVALUE* lvar, sVMInfo* info) - int len = object_data->mFields[1].mULongValue; - - int ovec_max_value = ovec_max->mIntValue; -- int* ovec_value = MCALLOC(1, sizeof(int)*ovec_max_value * 3); -+ PCRE2_SIZE* ovec_value = NULL; - - int offset_value = offset->mIntValue; - - /// go /// -- int options = PCRE_NEWLINE_LF; -- int result = pcre_exec(regex_value, 0, str_value, len, offset_value, options, ovec_value, ovec_max_value*3); -+ pcre2_match_data *match_data = pcre2_match_data_create_from_pattern(regex_value, NULL); -+ int result = pcre2_match(regex_value, (PCRE2_SPTR)str_value, len, offset_value, 0, match_data, NULL); -+ ovec_value = pcre2_get_ovector_pointer(match_data); - - /// set result data on ovec object /// - CLObject pcre_ovec_object = pcre_ovec->mObjectValue; -@@ -938,7 +939,7 @@ BOOL System_pcre_exec(CLVALUE** stack_ptr, CLVALUE* lvar, sVMInfo* info) - sCLObject* pcre_ovec_end_array_data = CLOBJECT(pcre_ovec_end_array); - - int i; -- for(i=0; imArrayNum) { - pcre_ovec_start_array_data->mFields[i].mIntValue = ovec_value[i*2]; - } -@@ -950,7 +951,7 @@ BOOL System_pcre_exec(CLVALUE** stack_ptr, CLVALUE* lvar, sVMInfo* info) - (*stack_ptr)->mIntValue = result; - (*stack_ptr)++; - -- MFREE(ovec_value); -+ pcre2_match_data_free(match_data); - - return TRUE; - } -diff --git a/src/common.h b/src/common.h -index cd3ef23..bf457a5 100644 ---- a/src/common.h -+++ b/src/common.h -@@ -18,7 +18,8 @@ - #include - #include - #include --#include -+#define PCRE2_CODE_UNIT_WIDTH 8 -+#include - #include - #ifndef __USE_XOPEN - #define __USE_XOPEN -@@ -2209,7 +2210,7 @@ struct sRegexObjectStruct - char* mType; - int mSize; - int mArrayNum; -- pcre* mRegex; -+ pcre2_code* mRegex; - char* mRegexString; - BOOL mGlobal; - BOOL mIgnoreCase; -diff --git a/src/regex.c b/src/regex.c -index 135d142..26b6a56 100644 ---- a/src/regex.c -+++ b/src/regex.c -@@ -16,7 +16,7 @@ void regex_free_fun(CLObject obj) - { - sRegexObject* object_data = CLREGEX(obj); - -- pcre_free(object_data->mRegex); -+ pcre2_code_free(object_data->mRegex); - MFREE(object_data->mRegexString); - } - -@@ -32,17 +32,21 @@ CLObject create_regex_object(char* regex, BOOL global, BOOL ignore_case, BOOL mu - - sRegexObject* object_data = CLREGEX(obj); - -- int option = ignore_case ? PCRE_CASELESS:0; -+ int option = ignore_case ? PCRE2_CASELESS:0; - -- const char* err; -- int erro_ofs; -+ int err; -+ PCRE2_SIZE erro_ofs; - -- int options = PCRE_UTF8 | (ignore_case ? PCRE_CASELESS:0) | (multiline ? PCRE_MULTILINE : 0) | (extended ? PCRE_EXTENDED :0) | (dotall ? PCRE_DOTALL :0) | (dollar_endonly ? PCRE_DOLLAR_ENDONLY:0) | (ungreedy ? PCRE_UNGREEDY:0); -+ int options = PCRE2_UTF | (ignore_case ? PCRE2_CASELESS:0) | (multiline ? PCRE2_MULTILINE : 0) | (extended ? PCRE2_EXTENDED :0) | (dotall ? PCRE2_DOTALL :0) | (dollar_endonly ? PCRE2_DOLLAR_ENDONLY:0) | (ungreedy ? PCRE2_UNGREEDY:0); - //int options = PCRE_UTF8 | (ignore_case ? PCRE_CASELESS:0) | (multiline ? PCRE_MULTILINE : 0) | (extended ? PCRE_EXTENDED :0) | (dotall ? PCRE_DOTALL :0) | (anchored ? PCRE_ANCHORED : 0) | (dollar_endonly ? PCRE_DOLLAR_ENDONLY) | (ungreedy ? PCRE_UNGREEDY); - - object_data->mRegexString = MSTRDUP(regex); - -- object_data->mRegex = pcre_compile(regex, options,&err, &erro_ofs, NULL); -+ pcre2_compile_context *context = pcre2_compile_context_create(NULL); -+ pcre2_set_newline(context, PCRE2_NEWLINE_LF); -+ object_data->mRegex = pcre2_compile((PCRE2_SPTR)regex, PCRE2_ZERO_TERMINATED ,options,&err, &erro_ofs, context); -+ pcre2_compile_context_free(context); -+ - object_data->mGlobal = global; - object_data->mIgnoreCase = ignore_case; - object_data->mMultiline = multiline; --- -2.46.0 - diff --git a/clover2-11.0.0-0002-block-TCGETA-usage-on-ppc64le.patch b/clover2-11.0.0-0002-block-TCGETA-usage-on-ppc64le.patch deleted file mode 100644 index 1548e43..0000000 --- a/clover2-11.0.0-0002-block-TCGETA-usage-on-ppc64le.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 420d0a508202a31cef8ae052f6b144ebea0d7804 Mon Sep 17 00:00:00 2001 -From: clover2 Fedora maintainer -Date: Thu, 8 May 2025 16:29:54 +0900 -Subject: [PATCH] block TCGETA usage on ppc64le - ---- - src/class_system.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/class_system.c b/src/class_system.c -index 3fd5c33..9eb6bea 100644 ---- a/src/class_system.c -+++ b/src/class_system.c -@@ -5203,6 +5203,7 @@ BOOL System_initialize_system_calls_system(CLVALUE** stack_ptr, CLVALUE* lvar, s - #ifdef TCSETSF - system->mClassFields[LAST_INITIALIZE_FIELD_NUM_ON_COMMAND_SYSTEM+125].mValue.mIntValue = TCSETSF; - #endif -+#ifndef __powerpc64__ - #ifdef TCGETA - system->mClassFields[LAST_INITIALIZE_FIELD_NUM_ON_COMMAND_SYSTEM+126].mValue.mIntValue = TCGETA; - #endif -@@ -5215,6 +5216,7 @@ BOOL System_initialize_system_calls_system(CLVALUE** stack_ptr, CLVALUE* lvar, s - #ifdef TCSETAF - system->mClassFields[LAST_INITIALIZE_FIELD_NUM_ON_COMMAND_SYSTEM+129].mValue.mIntValue = TCSETAF; - #endif -+#endif - #ifdef TCSBRK - system->mClassFields[LAST_INITIALIZE_FIELD_NUM_ON_COMMAND_SYSTEM+130].mValue.mIntValue = TCSBRK; - #endif --- -2.49.0 - diff --git a/clover2-11.0.0-0003-Fix-Wincompatible-pointer-types-warning.patch b/clover2-11.0.0-0003-Fix-Wincompatible-pointer-types-warning.patch deleted file mode 100644 index 5de3849..0000000 --- a/clover2-11.0.0-0003-Fix-Wincompatible-pointer-types-warning.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 73f9fe3d40d3881223f3a9776732e31bdc8a459f Mon Sep 17 00:00:00 2001 -From: Tom Stellard -Date: Sat, 8 Nov 2025 15:45:20 +0000 -Subject: [PATCH] Fix [-Wincompatible-pointer-types] warning - -This fixes the build with clang >= 22 which has this warning as an -error by default. ---- - src/interpreter.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/interpreter.c b/src/interpreter.c -index 44dfaa6..4708e7c 100644 ---- a/src/interpreter.c -+++ b/src/interpreter.c -@@ -945,7 +945,7 @@ void command_completion() - struct stat stat_; - if(stat(path2, &stat_) == 0) { - if(stat_.st_mode & S_IXUSR) { -- char* entry_d_name[PATH_MAX]; -+ char entry_d_name[PATH_MAX]; - - char* p = entry->d_name; - char* p2 = entry_d_name; --- -2.50.1 - diff --git a/clover2.spec b/clover2.spec index 1cc01d6..8c255e7 100644 --- a/clover2.spec +++ b/clover2.spec @@ -1,46 +1,37 @@ %if 1 -%global mainver 11.0.0 -%global gitdate 20211017 -%global gitcommit 1e6a0256612c8f8b6b1d42bd75778b15c8c5ff67 +%global mainver 10.4.6 +%global gitdate 20190613 +%global gitcommit 6f483b4e3e1ca135a3119629274f0a748f18d259 %else %endif %global shortcommit %(c=%{gitcommit}; echo ${c:0:7}) -%global tarballdate 20221008 -%global tarballtime 2308 +%global tarballdate 20191231 +%global tarballtime 1510 -%global toolchain clang +%undefine _changelog_trimtime Name: clover2 # For Version, see README.md and so on Version: %{mainver} -Release: 13%{?dist} +Release: 2.D%{gitdate}git%{shortcommit}%{?dist} Summary: Yet another compiler language -# app-sample/ unused -# SPDX confirmed -License: GPL-2.0-only +License: GPLv2 URL: https://github.com/ab25cq/clover2/wiki #Source0: https://github.com/ab25cq/%{name}/archive/%{gitcommit}/%{name}-%{version}-git%{shortcommit}.tar.gz Source0: %{name}-%{tarballdate}T%{tarballtime}.tar.gz Source1: create-clover-git-bare-tarball.sh -# Port to pcre2 (bug 2128279) -Patch1: clover2-11.0.0-0001-port-to-pcre2.patch -# block TCGETA usage on ppc64le for now on 2.42 -Patch2: clover2-11.0.0-0002-block-TCGETA-usage-on-ppc64le.patch -# Fix build with clang >= 22. -Patch3: clover2-11.0.0-0003-Fix-Wincompatible-pointer-types-warning.patch # Upstream suggests to use clang BuildRequires: clang BuildRequires: readline-devel -BuildRequires: pcre2-devel +BuildRequires: pcre-devel BuildRequires: gc-devel BuildRequires: git BuildRequires: %{_bindir}/time -BuildRequires: make Requires: %{name}-libs%{?_isa} = %{version}-%{release} # Currently test fails on s390x @@ -48,8 +39,6 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release} #ExcludeArch: s390x # https://github.com/ab25cq/clover2/issues/22 #ExcludeArch: ppc64 -# Currently clang++-11 segfaults on armv7hl -ExcludeArch: armv7hl %description clover2 is a Ruby-like compiler language with static type like Java. @@ -60,12 +49,14 @@ Regular expressions, lambda, closure etc are first class objects. %package libs Summary: Library package needed for %{name} +License: GPLv2 %description libs This package contains libraries needed for clover2. %package devel Summary: Development files for %{name} +License: GPLv2 Requires: %{name}-libs%{?_isa} = %{version}-%{release} %description devel @@ -84,23 +75,27 @@ git checkout -b %{version}-fedora %{gitcommit} cp -a [A-Z]* .. -# honor cflags, toolchain -git rm --cached configure~ -git commit -m "untrack configure~" -a +# Using clang, some compiler flags are not recognized +%global optflags_0 %optflags +%global optflags_1 %(echo "%optflags_0" | sed -e 's|-mcet||') +%global optflags_2 %(echo "%optflags_1" | sed -e 's|-fcf-protection||') +%global optflags_3 %(echo "%optflags_2" | sed -e 's|-fstack-clash-protection||') +%global optflags_4 %optflags_3 -fsanitize=address -fsanitize=undefined +%global optflags %optflags_3 +# honor cflags sed -i.cflags configure.in configure \ - -e '\@CFLAGS=.*-DPREFIX=@s|-DPREFIX=|%build_cflags -DPREFIX=|' \ + -e '\@CFLAGS=.*-DPREFIX=@s|-DPREFIX=|%optflags -DPREFIX=|' \ -e 's|-O3|-O2|' \ - -e's|^CC=gcc|CC=%{toolchain}|' \ %{nil} # honor libdir sed -i.lib configure.in configure -e 's|/lib |/%{_lib} |' sed -i.lib Makefile.in -e 's|/lib$|/%{_lib}|' git commit -m "Apply Fedora specific configuration" -a -cat %PATCH1 | git am -cat %PATCH2 | git am -cat %PATCH3 | git am + +#%%patch0 -p1 +#git commit -m "temp fix" -a %build cd clover2 @@ -110,6 +105,9 @@ cd clover2 %{nil} # --with-jit +# Apply shebang +sed -i.sh bclover2 -e '1i #!/bin/bash' + # parallel make fails %make_build -j1 @@ -155,75 +153,6 @@ LANG=C.utf8 make -C clover2 test %{_includedir}/clover2/ %changelog -* Sat Nov 08 2025 Tom Stellard - 11.0.0-13 -- Fix build with clang >=22 - -* Wed Jul 23 2025 Fedora Release Engineering - 11.0.0-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Thu May 08 2025 Mamoru TASAKA - 11.0.0-11 -- block TCGETA usage on ppc64le for now on 2.42 - -* Thu Jan 16 2025 Fedora Release Engineering - 11.0.0-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Fri Aug 16 2024 Mamoru TASAKA - 11.0.0-9 -- Port to pcre2 (bug 2128279) - -* Wed Jul 17 2024 Fedora Release Engineering - 11.0.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Mar 27 2024 Mamoru TASAKA - 11.0.0-7 -- Remove unneeded subpackge License tag - -* Thu Feb 29 2024 Mamoru TASAKA - 11.0.0-6 -- SPDX migration - -* Wed Jan 24 2024 Fedora Release Engineering - 11.0.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 11.0.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Jul 19 2023 Fedora Release Engineering - 11.0.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jan 19 2023 Fedora Release Engineering - 11.0.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Oct 8 2022 Mamoru TASAKA - 11.0.0-1 -- Update to 11.0.0 - -* Wed Jul 20 2022 Fedora Release Engineering - 10.4.6-10.D20190613git6f483b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Wed Jan 19 2022 Fedora Release Engineering - 10.4.6-9.D20190613git6f483b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jul 21 2021 Fedora Release Engineering - 10.4.6-8.D20190613git6f483b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jan 26 2021 Fedora Release Engineering - 10.4.6-7.D20190613git6f483b4 -- Exclude armv7hl for now (for clang++-11) - -* Tue Jan 26 2021 Fedora Release Engineering - 10.4.6-7.D20190613git6f483b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Thu Sep 03 2020 Jeff Law - 10.4.6-6.D20190613git6f483b4 -- Enable LTO, but not -ffat-lto-objects. This package really should set - %toolchain to clang, but that doesn't work yet. - -* Fri Aug 7 2020 Mamoru TASAKA - 10.4.6-5.D20190613git6f483b4 -- Disable lto, clang does not support these options -- parser.c: fix memset size - -* Sat Aug 01 2020 Fedora Release Engineering - 10.4.6-4.D20190613git6f483b4 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Fedora Release Engineering - 10.4.6-3.D20190613git6f483b4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - * Tue Jan 28 2020 Fedora Release Engineering - 10.4.6-2.D20190613git6f483b4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild diff --git a/sources b/sources index be3c57e..3980f0c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (clover2-20221008T2308.tar.gz) = 9d6bea63765af55b94a159a9153459ad2d4a214ad392afe804099a9169e918ca61ee08e502d45843a8e5188fcd45fea1a69c85d45a45a33abe93e0f190984a50 +SHA512 (clover2-20191231T1510.tar.gz) = 3a0771c663525226e281b8a70e1eae2756730335237f3faa2296ee44be7cae4cf1d9df6bdeb6edf556e2ec270f1394294d2942c2bef2beda4fb77a9c6d03a647