Skip to content

Do not package /usr/share/locale#3071

Merged
mvidner merged 4 commits intomasterfrom
locale-packaging-conflict
Jan 26, 2026
Merged

Do not package /usr/share/locale#3071
mvidner merged 4 commits intomasterfrom
locale-packaging-conflict

Conversation

@mvidner
Copy link
Copy Markdown
Contributor

@mvidner mvidner commented Jan 23, 2026

Problem

Factory submission complained:

found conflict of agama-19.pre+1110.2ad621a9f-1.1.x86_64 with filesystem-84.87-22.1.x86_64 /usr/share/locale [mode mismatch: d755 root:root, d555 root:root]

Solution

  1. Omit it from the spec file.

Checked that other packages also do not declare /usr/share/locale directory, leaving it to filesystem.rpm. This comes out empty:

rpm -qlv $(rpm -qf /usr/share/locale/cs/LC_MESSAGES/*) | grep /usr/share/locale$
  1. In fact, follow the Packaging Conventions and use %find_lang, thanks to @DimStar77 for the patch

Testing

Manual build to make sure the RPM does not contain /usr/share/locale

  1. Edit _service to say <param name="revision">locale-packaging-conflict</param>
  2. osc service manualrun
  3. osc build
  4. rpm -qlvp /var/tmp/build-root/openSUSE_Tumbleweed-x86_64/home/abuild/rpmbuild/RPMS/x86_64/agama-19.pre+*.rpm

Screenshots

No

Documentation

  • .changes

Copy link
Copy Markdown
Contributor

@ancorgs ancorgs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mvidner
Copy link
Copy Markdown
Contributor Author

mvidner commented Jan 23, 2026

Well, the build fails with

[ 361s] Verifying packages...
[ 361s] Preparing packages...
[ 361s] agama-common-19.pre+1154.10ebf379b-0.x86_64
[ 361s] agama-cli-19.pre+1154.10ebf379b-0.x86_64
[ 361s] agama-cli-bash-completion-19.pre+1154.10ebf379b-0.noarch
[ 361s] agama-cli-fish-completion-19.pre+1154.10ebf379b-0.noarch
[ 361s] agama-cli-zsh-completion-19.pre+1154.10ebf379b-0.noarch
[ 361s] agama-19.pre+1154.10ebf379b-0.x86_64
[ 361s] agama-scripts-19.pre+1154.10ebf379b-0.x86_64
[ 362s] agama-openapi-19.pre+1154.10ebf379b-0.x86_64
[ 362s] agama-autoinstall-19.pre+1154.10ebf379b-0.x86_64
[ 362s] ... running 50-check-binary-kernel-log
[ 362s] ... running 50-check-core-files
[ 362s] ... running 50-check-debuginfo
[ 362s] ... testing for empty debuginfo packages
[ 362s] ... running 50-check-filelist
[ 362s] ... checking filelist
[ 362s] agama-19.pre+1154.10ebf379b-0.x86_64.rpm: directories not owned by a package:
[ 362s] - /usr/share/locale
[ 362s]
[ 362s] kaonashi failed "build agama.spec" at Fri Jan 23 14:28:37 UTC 2026.

I will get back to this in a couple of hours

@DimStar77
Copy link
Copy Markdown
Contributor

DimStar77 commented Jan 23, 2026

@mvidner Did you run your local build on a clean vm/chroot (e.g osc build --clean) ? If you ran this against an already polluted chroot, then any prior test install of agama.rpm inside the VM (which happens at the end of the build) would have 'unowned' /usr/share/locale from the filesystem package, as the mode did not match (755 vs 555) - reusing this chroot without cleaning it up keeps the wrong permission on /usr/share/locale in place, leading to the directory marked as not being owned by anything

Other than that, I'd suggest going with our default packaging way for locales by applying this patch to the spec file

Index: agama.spec
===================================================================
--- agama.spec  (revision 40d5394d588f3dd17c25132e464405c4)
+++ agama.spec  (working copy)
@@ -194,6 +194,7 @@
   libexecdir=%{_libexecdir} \
   mandir=%{_mandir} \
   %{_builddir}/agama/install.sh
+%find_lang agama
 
 %check
 PATH=$PWD/share/bin:$PATH
@@ -240,15 +241,13 @@
 %postun -n agama-scripts
 %service_del_postun_with_restart agama-scripts.service
 
-%files
+%files -f agama.lang
 %doc README.md
 %license LICENSE
 %{_bindir}/agama-web-server
 %{_pam_vendordir}/agama
 %{_unitdir}/agama-web-server.service
 %dir %{_datadir}/agama/eula
-%dir %{_datadir}/locale
-%{_datadir}/locale/*/LC_MESSAGES/agama.mo
 
 %files -n agama-common
 %dir %{_datadir}/agama/jsonnet

@mvidner
Copy link
Copy Markdown
Contributor Author

mvidner commented Jan 26, 2026

[ 362s] ... running 50-check-filelist
[ 362s] ... checking filelist
[ 362s] agama-19.pre+1154.10ebf379b-0.x86_64.rpm: directories not owned by a package:
[ 362s] - /usr/share/locale

Ah, it was indeed a caching problem, the build succeeded after removing the build tree beforehand.

Thanks for the packaging fix, I should refresh my knowledge of the Packaging Conventions!

%service_del_postun_with_restart agama-scripts.service

%files
%files -f agama.lang
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure how this works.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

%files section, reading from the file agama.lang (-f agama.lang); the file is generated during %install by the %find_lang agama call

Copy link
Copy Markdown
Contributor

@imobachgs imobachgs Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! And what happens with the original section? I mean, the lines below that one.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They stay fully valid.

the agama.lang looks something like (taken from gawk, as that's what I currently have on disk):

> cat gawk.lang 
%defattr (644, root, root, 755)
%lang(bg) /usr/share/locale/bg/LC_MESSAGES/gawk.mo
%lang(ca) /usr/share/locale/ca/LC_MESSAGES/gawk.mo
%lang(da) /usr/share/locale/da/LC_MESSAGES/gawk.mo
%lang(de) /usr/share/locale/de/LC_MESSAGES/gawk.mo
%lang(es) /usr/share/locale/es/LC_MESSAGES/gawk.mo
…

the lines below %files -f agama.lang will be appended after the content of the generated .lang file

(as you can see, the find_lang macro actually goes the more correct way of tagging the translations with the correct/relevant %lang prefix)

mvidner and others added 4 commits January 26, 2026 11:12
Factory submission complained:

> found conflict of agama-19.pre+1110.2ad621a9f-1.1.x86_64 with filesystem-84.87-22.1.x86_64 /usr/share/locale [mode mismatch: d755 root:root, d555 root:root]

Checked that other packages also do not declare /usr/share/locale directory,
leaving it to filesystem.rpm. This comes out empty:

```
rpm -qlv $(rpm -qf /usr/share/locale/cs/LC_MESSAGES/*) | grep /usr/share/locale$
```
@mvidner mvidner force-pushed the locale-packaging-conflict branch from 1eb2ed5 to 022d661 Compare January 26, 2026 10:14
@mvidner mvidner marked this pull request as ready for review January 26, 2026 10:14
@coveralls
Copy link
Copy Markdown

Coverage Status

coverage: 73.997%. remained the same
when pulling 022d661 on locale-packaging-conflict
into e5b3354 on master.

@mvidner mvidner merged commit 4476031 into master Jan 26, 2026
18 checks passed
@mvidner mvidner deleted the locale-packaging-conflict branch January 26, 2026 10:26
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jan 28, 2026
https://build.opensuse.org/request/show/1329457
by user IGonzalezSosa + anag_factory
- Fixed removing automatically selected recommended patterns
  (gh#agama-project/agama#3072)

- Follow suit, do not package /usr/share/locale itself
  (gh#agama-project/agama#3071).

- Copy the SCC credentials and the libzypp services
  (gh#agama-project/agama#3053).

- Use the right architecture when regisrering a system in ppc64le
  (gh#agama-project/agama#3068).

- Consider inst.register_url as part of the "extended configuration"
  (bsc#1256907).
- Try to register the system even if only a registration URL was
  specified (without a code).
- When the registration fails, retry it on the next SetConfig call.

- Allow importing SSL certificates from registration servers
  (gh#agama-project/agama#3055).

- Fix enabling NetworkManager service in the target system
  (gh#agama-project/agam
@imobachgs imobachgs mentioned this pull request Mar 17, 2026
imobachgs added a commit that referenced this pull request Mar 17, 2026
Prepare to release version 19.

* #1829
* #2508
* #2772
* #2818
* #2826
* #2848
* #2860
* #2863
* #2864
* #2866
* #2867
* #2869
* #2870
* #2871
* #2872
* #2873
* #2874
* #2875
* #2876
* #2877
* #2880
* #2881
* #2882
* #2884
* #2885
* #2886
* #2891
* #2892
* #2893
* #2894
* #2895
* #2896
* #2897
* #2898
* #2899
* #2900
* #2901
* #2902
* #2903
* #2904
* #2908
* #2909
* #2910
* #2912
* #2913
* #2914
* #2915
* #2916
* #2917
* #2918
* #2920
* #2921
* #2923
* #2924
* #2926
* #2928
* #2929
* #2930
* #2933
* #2934
* #2935
* #2936
* #2937
* #2938
* #2939
* #2942
* #2943
* #2944
* #2945
* #2946
* #2947
* #2948
* #2949
* #2950
* #2951
* #2952
* #2954
* #2955
* #2956
* #2957
* #2958
* #2959
* #2960
* #2961
* #2963
* #2964
* #2965
* #2967
* #2968
* #2969
* #2970
* #2971
* #2972
* #2974
* #2975
* #2977
* #2978
* #2980
* #2981
* #2982
* #2983
* #2984
* #2988
* #2989
* #2990
* #2991
* #2992
* #2993
* #2994
* #2995
* #2996
* #2997
* #2998
* #2999
* #3000
* #3001
* #3002
* #3004
* #3005
* #3006
* #3007
* #3008
* #3009
* #3011
* #3012
* #3013
* #3014
* #3015
* #3016
* #3018
* #3019
* #3020
* #3021
* #3022
* #3023
* #3024
* #3025
* #3026
* #3027
* #3028
* #3029
* #3030
* #3031
* #3033
* #3034
* #3035
* #3036
* #3037
* #3039
* #3040
* #3041
* #3042
* #3043
* #3044
* #3045
* #3046
* #3047
* #3048
* #3049
* #3050
* #3051
* #3052
* #3053
* #3054
* #3055
* #3056
* #3057
* #3058
* #3060
* #3061
* #3062
* #3063
* #3064
* #3065
* #3066
* #3067
* #3068
* #3069
* #3070
* #3071
* #3072
* #3073
* #3074
* #3075
* #3076
* #3077
* #3078
* #3079
* #3086
* #3087
* #3088
* #3089
* #3090
* #3091
* #3092
* #3093
* #3094
* #3095
* #3096
* #3097
* #3098
* #3099
* #3100
* #3101
* #3102
* #3103
* #3104
* #3105
* #3106
* #3107
* #3108
* #3109
* #3110
* #3112
* #3113
* #3114
* #3115
* #3116
* #3117
* #3118
* #3119
* #3120
* #3122
* #3123
* #3124
* #3127
* #3128
* #3129
* #3130
* #3131
* #3133
* #3134
* #3135
* #3136
* #3137
* #3138
* #3139
* #3140
* #3141
* #3142
* #3143
* #3144
* #3145
* #3146
* #3147
* #3148
* #3149
* #3150
* #3151
* #3152
* #3153
* #3154
* #3155
* #3157
* #3158
* #3159
* #3160
* #3161
* #3162
* #3163
* #3164
* #3165
* #3166
* #3167
* #3168
* #3169
* #3170
* #3174
* #3175
* #3176
* #3177
* #3178
* #3179
* #3181
* #3182
* #3184
* #3185
* #3186
* #3188
* #3189
* #3190
* #3191
* #3192
* #3194
* #3195
* #3196
* #3197
* #3198
* #3199
* #3200
* #3201
* #3202
* #3203
* #3205
* #3206
* #3208
* #3209
* #3210
* #3213
* #3214
* #3215
* #3216
* #3217
* #3218
* #3219
* #3220
* #3222
* #3223
* #3224
* #3225
* #3226
* #3227
* #3228
* #3229
* #3230
* #3231
* #3232
* #3233
* #3234
* #3235
* #3236
* #3237
* #3238
* #3239
* #3240
* #3241
* #3242
* #3243
* #3244
* #3246
* #3247
* #3248
* #3250
* #3251
* #3252
* #3253
* #3254
* #3255
* #3256
* #3257
* #3258
* #3259
* #3260
* #3261
* #3262
* #3263
* #3265
* #3266
* #3267
* #3268
* #3269
* #3270
* #3271
* #3272
* #3273
* #3274
* #3275
* #3276
* #3277
* #3278
* #3279
* #3280
* #3281
* #3282
* #3283
* #3284
* #3285
* #3286
* #3287
* #3288
* #3289
* #3290
* #3291
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants