diff --git a/.gitignore b/.gitignore index 48f9b12..b3f143c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,141 @@ -/JDim-*.tar.gz +jd-2.7.0-svn3593_trunk.tgz +jd-2.7.0-svn3600_trunk.tgz +jd-2.7.0-beta100808.tgz +jd-2.7.0-svn3613_trunk.tgz +/jd-2.7.0-rc100818.tgz +/jd-2.7.0-100823.tgz +/jd-2.7.5-svn3645_trunk.tgz +/jd-2.7.5-svn3663_trunk.tgz +/jd-2.7.5-svn3665_trunk.tgz +/jd-2.7.5-svn3669_trunk.tgz +/jd-2.7.5-svn3673_trunk.tgz +/jd-2.7.5-svn3680_trunk.tgz +/jd-2.7.5-svn3686_trunk.tgz +/jd-2.7.5-svn3688_trunk.tgz +/jd-2.7.5-svn3692_trunk.tgz +/jd-2.7.5-svn3700_trunk.tgz +/jd-2.7.5-svn3717_trunk.tgz +/jd-2.7.5-svn3722_trunk.tgz +/jd-2.7.5-svn3731_trunk.tgz +/jd-2.7.5-svn3739_trunk.tgz +/jd-2.7.5-svn3741_trunk.tgz +/jd-2.7.5-svn3749_trunk.tgz +/jd-2.7.5-svn3754_trunk.tgz +/jd-2.7.5-svn3757_trunk.tgz +/jd-2.7.5-beta101213.tgz +/jd-2.7.5-svn3779_trunk.tgz +/jd-2.7.5-svn3783_trunk.tgz +/jd-2.7.5-101228.tgz +/jd-2.8.0-svn3800_trunk.tgz +/jd-2.8.0-svn3806_trunk.tgz +/jd-2.8.0-svn3810_trunk.tgz +/jd-2.8.0-beta110118.tgz +/jd-2.8.0-rc110129.tgz +/jd-2.8.0-110203.tgz +/jd-2.8.1-svn3838_trunk.tgz +/jd-2.8.1-svn3840_trunk.tgz +/jd-2.8.1-svn3841_trunk.tgz +/jd-2.8.1-svn3842_trunk.tgz +/jd-2.8.1-beta110214.tgz +/jd-2.8.1-svn3852_trunk.tgz +/jd-2.8.1-svn3856_trunk.tgz +/jd-2.8.1-svn3859_trunk.tgz +/jd-2.8.1-svn3864_trunk.tgz +/jd-2.8.1-110312.tgz +/jd-2.8.2-svn3876_trunk.tgz +/jd-2.8.2-svn3882_trunk.tgz +/jd-2.8.2-svn3885_trunk.tgz +/jd-2.8.2-svn3887_trunk.tgz +/jd-2.8.2-svn3895_trunk.tgz +/jd-2.8.2-svn3898_trunk.tgz +/jd-2.8.2-svn3901_trunk.tgz +/jd-2.8.2-svn3903_trunk.tgz +/jd-2.8.2-svn3905_trunk.tgz +/jd-2.8.2-svn3907_trunk.tgz +/jd-2.8.2-svn3909_trunk.tgz +/jd-2.8.2-svn3914_trunk.tgz +/jd-2.8.2-svn3916_trunk.tgz +/jd-2.8.2-svn3920_trunk.tgz +/jd-2.8.2-svn3924_trunk.tgz +/jd-2.8.2-svn3925_trunk.tgz +/jd-2.8.2-beta110724.tgz +/jd-2.8.2-rc11083.tgz +/jd-2.8.2-110808.tgz +/jd-2.8.5-svn3963_trunk.tgz +/jd-2.8.5-svn3973_trunk.tgz +/jd-2.8.5-svn3974_trunk.tgz +/jd-2.8.5-svn3982_trunk.tgz +/jd-2.8.5-svn3993_trunk.tgz +/jd-2.8.5-beta120206.tgz +/jd-2.8.5-svn4017_trunk.tgz +/jd-2.8.5-svn4020_trunk.tgz +/jd-2.8.5-rc120811.tgz +/jd-2.8.5-120826.tgz +/jd-2.8.6-svn4051_trunk.tgz +/jd-2.8.6-svn4054_trunk.tgz +/jd-2.8.6-svn4072_trunk.tgz +/jd-2.8.6-svn4076_trunk.tgz +/jd-2.8.6-svn4077_trunk.tgz +/jd-2.8.6-svn4079_trunk.tgz +/jd-2.8.6-svn4081_trunk.tgz +/jd-2.8.6-svn4087_trunk.tgz +/jd-2.8.6-svn4089_trunk.tgz +/jd-2.8.6-svn4090_trunk.tgz +/jd-2.8.6-svn4096_trunk.tgz +/jd-2.8.6-beta130304.tgz +/jd-2.8.6-svn4105_trunk.tgz +/jd-2.8.6-svn4107_trunk.tgz +/jd-2.8.6-svn4109_trunk.tgz +/jd-2.8.6-rc130414.tgz +/jd-2.8.6-130518.tgz +/jd-2.8.7-svn4128_trunk.tgz +/jd-2.8.7-svn4132_trunk.tgz +/jd-2.8.7-rc131230.tgz +/jd-2.8.7-140104.tgz +/jd-2.8.8-svn4151_trunk.tgz +/jd-2.8.8-svn4152_trunk.tgz +/jd-2.8.8-beta140329.tgz +/jd-2.8.8-svn4166_trunk.tgz +/jd-2.8.8-svn4171_trunk.tgz +/jd-2.8.8-rc140429.tgz +/jd-2.8.8-140601.tgz +/jd-2.8.9-svn4193_trunk.tgz +/jd-2.8.9-rc150201.tgz +/jd-2.8.9-svn4207_trunk.tgz +/jd-2.8.9-150226.tgz +/JD-20180217T2310.tar.gz +/JD-20180502T1630.tar.gz +/JDim-20200131T1441.tar.gz +/JDim-20200203T1247.tar.gz +/JDim-20200811T1400.tar.gz +/JDim-20201022T1107.tar.gz +/JDim-20201027T1619.tar.gz +/JDim-20201105T2232.tar.gz +/JDim-20201125T1203.tar.gz +/JDim-20201220T1610.tar.gz +/JDim-20201231T1019.tar.gz +/JDim-20210110T1542.tar.gz +/JDim-20210503T1359.tar.gz +/JDim-20210711T1551.tar.gz +/JDim-20211017T1447.tar.gz +/JDim-20211018T0932.tar.gz +/JDim-20211023T2303.tar.gz +/JDim-20211025T0926.tar.gz +/JDim-20211030T2337.tar.gz +/JDim-20211101T0959.tar.gz +/JDim-20211104T2328.tar.gz +/JDim-20211107T1159.tar.gz +/JDim-20211108T0913.tar.gz +/JDim-20211114T0025.tar.gz +/JDim-20211115T1946.tar.gz +/JDim-20211123T0006.tar.gz +/JDim-20211129T1614.tar.gz +/JDim-20211212T0912.tar.gz +/JDim-20211214T1124.tar.gz +/JDim-20211219T0901.tar.gz +/JDim-20211221T1632.tar.gz +/JDim-20211223T1411.tar.gz +/JDim-20211226T1534.tar.gz +/JDim-20220106T1448.tar.gz +/JDim-20220109T2216.tar.gz +/JDim-20220116T2221.tar.gz diff --git a/0007-MISC-remove_space-handle-the-case-str-consists-of-ju.patch b/0007-MISC-remove_space-handle-the-case-str-consists-of-ju.patch new file mode 100644 index 0000000..27a5fe6 --- /dev/null +++ b/0007-MISC-remove_space-handle-the-case-str-consists-of-ju.patch @@ -0,0 +1,44 @@ +From 01cff84b8ea1221c3bd0a2f3017b75fc79ba823a Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Fri, 31 Jan 2020 20:51:09 +0900 +Subject: [PATCH 07/11] MISC::remove_space: handle the case str consists of + just spaces (#176) + +In the funcion MISC::remove_space , when the input str consists of just spaces, +the current implementation causes invalid access against str because +the variable i2 can be (size_t)-1. +When compiled with -Wp,-D_GLIBCXX_ASSERTIONS, this actually causes abort like: + +/usr/include/c++/9/bits/basic_string.h:1048: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::const_reference std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator[](std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type) const [with _CharT = char; _Traits = std::char_traits; _Alloc = std::allocator; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::const_reference = const char&; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]: Assertion '__pos <= size()' failed. + +Note that for this case, i finally becomes lng (== str.length()), and +str.substr(pos, len) returns empty string when pos == str.length(), so +this patch should behave as the previous behavior. +--- + src/jdlib/miscutil.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/jdlib/miscutil.cpp b/src/jdlib/miscutil.cpp +index a7d3dd34..ccd71e45 100644 +--- a/src/jdlib/miscutil.cpp ++++ b/src/jdlib/miscutil.cpp +@@ -304,7 +304,7 @@ std::string MISC::remove_space( const std::string& str ) + + // 前 + size_t i = 0; +- while( 1 ){ ++ while( i < lng ){ + + // 半角 + if( str[ i ] == ' ' ) ++i; +@@ -315,6 +315,7 @@ std::string MISC::remove_space( const std::string& str ) + str[ i +2 ] == str_space[ 2 ] ) i += lng_space; + else break; + } ++ if (i >= lng) return ""; + + // 後 + size_t i2 = lng -1; +-- +2.24.1 + diff --git a/jd.spec b/jd.spec index ba33ca3..2a6b860 100644 --- a/jd.spec +++ b/jd.spec @@ -11,43 +11,41 @@ ########################################## # Defined by upsteam # -%define main_ver 0.15.0 +%define main_ver 0.7.0 #%%define strtag 20200118 -%dnl %define pre_ver beta ########################################## # %global reponame JDim -%global gitdate 20260110 -%global gitcommit 95c8d64c60e607aebb9097b9dd4b865670b1844c -%dnl %global gitcommit JDim-v%{main_ver} +%global gitdate 20220108 +%global gitcommit 49aaaa784f06c758c6a46faaf1a2641a9bfd1c61 +#%%global gitcommit JDim-v%{main_ver} %global shortcommit %(c=%{gitcommit}; echo ${c:0:7}) -%global tarballdate 20260110 -%global tarballtime 2319 +%global tarballdate 20220116 +%global tarballtime 2221 ########################################## # Defined by vendor # +%define vendor_rel 1 %define extra_rel %{nil} %define use_gitcommit_as_rel 0 # Tag name changed from vendor to vendorname so as not to # overwrite Vendor entry in Summary %define vendorname fedora +%define gtkmmdevel pkgconfig(gtkmm-3.0) %define fontpackage mona-fonts-VLGothic ########################################## ########################################## %if 0%{?use_gitcommit_as_rel} >= 1 -%global gittag %{gitdate}git%{shortcommit} -%global gitver_rpm ^%{gittag} -%global gitver_build -%{gittag} +%global rel %{vendor_rel}.D%{gitdate}git%{shortcommit}%{?dist} %else -%global gittag %{nil} -%global gitver_rpm %{nil} -%global gitver_build %{nil} +%define rel %{vendor_rel}%{?dist} %endif %define _with_migemo 1 +%define _with_onig 0 %define migemo_dict %{_datadir}/cmigemo/utf-8/migemo-dict %if ! 0%{?fedora} @@ -67,28 +65,27 @@ %endif #%%undefine _annotated_build -%if 0%{?use_gitcommit_as_rel} >= 1 -%global clamp_mtime_to_source_date_epoch 0 -%endif ########################################## Name: jd Epoch: 1 -Version: %{main_ver}%{?strtag:.%{strtag}}%{?pre_ver:~%{pre_ver}}%{gitver_rpm} -Release: 1%{?dist}%{flagrel} +Version: %{main_ver}%{?strtag:.%{strtag}} +Release: %{rel}%{flagrel} Summary: A 2ch browser -# Automatically converted from old format: GPLv2 - review is highly recommended. -License: GPL-2.0-only +License: GPLv2 URL: https://github.com/JDimproved/JDim -%dnl Source0: http://dl.sourceforge.jp/jd4linux/%{repoid}/%{name}-%{main_ver}-%{strtag}.tgz +#Source0: http://dl.sourceforge.jp/jd4linux/%{repoid}/%{name}-%{main_ver}-%{strtag}.tgz Source0: JDim-%{tarballdate}T%{tarballtime}.tar.gz Source1: create-JD-git-bare-tarball.sh +Patch0: jdim-0.3.0-env-pkg-distro-specific.patch +# Upstream patch + BuildRequires: gcc-c++ -BuildRequires: pkgconfig(gtkmm-3.0) +BuildRequires: %{gtkmmdevel} BuildRequires: libgcrypt-devel BuildRequires: libxcrypt-devel BuildRequires: pkgconfig(alsa) @@ -99,9 +96,12 @@ BuildRequires: pkgconfig(sm) %if 0%{?_with_migemo} >= 1 BuildRequires: cmigemo-devel %endif +%if 0%{?_with_onig} >= 1 +BuildRequires: oniguruma-devel +%endif -BuildRequires: meson -BuildRequires: gtest-devel +BuildRequires: libtool automake +BuildRequires: autoconf-archive BuildRequires: %{_bindir}/appstream-util BuildRequires: %{_bindir}/desktop-file-validate BuildRequires: git @@ -119,7 +119,7 @@ Requires: %{fontpackage} JD is a 2ch browser based on gtkmm2. %prep -%setup -q -c -T -n %{name}-%{main_ver}%{?strtag:.%{strtag}}%{gitver_build} -a 0 +%setup -q -c -T -a 0 git clone ./%{reponame}.git cd JDim @@ -128,24 +128,30 @@ git config user.name "%{name} Fedora maintainer" git config user.email "%{name}-owner@fedoraproject.org" %if 0%{?use_gitcommit_as_rel} >= 1 -git checkout -b %{main_ver}-fedora-local %{gitcommit} +git checkout -b %{version}-fedora-local %{gitcommit} %else -git checkout -b %{main_ver}-fedora-local %{gitcommit} -#git checkout -b %{main_ver}-fedora-local %{reponame}-v%{main_ver} +git checkout -b %{version}-fedora-local %{reponame}-v%{main_ver} %endif cp -a [A-Z]* .. +# Fedora specific +if ( uname -n | grep -q 'fedoraproject\.org' ) ; then +%patch0 -p2 -b .env_fedora +git commit -m "apply Fedora specific config" -a +fi + # reset to base, as git information is embedded in the source -git checkout -b %{main_ver}-fedora +git checkout -b %{version}-fedora #git reset %{reponame}-v%{main_ver} %if 0%{?use_gitcommit_as_rel} >= 1 git reset %{gitcommit} %else -git reset %{gitcommit} -#git reset %{reponame}-v%{main_ver} +git reset %{reponame}-v%{main_ver} %endif +autoreconf -i + %build cd %{reponame} @@ -153,36 +159,38 @@ cd %{reponame} export TZ='Asia/Tokyo' %set_build_flags -# workaround for calling crypt_r / linking -lcrypt issue with asan -# https://bugzilla.redhat.com/show_bug.cgi?id=1827338 -# https://github.com/google/sanitizers/issues/1365 -export LDFLAGS="$LDFLAGS -Wl,--push-state,--no-as-needed -lcrypt -Wl,--pop-state" %if 0%{?use_gcc_strict_sanitize} export CC="${CC} -fsanitize=address -fsanitize=undefined" export CXX="${CXX} -fsanitize=address -fsanitize=undefined" export LDFLAGS="${LDFLAGS} -pthread" + +# Currently -fPIE binary cannot work with ASAN on kernel 4.12 +# https://github.com/google/sanitizers/issues/837 +export CFLAGS="$(echo $CFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')" +export CXXFLAGS="$(echo $CXXFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')" +export LDFLAGS="$(echo $LDFLAGS | sed -e 's|-specs=[^ \t][^ \t]*hardened[^ \t][^ \t]*||g')" %endif -%meson \ - -Dalsa=enabled \ - -Dbuild_tests=enabled \ - -Dcompat_cache_dir=enabled \ +%configure \ + --with-alsa \ +%if 0%{?_with_onig} >= 1 + --with-regex=oniguruma \ +%endif + --with-xdgopen \ %if 0%{?_with_migemo} >= 1 - -Dmigemo=enabled \ - -Dmigemodict=%{migemo_dict} \ + --with-migemo \ + --with-migemodict=%{migemo_dict} \ %endif - -Dpackager="jd-%{version}-%{release}.%{_arch}.rpm by Fedora Project" \ - -Dtls=gnutls \ - %{nil} + %{nil} + +%make_build -k -%meson_build \ - --ninja-args "-k 0" %install cd %{reponame} -%meson_install +%make_install # Create symlink ln -sf jdim %{buildroot}%{_bindir}/%{name} @@ -192,17 +200,11 @@ ln -sf jdim.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop desktop-file-validate %{buildroot}%{_datadir}/applications/jdim.desktop appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/jdim.metainfo.xml -cd %{reponame} -%if 0%{?use_gcc_strict_sanitize} >= 1 -export ASAN_OPTIONS=detect_leaks=0 -%endif -%meson_test -v %files %defattr(-,root,root,-) %license COPYING -%doc ChangeLog -%doc README.md +%doc ChangeLog README %{_bindir}/jdim %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop @@ -211,78 +213,6 @@ export ASAN_OPTIONS=detect_leaks=0 %{_datadir}/icons/hicolor/*/apps/jdim.* %changelog -* Sat Jan 10 2026 Mamoru TASAKA - 1:0.15.0-1 -- 0.15.0 - -* Sun Jul 27 2025 Mamoru TASAKA - 1:0.14.0-1 -- 0.14.0 - -* Thu Jul 24 2025 Fedora Release Engineering - 1:0.13.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jan 17 2025 Fedora Release Engineering - 1:0.13.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Sat Jan 11 2025 Mamoru TASAKA - 1:0.13.0-1 -- 0.13.0 - -* Mon Jul 29 2024 Miroslav Suchý - 1:0.12.0-3 -- convert license to SPDX - -* Thu Jul 18 2024 Fedora Release Engineering - 1:0.12.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sun Jul 07 2024 Mamoru TASAKA - 1:0.12.0-1 -- 0.12.0 - -* Tue Jun 18 2024 Mamoru TASAKA - 1:0.12.0~beta-1 -- 0.12.0-beta - -* Wed Jan 24 2024 Fedora Release Engineering - 1:0.11.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jan 20 2024 Fedora Release Engineering - 1:0.11.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jan 13 2024 Mamoru TASAKA - 1:0.11.0-1 -- 0.11.0 - -* Sun Dec 24 2023 Mamoru TASAKA - 1:0.11.0~beta-1 -- 0.11.0 beta - -* Sun Jul 23 2023 Mamoru TASAKA - 1:0.10.1-1 -- 0.10.1 - -* Thu Jul 20 2023 Fedora Release Engineering - 1:0.10.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sun Jul 9 2023 Mamoru TASAKA - 1:0.10.0-1 -- 0.10.0 - -* Mon Jun 19 2023 Mamoru TASAKA - 1:0.10.0~beta-1 -- 0.10.0 beta - -* Thu Jan 19 2023 Fedora Release Engineering - 1:0.9.0-2.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Wed Jan 18 2023 Mamoru TASAKA - 1:0.9.0-2 -- Add missing cstdint header inclusion (gcc13) - -* Sun Jan 8 2023 Mamoru TASAKA - 1:0.9.0-1 -- JDim 0.9.0 - -* Sun Dec 18 2022 Mamoru TASAKA - 1:0.9.0-0.1.beta.D20221218git3f6cf65 -- 0.9.0 beta - -* Wed Jul 27 2022 Mamoru TASAKA - 1:0.8.0-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jul 18 2022 Mamoru TASAKA - 1:0.8.0-1 -- JDim 0.8.0 - -* Sun Feb 06 2022 Mamoru TASAKA - 1:0.7.0-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - * Sun Jan 16 2022 Mamoru TASAKA - 1:0.7.0-1 - JDim 0.7.0 diff --git a/jdim-0.3.0-env-pkg-distro-specific.patch b/jdim-0.3.0-env-pkg-distro-specific.patch new file mode 100644 index 0000000..a4148c2 --- /dev/null +++ b/jdim-0.3.0-env-pkg-distro-specific.patch @@ -0,0 +1,11 @@ +--- jd-0.3.0/JDim/src/environment.cpp.env_fedora 2020-01-31 14:58:08.306098160 +0900 ++++ jd-0.3.0/JDim/src/environment.cpp 2020-01-31 14:59:30.123024272 +0900 +@@ -619,7 +619,7 @@ std::string ENVIRONMENT::get_jdinfo() + jd_info << + "[バージョン] " << progname << " " << version << "\n" << + "[ディストリ ] " << distribution << "\n" << +- "[パッケージ] " << "バイナリ/ソース( <配布元> )" << "\n" << ++ "[パッケージ] " << "Fedora Project配布のバイナリrpm" << "\n" << + "[ DE/WM ] " << desktop << "\n" << + "[ gtkmm  ] " << get_gtkmm_version() << "\n" << + "[ glibmm  ] " << get_glibmm_version() << "\n" << diff --git a/noautobuild b/noautobuild new file mode 100644 index 0000000..596c815 --- /dev/null +++ b/noautobuild @@ -0,0 +1 @@ +Check svn later diff --git a/sources b/sources index 9728c56..a90187d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (JDim-20260110T2319.tar.gz) = c51355599dddc8794f0c7975a8f4db15879f4a4a99771493469a42927d43f1619b8ef02a70d7e492ea61cbc93c1b00232ec09fe59f5c10c1460dde06c8d84b2c +SHA512 (JDim-20220116T2221.tar.gz) = f2cec0020f4fd21a9fec99e29bf4a1cb56d13bbc2b480c13e08e8861cc8802558b4b714849496f7ef96c9265fcc6df853cb00aab500425abe1392def3c1132eb