# Test file for rpmspec.xml # Comments start with a # in column="0": # Some comment # When they don't start in column="0", that they are recognized as comments, but with an alert: # This is a bad comment. # RPM spec says clear that comments must start at the begin of the line. However, in practice # the RPM software is more permissive, depending on the context. But for our syntax highlighting, # we give, while recognizing the as comment, at least a little alert. Comments should not contain # the character % (which is marked as warning), but 2 of them are okay: %%. TODO is higlighted. # A spec file starts with "Normal" context. Here, you can specify values for some tags: Name: kradioripper-unstable # Note that here in no comment possible! Name: name only _one_ word allowed Name: %macro no further syntax check after macro! # Some tags support only _one_ word as value Version: 0.4test5 up-from-the-space-this-is-an-error # Some tag can have parameters: Any char in paranthesis: Summary: Recorder for internet radios (based on Streamripper) Summary(de.UTF-8): Aufnahmeprogramm für Internetradios (basiert auf Streamripper) # requiere free text: License: License 1 2 3 # requiere a well defines value: Requires( / ( = ): Some, value() # new type "switch" accepts: yes, no, 0, 1 AutoReq: yes AutoReq: yes invalid AutoReq: %macro no further syntax check after macro! AutoReq: no AutoReq: 0 AutoReq: 1 # requiere a number: Epoch: 123123 Epoch: 123123 invalid Epoch: %macro no further syntax check afer macro! # If tags are used that are not known, they are not highlighted: Invalidtag: Some value Invalid content in this section (only tags are allowed) # You can use conditions in specs (highlighted with region markers): %if 0%{?mandriva_version} # numbers and strings are distingished: string: %if lsdksfj # number: %if 23472398 # string: %if lksdjfsl72939 # invalid: %if 92437lsdkfjdsl # valid: %if "lsdfj %ksdf(sdfs) 3489" Release: %mkrel 1.2 %else Release: 0 %endif # requiere a well defined value: %ifos fixed_value # You must use these special macros (%%if etc.) always at the start of the line - if not, # that's bad but not an arror. You must also always use the specified form. Everything else is an # error: %if something %if %{if} %if(some options) # However, this are different macros and therefore correct: %ifx %{ifx} %ifx(some options) # the \ is escaped in the line. At the end of the line it escapes the line break: echo This is \" a text \\ and here\ it continues. %define name value %define invalid_näme value %define macroname multi\ line content with references like %0 %* %# %{-f} %{-f*} %1 %2 and so on %global name value %global invalid_näme value %undefine name %undefine name too-many-parameters # shell command %define buildoutputdir %{expand:build/jdk%{featurever}.build%{?1}} %define buildoutputdir() %{expand:build/jdk%{featurever}.build%{?1}} %define save_alternatives() %{expand: # bash comment function foo { LANG=en_US.UTF-8 alternatives --display "$MASTER" } MASTER="%{?1}" rm -f %{_localstatedir}/lib/rpm-state/"$MASTER"_$FAMILY > /dev/null if foo > /dev/null | bar -q ; then zeta 2 > %{_localstatedir}/lib/rpm-state/"$MASTER"_"$FAMILY" fi } # lua command %define save_alternatives() %{lua: -- a lua code local posix = require "posix" if (os.getenv("debug") == "true") then debug = true; print("debug") else debug = false; end } # This special comment is treated and highlighted like a tag: # norootforbuild # It can't have parameters, so every following non-whitespace character is not good: # norootforbuild DONT WRITE ANYTHING HERE! # wrong spacing is also recognized: # norootforbuild # and also an indeet is not fine for norootforbuild: # norootforbuild # This following "Conflicts" tag will be removed by set-version.sh, # if it is a "kradioripper" release (and not a "kradioripper-unstable" release)... Conflicts: kradioripper %description # Here, a new section starts. It contains a value for the RPM field "description" and is therefor # colored like values: A KDE program for ripping internet radios. Based on StreamRipper. # A section start can have parameters: %description -l de.UTF-8 Ein KDE-Aufnahmeprogramm für Internetradios. Basiert auf StreamRipper. # These sections starts are errors: %description not at the first line %{description} wrong form %description(no options allowed, only parameters!) %prep # This starts a section that defines the commands to prepare the build. # q means quit. n sets the directory: %setup -q -n kradioripper echo Test # Macros can have different forms: Valid: %abc %abcÄndOfMacro %abc(def)EndOfMacro %{abc}EndOfMacro %{something but no single %}EndOfMacro %{abc:def}EndOfMacro %(abc) # Invalid: %ÄInvalidChar % %) %} # You can use macros inside of macro calls: Fine: %{something %but no %{sin%(fine)gle} }EndOfMacro # Bad: %{No closing paranthesis (No syntax highlightig for this error available) %build cmake ./ -DCMAKE_INSTALL_PREFIX=%{_prefix} %__make %{?jobs:-j %jobs} %{!?_licensedir:%global license %%doc} %install %if 0%{?suse_version} %makeinstall %suse_update_desktop_file kradioripper %endif %if 0%{?fedora_version} || 0%{?rhel_version} || !0%{?centos_version} make install DESTDIR=%{buildroot} desktop-file-install --delete-original --vendor fedora --dir=%{buildroot}/%{_datadir}/applications/kde4 %{buildroot}/%{_datadir}/applications/kde4/kradioripper.desktop %endif %if 0%{?mandriva_version} %makeinstall_std %endif %clean rm -rf "%{buildroot}" %files %defattr(-,root,root) %if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version} %{_datadir}/applications/kde4/fedora-kradioripper.desktop %else %{_datadir}/applications/kde4/kradioripper.desktop %endif %{_bindir}/kradioripper %{_datadir}/locale/*/LC_MESSAGES/kradioripper.mo %if 0%{?mandriva_version} # TODO The %%doc macro is actually broken for mandriva 2009 in build service... %dir %{_datadir}/apps/kradioripper %{_datadir}/apps/kradioripper/* %else %doc COPYING LICENSE LICENSE.GPL2 LICENSE.GPL3 NEWS WARRANTY %dir %{_datadir}/kde4/apps/kradioripper %{_datadir}/kde4/apps/kradioripper/* %endif # lua section %pretrans headless -p -- a lua code local posix = require "posix" if (os.getenv("debug") == "true") then debug = true; print("debug") else debug = false; end %changelog * Sun May 04 2008 email@email.com - some text - some text in two lines - some text in two lines + with subtext - and more subtext in two lines * Tue Apr 24 2007 Name - text * When the star isn't at column 0, than it doesn't indicate a new date * Wen Sep 08 2003 Wrong weekday * Mon Mai 08 2003 Wrong month * Mon Sep 0 2003 bad day * Mon Sep 8 2003 good day * Mon Sep 08 2003 good day * Mon Sep 32 2003 bad day * Mon Sep 08 03 bad year * Mon Sep 08 2003 Name # When using macros, the error check is disabled: * %myDataMacro Title of the entry - Text - can - be - indeeded - without - problems