# How does a plist work



## l33tname (Oct 10, 2021)

I am trying to update the ruby-gems port to a version which works with ruby 3.0 but I struggle with the plist.

According to check-plist i have extra files in my STAGEDIR


```
===> Checking for items in STAGEDIR missing from pkg-plist
Error: Orphaned: /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/%%SPEC_DIR%%/gems/bundler-2.2.29/exe/bundle
Error: Orphaned: /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/%%SPEC_DIR%%/gems/bundler-2.2.29/exe/bundler
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/%%SPEC_DIR%%/gems/bundler-2.2.29/exe
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/%%SPEC_DIR%%/gems/bundler-2.2.29
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/%%SPEC_DIR%%/gems
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/%%SPEC_DIR%%
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby/gems/%%RUBY_VER%%
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby/gems
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work/stage
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems/work
Error: Orphaned: @dir /wrkdirs/usr/ports/devel/ruby-gems
Error: Orphaned: @dir /wrkdirs/usr/ports/devel
Error: Orphaned: @dir /wrkdirs/usr/ports
Error: Orphaned: @dir /wrkdirs/usr
Error: Orphaned: @dir /wrkdirs
```

But when I check these files do not exist.

```
# ls /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby/gems/3.0/specifications
default
```

And a find shows only one location which would match the pattern (exe/bundle) but if I would remove that it complains that it is in my plist but not in stagedir.



```
# find /wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/ -name bundler
/wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/bin/bundler
/wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby/gems/3.0/gems/bundler-2.2.29/exe/bundler
/wrkdirs/usr/ports/devel/ruby-gems/work/stage/usr/local/lib/ruby/site_ruby/3.0/bundler
```



```
===> Checking for items in pkg-plist which are not in STAGEDIR
Error: Missing: %%GEMS_DIR%%/bundler-2.2.29/exe/bundle
```

To reproduce set `DEFAULT_VERSIONS= ruby=3.0` and use the attached git patch.
I'm completely lost how a plist should be constructed.


----------



## SirDice (Oct 11, 2021)

Please show your port's Makefile. The pkg-plist can also be generated dynamically. That could interfere with what `make makeplist` generates (and why there's a note at the top indicating that you need to edit that file).


----------

